Mein Programm steht jetzt mittlerweile fast, jedoch habe ich zwei Probleme an denen ich fast verzweifel, zum einen sieht das Programm nach der zweiten Abfrage jedes Zeichen als gültig und deckt sofort auf ohne überhaupt die dritte Abfrage auszuführen, zum anderen markiert das Programm das ausgewählte Feld nicht mit einer Bombe sobald ich auf b drücke, sondern deckt sofort auf. Ich wäre echt über jede Hilfe dankbar.
Lies dir deine Aufgabenstellung noch einmal genau durch:
Das Spiel endet, wenn alle Zellen außer denen mit Bomben aufgedeckt wurden, wenn der Spieler eine Bombe "aufgedeckt" hat,
wenn er eine Zelle fälschlicherweise als Bombe markiert hat oder wenn bei einer der Eingaben mit x/X das Spiel abgebrochen wurde.
Einen dritten Zustand "nicht aufgedeckt aber mit Bombe markiert" kannst du in deiner Datenstruktur nicht abbilden.
Dafür müsste z.B. visible[x, y] drei Zustände annehmen können (also nicht nur True oder False).
Diese Regel in der Aufgabenstellung vereinfacht ein wenig das Programm.
Deshalb auch bei der Ausgabe:
Delphi-Quellcode:
if not visible[x, y] then
begin
{...zugedeckte Felder darstellen...}
end
else
begin
{...aufgedeckte Felder darstellen...}
if field[x, y] = Bombe then
begin
s := 'ð';
SetColor({...});
end
else {...usw...}