S
fubar schrieb:
Erstelle doch ein 10x10 bool(/boolean)-Feld und setze, wenn das erste Schiff plaziert wurde, die betreffenden Werte auf true. Beim nächsten Schiff fragst du dann halt ab, ob nicht eines von den Feldern, auf das es gesetzt werden soll, schon belegt ist usw. (dafür reicht eine einfache for-Schleife!)
bin zwar delphianer und weiß nicht, was es in C++ so gibt, aber ich würde lieber ein Byte-Array nehmen, dann kann man nämlich gleich wunderschön mit abfragen (lassen), ob z.b. ein bestimmtes schiff versenkt wurde...
außerdem kann man sich dann leicht eine recht simple-zeichenmethode basteln...
wenn du es dann ganz schön (und kompakt) machen willst, nimmst ein array von einem record, dass aus einem byte- (oder einem selbst-definierten ordinal-) und einem bool-wert besteht. dann steht an der position im array:
A) zu welchem schiff die position gehört
ob die stelle schon gestroffen wurde
mal sehen...
type
TFieldType = (ftEmpty, ftSizeTwo, ftSizeThree, ftSizeFour, ftSizeFive);
TFieldRecord = record
FieldHit : Boolean;
FieldType : TFieldType;
end;
TFieldArray = array[1..10] of array[1..10] of TFieldRecord;
was man noch beachten muss, ist:
wenn man jetzt einen Wert aus dem Array lesen will, muss man erst den Y- und dann den X-wert angeben....
procedure DoSomething(var AFieldArray : TFieldArray; AXPosition : Byte; AYPosition : Byte);
begin
AFieldArray[AYPosition][AXPosition].FieldHit := true;
end;
wfg,
ShiKai