Thema: Delphi Schiffe versenken

Einzelnen Beitrag anzeigen

Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#21

Re: Schiffe versenken

  Alt 19. Feb 2010, 11:23
Warum versuchst du nicht das, was mimi in Post #16 vorgeschlagen hat? Speichere die einzelnen Felder einfach in einem 2-dimensionalen Array. Ausschauen könnte das z.B. so:

Delphi-Quellcode:
TFeld = (feWasser, feSchiff);
{..........}
   private
      Felder : array[1..10] of array[1..10] of TFeld;
So kannst du dann ganz einfach auf jedes beliebige Feld zugreifen und äußerst einfach bestimmen, welchen Zustand ein bestimmtes Feld hat. Jeden Pixel eines Images auszulesen ist dagegen sehr umständlich.

Delphi-Quellcode:
if Felder[2,4] = feWasser then
  //...
In deiner Zeichenroutine gehts du dann eben alle Felder mit Hilfe einer verschachtelten Schleife durch und malst jeweils ein Rechteck in der entsprechednen Farbe, etwa so:

Delphi-Quellcode:
var x,y : integer;
var r : TRect;
const GroesseEinesFeldes = 24;
begin
//--
for x := 1 to 10 do
begin
   for y := 1 to 10 do
   begin
      r.Left := (x-1)*GroesseEinesFeldes;
      r.Top := (y-1)*GroesseEinesFeldes;
      r.Right := x*GroesseEinesFeldes;
      r.Bottom := y*GroesseEinesFeldes;
      //
      case Felder[x,y] of
      fWasser : PaintBox.Canvas.Brush.Color := clBlue;
      fSchiff : PaintBox.Canvas.Brush.Color := clSilver;
      end;
      //
      PaintBox.Canvas.FillRect(r);
   end;
end;
(So ungefähr, hab den Quelltext nur innerhalb des Antwort-Editors der Delphipraxis geschrieben und nicht überprüft, können also noch Fehler drin sein. Aber vielleicht reicht das ja schonmal als Denkanstoß ).

mfg
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat