Thema: Delphi Schiffe versenken

Einzelnen Beitrag anzeigen

Netschge

Registriert seit: 22. Jan 2006
Ort: Luzärn
2 Beiträge
 
#1

Schiffe versenken

  Alt 22. Jan 2006, 12:11
Hallo,

Ich bin gerade an der Semester-Abschlussarbeit dran und habe mir zum Ziel gesetzt das Spiel Schiffe versenken zu Programmeren.Habe 2 Formulare kreirt und folgende Probleme habe ich derzeit:

1.wenn ich das 2 formular öffne mit form2.showmodal sollte eine meldung kommen mit showmessage(bitte setzen sie x schiffe ein) aber erst wenn die 2 form öffnet und nicht bei der ersten schon...grrr...

2.wie zum teufel erschtelle ich ein 2-dymensianales array mit zugiff auf den in der Lstbox deklarierten wert die ich vorgegeben habe??? habe es mit Items und allem erdenklichem probiert aber hier fehlen mir weitere Ideen....das heisst ich will den 2ten wert im array variabel gestallten und somit das spielfeld => array[1..15,1..15] of TShape; die 15 sollte vo 5 bis 15 variabel gestaltet werden mit dem wert aus listbox in formular 1.... grrr...

3. ebenso sollte die anzahl der schiffe variabel sein, aber das sollte sich erübrigen wenn ich problem 2 beseitigt habe...

4. Meine Grundidee um das Spiel u programmieren: Ich will die variablen tshapes markieren ( aber wie???) und danach mit if then anweisung überprüfen ob das feld leer ist und mit randomize ein schiff setzen für den cpu ( aber wie mache ich das dait es für den spieler nicht sichtbar ist??) mit einer while schleife x schiffe setzen aus problem3... Für mich mus ich die schiffe selbe setzen können ( logisch, oder... ) sollte kein problem sein... danach nach jedem schuss auf treffer und gewinn überprüfen und das wars dann auchschon mit meiner idee.... Frage: Ist dies Grundsätzlich verkehrt was ich überlegt hbe oder kann man auf dem aufbauen????

Habe ich schon erwähnt das ich blutiger anfänger bin ??? Ich glaube die aussage erübrigt sich.... ich wäre jedem tipp sehr dankbar und ich hoffe ihr könnt mir helfen... dankbarkeit in worte zu verfassen ist schwierig, aber ich schätze eure mühen wirklich und währe euch wirklich sehr dankbar... Anm: habe bisher 19 h an diesem projekt verbracht...

Gruss

Nedim

Auszug aus meinem Quelltext:


Form1:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
showmessage ( ' bitte setzen Sie Ihre Schiffe auf ihrem Spielfeld ein ') ;
form2.ShowModal; // wenn man sie umkehrt passier auch nicht das gewünschte....
Form2:
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
    begin
        
       Schlachtfeld1_Erstellen;
        Schlachtfeld2_Erstellen;
    end;

procedure Schlachtfeld1_Erstellen;
   var i,j : integer;
   begin
          for i:=1 to 15 do
            for j:=1 to 15 do
              begin
              Feld[i,j]          := TShape.Create(form2);
              Feld[i,j].parent          := form2;
              Feld[i,j].Left         := 10 + (i-1)*20;
              Feld[i,j].Width         :=   20;
              Feld[i,j].Top         :=   60 + (j-1)*20;
              Feld[i,j].Height         :=   20;
             // Feld[i,j].OnMouseDown   := form2.FeldMouseDown;
              if odd(i+j) then Feld[i,j].Brush.Color := clblue
                          else Feld[i,j].Brush.Color := clblue;
              Punkt[i,j]           := TShape.create(form2);
              Punkt[i,j].parent       := form2;
              Punkt[i,j].Left           := 20 + (i-1)*20;
              Punkt[i,j].Width       := 20;
              Punkt[i,j].Top           := 20 + (j-1)*20;
              Punkt[i,j].Height       := 20;
              Punkt[i,j].Shape       := stCircle;
              Punkt[i,j].Visible       := false;
              end;
   end;




procedure Schlachtfeld2_Erstellen;
   var i,j : integer;
   begin
           for i:=1 to 15 do
              for j:=1 to 15 do
                begin
                Feld[i,j]                := TShape.Create(form2);
                Feld[i,j].parent          := form2;
                Feld[i,j].Left            := 410 + (i-1)*20;
                Feld[i,j].Width         :=   20;
                Feld[i,j].Top            :=   60 + (j-1)*20;
                Feld[i,j].Height         :=   20;
                //   Feld[i,j].OnMouseDown   := form2.FeldMouseDown;
                if odd(i+j) then Feld[i,j].Brush.Color := clblue
                            else Feld[i,j].Brush.Color := clblue;
                Punkt[i,j]                 := TShape.create(form2);
                Punkt[i,j].parent       := form2;
                Punkt[i,j].Left           := 20 + (i-1)*40;
                Punkt[i,j].Width       := 20;
                Punkt[i,j].Top           := 20 + (j-1)*40;
                Punkt[i,j].Height       := 20;
                Punkt[i,j].Shape       := stCircle;
                Punkt[i,j].Visible       := false;
                end;
   end;
das ist das was bisher fuktioniert... in form1 habe ich noch 2 listboxen für spielfeldgrösse und anzahl schiffe

[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen, danke. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat