Guten Tag liebe Member des Forums,
ich habe geplant ein „Minesweeper“-Programm in Lazarus (Pascal) zu erstellen. Allerdings sind meine Kenntnisse in Lazarus sehr beschränkt und es scheitert schon bei der Erstellung der Oberfläche des Programms.
Bomben sollen hierbei das Spiel beenden und um eine Zufällig generierte Bombe müssen –wie beim richtigem Spiel- Zahlen erstellt werden, welche die Anzahl der umliegenden Bomben wiederspiegelt. Ich habe sozusagen das Konzept bereit, doch kann es nicht in Lazarus umsetzen.
Meine Vorstellung:
15*15 Feld
20% Bomben
Start Knopf
„Loosing“-Screen
(Anpassung der schwierigkeit)
Ich wäre euch sehr Dankbar, wenn ihr mir –vorallem beim Anfang helfen könntet.
Erstellen eines Minesweeper-Spiels
Re: Erstellen eines Minesweeper-Spiels
Hu... also wenn du nur die Vorstellung hast, ein Spiel zu programmieren und gar keine Idee, wie du das Spielfeld erstellen kannst, wird es irgendwie hart werden.
Hört sich irgendwie nach Ausbildungsaufgbe an
So würde ich es angehen:
Struktur für das Spielfeld erstellen.
Es gibt Eigenschaften für das Spielfeld als Ganzes und Eigenschaften der einzelnen Felder, die alle gleich sind.
Also zuerst die Eigenschaften eines Feldes:
Dann benötigst du das Spielfeld;
Dann erzeugst du eine Variable für das Spielfeld
Nach dem Start legst du z.B. im OnCreate der Form ein paar Variablen fest mit der Größe der Felder usw.
Dies kannst du auch aus der Form Size berechnen.
Jetzt kannst du mit den Vorgaben das Spielfeld erzeugen...
...obiges ist Freihand gepinselt und soll als Anstoß dienen 
Hört sich irgendwie nach Ausbildungsaufgbe an

So würde ich es angehen:
Struktur für das Spielfeld erstellen.
Es gibt Eigenschaften für das Spielfeld als Ganzes und Eigenschaften der einzelnen Felder, die alle gleich sind.
Also zuerst die Eigenschaften eines Feldes:
Code: Alles auswählen
Type TFeld = Record
Panel:TPanel;
Picture:TImage;
Caption:TLabel;
end;
Code: Alles auswählen
Type TSpielFeld = Record
Fields:array of array of TFeld;
SizeFields:integer; // width and height
space:integer; // Abstand der Felder zueinander
CountX:integer;
CountY:integer;
end;
Code: Alles auswählen
.....
private
Spielfeld:TSpielFeld ;
public
end;
Dies kannst du auch aus der Form Size berechnen.
Jetzt kannst du mit den Vorgaben das Spielfeld erzeugen...
Code: Alles auswählen
Spielfeld.SizeFields:=60;
Spielfeld.Space:=2;
Spielfeld.CountX:=15;
Spielfeld.CountY:=15;
setlength(Spielfeld.Fields, Spielfeld.CountY);
for y := 0 to Spielfeld.CountY-1 do
begin
setlength(Spielfeld.Fields[y], Spielfeld.CountX);
for x := 0 to Spielfeld.CountX-1 do
begin
Spielfeld.Fields[y][x].Panel:=TPanel.create(nil);
Spielfeld.Fields[y][x].Panel.Parent:=Form1;
Spielfeld.Fields[y][x].width:=Spielfeld.SizeFields;
Spielfeld.Fields[y][x].height:=Spielfeld.SizeFields;
...usw.
end;
end;

Gruß, Michael
- Winni
- Beiträge: 628
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.06, fpc 3.04
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Erstellen eines Minesweeper-Spiels
Hi!
Was Six1 anbietet ist ja die "Turbo-Pascal-Schule für Fortgeschrittene". Oder so.
Ich werf mal in die Runde:
Ein DrawGrid nehmen, das erspart viel Arbeit.
Allerdings ist der Code von Six1 eine gute Anfängerschulung.
Kommt drauf an, was der Fragende so kann.
Winni
Was Six1 anbietet ist ja die "Turbo-Pascal-Schule für Fortgeschrittene". Oder so.
Ich werf mal in die Runde:
Ein DrawGrid nehmen, das erspart viel Arbeit.
Allerdings ist der Code von Six1 eine gute Anfängerschulung.
Kommt drauf an, was der Fragende so kann.
Winni
Re: Erstellen eines Minesweeper-Spiels

Es sind nur260 Zeilen Code bis end.
Zeig mal ein bisschen von dem, was du bis jetzt hast...
Gruß, Michael