Thema: Delphi Schiffe versenken

Einzelnen Beitrag anzeigen

KB-Selbst

Registriert seit: 3. Okt 2005
Ort: Haßfurt
4 Beiträge
 
Delphi 7 Professional
 
#25

Re: Schiffe versenken

  Alt 19. Feb 2010, 13:16
Wenn, dann so:

Delphi-Quellcode:
const c_Err1 = 'Die Schiffe dürfen sich nicht überlagern bzw. nebeneinander sein.';

      x_hilf:=X div 25; y_hilf:=Y div 25; // Das mit den vielen Befehlen in einer Zeile stört mich jetzt weniger.
      xs:=x_hilf*25; ys:=y_hilf*25;

        if (xs+laenge>250) or (if ys+hoehe>250)
        then
          showmessage('Das Schiff muss sich komplett innerhalb des Feldes befinden.')

        else
        for h:=0 to laenge do
        begin
          if (img_mensch.Canvas.Pixels[xs+h,ys -12]=clgreen) or
             (img_mensch.Canvas.Pixels[xs+h,ys+hoehe+12]=clgreen)
          then
            showmessage(c_Err1)
          else
            for i:=0 to hoehe do
            begin
              if (img_mensch.Canvas.Pixels[xs -12,ys+hoehe]=clgreen) or
                 (img_mensch.Canvas.Pixels[xs+laenge+12,ys+hoehe]=clgreen)
              then
                showmessage(c_Err1)
              else
                if (img_mensch.Canvas.Pixels[xs- 12,ys -12]=clgreen) or
                   (img_mensch.Canvas.Pixels[xs+laenge+12,ys -12]=clgreen) or
                   (img_mensch.Canvas.Pixels[xs+laenge+12,ys+hoehe+12]=clgreen) or
                   (img_mensch.Canvas.Pixels[xs- 12,ys+hoehe+12]=clgreen)
                then
                  showmessage(c_Err1)
                else
.
.
.
            end;
        end;
Du kannst natürlich so formatieren wie du willst. Wenn du's aber so machst, wie ich oben angegeben, siehst du gleich, welche FOR-Schleife wo endet.

Auch das Nicht-Verwenden von Begin/End hat, ganz besonders in deinem Falle (mehrere Verschachtelungen) einen erheblichen Nachteil: Den ; an der falschen Stelle gesetzt und die For-Schleife ist beendet, wo sie gar nicht beendet werden soll. Dumm nur, dass die Falschpositionierung des Strichpunktes nur sehr schwer zu finden ist.
  Mit Zitat antworten Zitat