AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen nicht
Thema durchsuchen
Ansicht
Themen-Optionen

4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen nicht

Ein Thema von malo · begonnen am 13. Mär 2005 · letzter Beitrag vom 14. Mär 2005
Antwort Antwort
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#1

4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen nicht

  Alt 13. Mär 2005, 21:05
Und zwar versuche ich mich (schon wieder) an einem 4-Gewinnt. Diesmal will ich das ganze etwas geschickter anzugehen, als beim letzten Mal. Der Anfang ist erstmal, alle Felder (in meinem Beispiel Shapes) zu erzeugen und richtig zu positionieren. Dafür hab ich ein 2dimensionales Array of TShape genommen.

Feld: array[1.. 8, 1.. 8] of TShape; Mit folgendem Code will ich nun die Shapes erzeugen und positionieren:

Delphi-Quellcode:

procedure TForm1.FormPaint(Sender: TObject);
var i, j: integer;
begin
if not Shown then //damit es nur einmal ausgeführt wird
  begin
    For i := 1 to 7 do
      for j := 1 to 7 do
        begin
          Feld[i, j] := TShape.Create(self);
          With Feld[i, j] do
            begin
              Show;
              Shape := stCircle;
              Brush.Color := clWhite;
              Parent := self;
            end;
        end;
    Feld[1, 1].Left := 10; //das erste Feld vorgeben
    Feld[1, 1].Top := 10;

    For i := 2 to 7 do
      For j := 2 to 7 do
        begin
          Feld[i, j].Left := Feld[i - 1, j].Left + Feld[i, j].Width + 5; //hier braucht man das jeweils vorherige Feld zum Positionieren
          Feld[i, j].Top := Feld[i, j - 1].Top + Feld[i, j].Height + 5;
        end;
  end;

Shown := true;
end;
Das Problem: Es wird nur ein 6x6 Felder großes Spielfeld erzeugt. Die restlichen Shapes liegen oben links einfach herum, ohne irgendwie positioniert worden zu sein. Hat jemand eine Ahnung, warum?
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: 4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen n

  Alt 13. Mär 2005, 21:44
So wie ich das sehe, läßt du die erste Spalte und die erste Zeile einfach aus. Nur Feld[1,1] setzt du. Danach fängst du erst wieder bei 2 an.
Außerdem: Warum deklarierst du dir ein 8x8-Array und benutzt nur 7x7?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: 4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen n

  Alt 13. Mär 2005, 22:34
Das rekursive Setzen ist doch etwas kompliziert, oder?
Delphi-Quellcode:
for i:=1 to 8 do
  for j:= 1 to 8 do
  begin
  Feld[i,j].left := 50 + i*(Shape.width+5); // 5 ergibt einen kleinen Abstand zwischen den Shapes
  Top analog dazu;
  end;
Ist doch etwas sauberer.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#4

Re: 4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen n

  Alt 14. Mär 2005, 03:20
Zitat von leddl:
So wie ich das sehe, läßt du die erste Spalte und die erste Zeile einfach aus. Nur Feld[1,1] setzt du. Danach fängst du erst wieder bei 2 an.
Ich habe [1,1] gesetzt, damit ich bei den anderen vom VORHERIGEN PUNKT aus die Felder setzen kann. Und bei [1,1] gibt es ja keinen vorherigen Punkt...

Zitat von leddl:
Außerdem: Warum deklarierst du dir ein 8x8-Array und benutzt nur 7x7?
War eigentlich nur zum Testen zum 8x8-Array geändert, soll aber 7x7 sein

@Toxman: Auf sowas sollte man kommen

danke!

//edit: Einziges Problem ist jetzt noch, dass der Abstand von Shape.Top bzw. Shape.Left auch an den Shapes ganz am Rand gilt (das heißt, sie sind recht weit vom Rand entfernt). Hat jemand einen Lösungsvorschlag dafür?

//edit2: Gut, hab da jetzt andere Objekte platziert, sieht nicht mehr so leer aus
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#5

Re: 4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen n

  Alt 14. Mär 2005, 10:41
Zitat von malo:
Ich habe [1,1] gesetzt, damit ich bei den anderen vom VORHERIGEN PUNKT aus die Felder setzen kann. Und bei [1,1] gibt es ja keinen vorherigen Punkt...
Das war mir schon klar, nur hast du eben ab [1,1] erst wieder bei [2,2] angefangen und somit die gesamte 1. Spalte und 1. Zeile außer [1,1] ausgelassen. Das könnte eben erklären, warum nicht alle Felder gesetzt waren.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#6

Re: 4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen n

  Alt 14. Mär 2005, 13:25
*hust*

Wieso die Shapes eig. dynamisch platzieren?
Schieb sie doch einfach hin..am Ende musst du doch eh nur die Farbe des TShape ändern

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#7

Re: 4 Gewinnt: Spielfeld erzeugen: Felderpostionen stimmen n

  Alt 14. Mär 2005, 13:57
Zitat von Airblader:
*hust*

Wieso die Shapes eig. dynamisch platzieren?
Schieb sie doch einfach hin..am Ende musst du doch eh nur die Farbe des TShape ändern

air
Ein paar Vorteile beim dynamischen Generieren:

- Ich kann das ganze Spielfeld direkt als 2dimensionales Array speichern (mach ich zwar noch seperat, aber trotzdem ganz praktisch).

- Die Shapes werden gleichmäßig aufgelistet und müssen nicht per Hand "richtig" verschoben werden. Das erspart lästige Schönheitskorrekturen

- Das Programm wird kleiner, wenn weniger Komponenten mitgeliefert werden müssen

@leddl: Hab ich nicht dran gedacht
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 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