Thema: Delphi Schiffe versenken

Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#28

Re: Schiffe versenken

  Alt 19. Feb 2010, 19:14
Wie währe es so ?:
Delphi-Quellcode:
type
  TMyGameFeld = record
    belegt:Boolean;
    // Vielleicht sind noch weitere Variablen Sinvoll, wenn nicht währe ein Record übertrieben
  end;
  {
    Die 20 X 20 ist die Größe. Sie wird so Berechnet: SpielFeldBreiteInPixel durch Objekt Größe.
    Ich glaube du verwendest TImage oder ? Dann würde das so aussehen:
    Image1.Widht div 20 mit der Annahme das 20 Pixel dein Objekt breit ist. Das Funktioniert genau so mit der Höhe.
  }

  MyGameFeld:array[0..20,0..20] of TMyGameFeld;

// In der MouseDown Methode des TImage würdest du jetzt "nur" noch folgendes schreiben:
mx:=x div 20; my:=y div 20;
// mx und my musst du vorher noch Deklarieren.
jetzt kannst du mit mx und my auf MyGameFeld zugreifen:
MyGameFeld[mx,my].belegt:=True;
Du kannst auch mit Klassen Arbeiten. Wie gesagt: Wenn du nur eine Variable brauchst währe der Record übertrieben. Dann musst du es leicht anpassen: Statt "of TMyGameFeld" würde es dann "of Boolean" heißen.

Zu Empfehlen währe noch eine Init Procedure zu erstellen, dann erlebst du keine bösen Überraschungen:
Delphi-Quellcode:
procedure ...Init;
begin
  for y:=0 to 20 do begin
    for x:=0 to 20 do begin
     GameFeld[x,y].Belegt:=False;
    end;
  end;
end;
Das ist jetzt nur eine Art Pseude-Code. Aber so ähnlich würde ich es machen und es müsste sogar Funktionieren. Ich hoffe das hilft dir weiter. Hier sind komplette Fertige Lösungen nicht gerne gesehen. Darum schreibe ich das so. Ich glaube davon hast du mehr oder ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat