Erweiterte Spiele
In dieser Lektion erhalten Sie
Informationen über:
Erstellen erweiterter Spiele mittels
einfacher Elemente, Objekte und anderer
erweiterter Konzepte von Small Basic.
Erweiterte Spiele in Small Basic
Herzlichen Glückwunsch! Sie sind nun mit den Programmiergrundlagen
und erweiterten Konzepten von Small Basic vertraut.
Sie haben gelernt, wie Sie einfache
Programmierkonzepte in Small Basic
verwenden. Sie erhielten außerdem
eine Einführung in Small Basic-Objekte
und erweiterte Konzepte.
Betrachten wir nun, wie wir diese Konzepte
für das Erstellen erweiterter Spiele
verwenden können.
Tic-Tac-Toe – Das Spiel
Wahrscheinlich kennen Sie das beliebte Tic-Tac-Toe-Spiel. Betrachten wir,
wie wir unsere eigene Version des Spiels erstellen können.
Der Benutzer und der Computer
versuchen beide, das Spiel zu
gewinnen, indem sie X- und O-Zeichen
in einer horizontalen, vertikalen oder
diagonalen Linie anordnen, bevor dies
dem anderen Spieler gelingt.
Beachten Sie, wie Sie das Shapes-Objekt für das Zeichnen verschiedener
Spielelemente verwenden. Mittels Mausereignissen ermöglichen Sie dem
Spieler das Platzieren der X-Zeichen im Grafikfenster.
Tic-Tac-Toe – So funktioniert das Spiel
Wie spielen Sie also dieses Spiel?
Schritte für das Spielen des Spiels
Dieses Spiel wird von zwei Spielern
gespielt: dem Benutzer und dem
Computer. Jeder Spieler platziert
abwechselnd ein X- oder ein
O-Zeichen im 3x3-Spielfeld. Um
das Spiel zu starten, platziert der
Benutzer ein X auf dem Spielfeld.
Die Spieler platzieren abwechselnd
X- oder O-Zeichen im Spielfeld.
Der Spieler, der als erster drei
X- oder O-Zeichen in einer
horizontalen, vertikalen oder
diagonalen Linie platziert,
gewinnt das Spiel.
Tic-Tac-Toe – Der Code
Betrachten wir den Code für das Spiel nun im Detail…
Sie erstellen die Spieloberfläche
mittels des GraphicsWindow-Objekts.
Sie verwenden das Shapes-Objekt, um
das Spielfeld für die X- und O-Zeichen
im Grafikfenster zu erstellen.
Sie verwenden Mausereignisse
und –bedingungen wie If-Else, um die
einzelnen Aktionen zu
beschreiben, die der Benutzer und der
Spieler während des Spiels
durchführen.
Fassen wir zusammen…
Herzlichen Glückwunsch! Sie haben
Folgendes gelernt:
Erweiterte Spiele mittels einfacher
Elemente, Objekte und anderer erweiterter
Konzepte von Small Basic erstellen.
Zeigen Sie, was Sie wissen
Erstellen Sie ein Spiel, das die folgenden Objekte enthält: eine Wand aus
farbigen und grauen Blöcken und ein Paddel. Die Wand bewegt sich langsam
auf das Paddel zu. Sie müssen mittels des Paddels alle farbigen Bereiche mit
dem Ball treffen, bevor die Wand das Paddel berührt.
Sie verwenden die Maus, um das Paddel
zu bewegen. Das Paddel steuert die
Bewegungen des Balls. Der Ball prallt von
grauen Bereichen ab. Wenn Sie alle farbigen
Bereiche getroffen haben, haben Sie das
Spiel gewonnen. Sie verlieren das Spiel, wenn
das Paddel den Ball nicht trifft oder wenn die
Bereiche das Paddel treffen, bevor Sie alle
farbigen Bereiche entfernen können.
Notes de l'éditeur
Lösung:' Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.GraphicsWindow.Hide()GraphicsWindow.Height = 450GraphicsWindow.Width = 600GraphicsWindow.Top = ( Desktop.Height - 450 ) / 2GraphicsWindow.Left = ( Desktop.Width - 600 ) / 2GraphicsWindow.CanResize = "False"GraphicsWindow.Show()paddleImage = Program.Directory + "\rectangle.png"ballImage = Program.Directory + "\circle.png"Left = 42bStartY = 35CreatUI()hitCount = 0GraphicsWindow.MouseMove = MouseActionFor index = 0 To 15Array.SetValue("PinkBricks", Index, 1)Array.SetValue("VioletBricks", Index, 1)Array.SetValue("AquaBricks", Index, 1)EndforInitBricks()score = 0ShowScore()gw = GraphicsWindow.Widthgh = GraphicsWindow.Heighty = gh - 28Shapes.Move(ball, x, y)dX= 1dY =-2Loop:x = x + dXy = y + dYIf x >= gw - 16 Or x <= 0 ThendX= -dXEndIfIf y <= 0 ThendY = -dYEndIfpadX = Shapes.GetLeft(paddle)If y >= gh - 28 + 2 And x >= padX And x <= padX + 70 Then y = gh - 28 + 2 hitCount = hitCount + 1If Math.Remainder(hitCount, 3) = 0 ThenFor Index = 0 To 15HidePinkBrick()HideVioletBrick()HideAquaBrick()EndforbStartY = bStartY + 20InitBricks()EndIfTestAqua:For Index = 0 To 15If Array.GetValue("AquaBricks", Index) = 1 ThenIf bStartY > gh - 160 ThenGotoEndGameEndIfEndIfEndForTestViolet:For Index = 0 To 15If Array.GetValue("VioletBricks", Index) = 1 ThenIf bStartY > gh - 100 ThenGotoEndGameEndIfEndIfEndForTestPink:For Index = 0 To 15If Array.GetValue("PinkBricks", Index) = 1 ThenIf bStartY > gh - 40 ThenGotoEndGameEndIfEndIfEndForEndTest:dX= dX- 2 + (x - padX) / 30 If score = oldScore ThenIf score <> 0 Then score = score - 1EndIfEndIfoldScore = scoreShowScore()dY = -dYEndIfShapes.Move(ball, x, y) Program.Delay(5)If y > bStartY - 16 And y < bStartY + 20 Then Index = (x+8) / 40 Index = Math.Floor(Index)If Array.GetValue("PinkBricks", Index) = 1 ThenIf Index=8 ThenElseArray.SetValue("PinkBricks", Index, 0)HidePinkBrick() Left = Left - 1 score = score + 15ShowScore()EndIfdY = -dYgameFinish() EndIfEndIfIf y > bStartY + 44 And y < bStartY + 80 Then Index = (x+8) / 40 Index = Math.Floor(Index) If Array.GetValue("VioletBricks", Index) = 1 ThenIf Index=4 Or Index=11 ThenElseArray.SetValue("VioletBricks", Index, 0)HideVioletBrick() Left = Left - 1 score = score + 10ShowScore()EndIfdY = -dYgameFinish() EndIfEndIfIf y > bStartY + 104 And y < bStartY + 140 Then Index = (x+8) / 40 Index = Math.Floor(Index) If Array.GetValue("AquaBricks", Index) = 1 ThenIf Index = 2 Or Index = 7 Or Index = 13 ThenElseArray.SetValue("AquaBricks", Index, 0)HideAquaBrick() score = score + 5ShowScore() Left = Left - 1EndIfdY = -dYgameFinish()EndIfEndIfIf y < gh ThenGoto LoopEndIfEndGame:GraphicsWindow.ShowMessage("Ihr Punktestand ist: " + score, "Das Spiel ist beendet.")Program.End()Sub CreatUIGraphicsWindow.Title = "Paddelspiel"GraphicsWindow.FontSize = 14 paddle = Shapes.AddImage(paddleimage) ball = Shapes.AddImage(ballimage)EndSubSub MouseActionpaddleX = GraphicsWindow.MouseXShapes.Move(paddle, paddleX - 10, GraphicsWindow.Height - 14)EndSubSub ShowScoreGraphicsWindow.BrushColor = "White"GraphicsWindow.FillRectangle(520, 10, 200, 20)GraphicsWindow.BrushColor = "Black"GraphicsWindow.DrawText(500, 10, "Punktestand: " + score)EndSubSub InitBricksFor Index = 0 To 15If Index=8 ThenGraphicsWindow.PenColor = "Black"GraphicsWindow.BrushColor = "Gray"ElseIf Array.GetValue("PinkBricks", Index) = 1 ThenGraphicsWindow.PenColor = "Black"GraphicsWindow.BrushColor = "Pink"ElseGraphicsWindow.PenColor = "White"GraphicsWindow.BrushColor = "White"EndIfEndIfGraphicsWindow.FillRectangle(Index * 40, bStartY, 40, 20)GraphicsWindow.DrawRectangle(Index * 40, bStartY, 40, 20)GraphicsWindow.BrushColor = "Violet"If Index=4 Or Index=11 ThenGraphicsWindow.PenColor = "Black"GraphicsWindow.BrushColor = "Gray"ElseIf Array.GetValue("VioletBricks", Index) = 1 ThenGraphicsWindow.PenColor = "Black"GraphicsWindow.BrushColor = "Violet"ElseGraphicsWindow.PenColor = "White"GraphicsWindow.BrushColor = "White"EndIfEndIfGraphicsWindow.FillRectangle(Index * 40, bStartY + 60, 40, 20)GraphicsWindow.DrawRectangle(Index * 40, bStartY + 60, 40, 20)GraphicsWindow.BrushColor = "Aqua"If Index = 2 Or Index = 7 Or Index = 13 ThenGraphicsWindow.PenColor = "Black"GraphicsWindow.BrushColor = "Gray"ElseIf Array.GetValue("AquaBricks", Index) = 1 ThenGraphicsWindow.PenColor = "Black"GraphicsWindow.BrushColor = "Aqua"ElseGraphicsWindow.PenColor = "White"GraphicsWindow.BrushColor = "White"EndIfEndIfGraphicsWindow.FillRectangle(Index * 40, bStartY + 120, 40, 20)GraphicsWindow.DrawRectangle(Index * 40, bStartY + 120, 40, 20)EndForEndSubSub HidePinkBrickGraphicsWindow.PenColor = "White"GraphicsWindow.BrushColor = "White"GraphicsWindow.FillRectangle(Index * 40, bStartY, 40, 20)GraphicsWindow.DrawRectangle(Index * 40, bStartY, 40, 20)EndSubSub HideVioletBrickGraphicsWindow.PenColor = "White"GraphicsWindow.BrushColor = "White"GraphicsWindow.FillRectangle(Index * 40, bStartY + 60, 40, 20)GraphicsWindow.DrawRectangle(Index * 40, bStartY + 60, 40, 20)EndSubSub HideAquaBrickGraphicsWindow.PenColor = "White"GraphicsWindow.BrushColor = "White"GraphicsWindow.FillRectangle(Index * 40, bStartY + 120, 40, 20)GraphicsWindow.DrawRectangle(Index * 40, bStartY + 120, 40, 20)EndSubSub gameFinishIf Left = 0 Then GraphicsWindow.ShowMessage("Gut gemacht! Ihr Punktestand ist: " + score, "Das Spiel ist beendet.")Program.End() EndIfEndSub