![]() |
AW: Das Problem mit dem letzten Spielstein
Das Grundprinzip aller einfachen 2D-Spiele sieht so aus:
Es gibt ein zweidimensionales Feld ("Spielfeld") mit Statuswerten. Diese Statuswerte werden am Bildschirm angezeigt; das nennt man Visualisierung. Wenn sich etwas ändern soll, wird immer das Spielfeld geändert und dann einfach das gesamte Spielfeld neu visualisiert. Es gibt niemals den Fall, dass man direkt an der Anzeige etwas ändert; das Spielfeld bleibt immer die Grundlage für das ganze Spiel. Für die Statuswerte gibt es verschiedene Möglichkeiten. Man kann einen Integer nehmen und den verschiedenen Werten ein Bildchen oder eine Figur zuordnen. Beim 3-Gewinnt Spiel ( ![]() Man kann auch den Typ Char als Statuswert verwenden. Für den Programmierer hat das den Vorteil besonders anschaulich zu sein. z.B. ' '=leeres Feld, 'X'=Spieler A, 'O'=Spieler B Ich würde empfehlen das Spielfeld so zu deklarieren:
Delphi-Quellcode:
Um das Spielfeld anzuzeigen würde ich ein TDrawGrid (auf Palettenseite Zusätzlich) verwenden.
type
TSpielfeld = array[1..3, 1..3] of Char; var spielfeld : TSpielfeld; Kochrezept für das Spiel Tic-Tac-Toe 1.) Spielfeld definieren 2.) einfache Visualisierungsfunktion erstellen für den Anfang kann man das Spielfeld auch in einem Textfeld ausgeben 3.) Eingabemöglichkeit für einen Zug schaffen (z.B. Spieler gibt x- und y-Koordinate ein) 4.) Funktion bauen, die prüft ob ein Zug gültig ist 5.) Funktion bauen, die prüft ob ein Spieler schon gewonnen hat (falls ja, welcher?) 6.) Funktion bauen, die prüft ob das Spielfeld komplett voll ist (unentschieden) 7.) Visualisierung verbessern und Zugeingabe per Mausklick ermöglichen damit kann die primive Eingabe von Punkt 3.) wieder entfernt werden |
AW: Das Problem mit dem letzten Spielstein
Hier ein kleines Beispiel wie man so ein Spiel angehen kann:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz