Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Schiffe Versenken - Probleme beim Setzen der Schiffe (https://www.delphipraxis.net/64819-schiffe-versenken-probleme-beim-setzen-der-schiffe.html)

davguuul 8. Mär 2006 15:51


Schiffe Versenken - Probleme beim Setzen der Schiffe
 
Hey,
in der Schule arbeiten wir gerade an einem Projekt, wobei ich Schiffe versenken programmiere. im großen und ganzen funktioniert das programm auch schon, nur noch ein fehler stört mich sehr.

wenn man seine schiffe setzt, klickt man auf das feld (string grid), aber auf dem feld soll natürlich nicht schon ein schiff sein und auch nicht auf den feldern drum herum (damit die nicht alle auf einem haufen sind). das funktioniert soweit ja auch, nur das problem ist (abgesehen vobn der länge meiner möglichkeit *g*), dass man in der ganz linken und ganz rechten spalte keine schiffe setzen kann.
hab schon vieles rumprobiert, funktioniert aber nur, wenn ich alles wieder rausnehme (man die schiffe also überall hinsetzen kann).


Code:
  if radiobutton1.checked then
  begin
    if s4>0 then
    begin
      if StringGrid1.Cells[schuX-1,schuY+1]='' then
      begin
        if StringGrid1.Cells[schuX-1,schuY]='' then
        begin
          if StringGrid1.Cells[schuX-1,schuY-1]='' then
          begin
            if StringGrid1.Cells[schuX,schuY+1]='' then
            begin
              if StringGrid1.Cells[schuX,schuY]='' then
              begin
                if StringGrid1.Cells[schuX,schuY-1]='' then
                begin
                  if StringGrid1.Cells[schuX+1,schuY+1]='' then
                  begin
                    if StringGrid1.Cells[schuX+1,schuY]='' then
                    begin
                      if StringGrid1.Cells[schuX+1,schuY-1]='' then
                      begin
                        StringGrid1.Cells[schuX,schuY]:=' X';
                        s4:=s4-1;
                        zahl:=zahl-1;
                        label5.caption:=inttostr(zahl);
                        label21.caption:=inttostr(s4);
                      end;
                    end;
                  end;
                end;
              end;
            end;
          end;
        end;
      end;
    end;
  end;

wäre echt toll, wenn irgendwer von euch da ne idee hätte!

pacman1986 8. Mär 2006 16:10

Re: Schiffe Versenken - Probleme beim Setzen der Schiffe
 
indem du eine abfrage machst ob es an den seiten ist wenn es an den seiten ist soll halt nicht überprüft werden was drüber geht

markusj 8. Mär 2006 16:22

Re: Schiffe Versenken - Probleme beim Setzen der Schiffe
 
*hust*, findest du nicht, dass das ganze etwas ... unelegant ist?
Wäre es nicht sinnvoller, um jedes Feld einzeln eine Abfrage durchzuführen, ob dort schon ein Schiff sitzt? (*schlechte beschreibung*)
Das ganze in eine Funktion verpacken und diese mit den Koordinaten aufrufen ...
Nochmal: diese Funktion soll prüfen, ob über, unter oder rechts/links von dem übergebenen Punkt bereits ein Schiff sitzt. Der Rückgabewert ist dann entweder true oder false (boolean).
Dort lässt sich dann auch einfach einrichten, dass ganz oben, unten oder links/rechts eine Spalte/Zeile nicht überprüft wird, weil das vermutlich an deinen Probs schuld ist.
Oder du machst deinen String-Grid eins größer und versteckst die Ränder oben, unten, rechts und links, indem du das Grid so verschiebst, dass diese nur mittels einer Scrollbar zu erreichen wären, die du natürlich deaktivierst.

mfG

Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz