Erstellen eines Minesweeper-Spiels

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
RBen
Beiträge: 1
Registriert: Do 4. Mär 2021, 14:04

Erstellen eines Minesweeper-Spiels

Beitrag von RBen »

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.

Benutzeravatar
six1
Beiträge: 342
Registriert: Do 1. Jul 2010, 19:01

Re: Erstellen eines Minesweeper-Spiels

Beitrag von six1 »

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 8)

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;
Dann benötigst du das Spielfeld;

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;
Dann erzeugst du eine Variable für das Spielfeld

Code: Alles auswählen

.....
private
  Spielfeld:TSpielFeld ;
public

end;
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...

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; 
...obiges ist Freihand gepinselt und soll als Anstoß dienen :mrgreen:
Gruß, Michael

Benutzeravatar
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

Beitrag von Winni »

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

Benutzeravatar
six1
Beiträge: 342
Registriert: Do 1. Jul 2010, 19:01

Re: Erstellen eines Minesweeper-Spiels

Beitrag von six1 »

:lol: also ich bin fertig Ben, wie siehts aus?
Es sind nur260 Zeilen Code bis end.

Zeig mal ein bisschen von dem, was du bis jetzt hast...
Gruß, Michael

Antworten