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