Einzelnen Beitrag anzeigen

Benutzerbild von patti
patti

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

Re: Schiffe zufällig setzen!

  Alt 27. Nov 2009, 15:19
Hab das auch schonmal vor einigen Jahren gemacht, den Source hab ich jetzt leider nicht bei der Hand, sonst hätte ich ihn dir gegeben. Aber wie wäre folgendes?

Code:
1. Zufälliges Feld auswählen (--> "AusgangsFeld")
2. Richtung bestimmen (horizontal oder vertikal --> "Richtung")
3. Erstmal schauen, ob das Schiff überhaupt auf dem Spielfeld liegt:
Delphi-Quellcode:
case Richtung of
0 : // nach rechts
    Passt := AusgangsFeld.x + Groesse -1 <= 10;
1 : // nach unten
    Passt := AusgangsFeld.y + Groesse -1 <= 10;
end;
Code:
4. Wenn das Schiff auf dem Spielfeld liegt, dann überprüfen, ob es nirgends "aneckt"
Delphi-Quellcode:
var x1,x2,y1,y2 : integer;
//...
if Passt then
begin
x1 := Max(AusgangsFeld.x-1,1); // aus der Unit Math
x2 := Min(Ausgangsfeld.x+Groesse-1,10);
y1 := Max(AusgangsFeld.y-1,1);
y2 := Min(Ausgangsfeld.y+Groesse-1,10);
//
repeat
   repeat
      Passt := not(Felder[x2,y2]) // je nachdem wie du deine Felder halt speicherst
      //
      dec(y2);
   until (y2 < y1) or not(Passt);
   //
   dec(x2);
until (x2 < x1) or not(Passt);
end;
Das ganze machst du für jedes Schiff sooft, bis du ein "Passt" hast.
Hoffe, ich hab keine allzu großen Fehler gemacht

Patti

Edit: Hab gesehen, dass dein Felder-Array von 1 bis 10 und nicht von 0 bis 9 geht. Hab mal den Code von mir etwas angepasst...
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat