Autor Beitrag
bf109g.01
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 04.03.09 23:18 
Hallo, baue an einer TicTacToe Version, zunächst nur für zwei menschl. User.
Bei dem Spiel gibt es bekanntlich 9 Felder & max. 9 Züge, dann ist es spätestens vorbei.
_ _ _
|_|_|_|
|_|_|_|
|_|_|_|

Bie jedem der 9 Felder passiert beim Klicken aber zunächst genau dasselbe.
Weil die aber alle unterschiedlich heißen, brauchen die alle eine eigene (genau gleiche) Prozedur.
Was muss ich schreiben, damit alle Felder Pxy ('P11' - 'P33' (P=Panel, x-, y-Koordinate))
nur auf einen Text zugreifen können? Muss ich eine function verwenden? Wenn ja wie?

Danke schon mal im Voraus! :-)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TF.P13Click(Sender: TObject); 
// statt P13.Click bräuchte ich es allgemein: Pxy (alle Felder) 
begin
  if move <=9 then // falls das Spielfeld schon voll ist
  begin
    if current= true then // aktuellen Spieler abfragen
      begin
        p13.caption:='X'// X in gewähltes Feld 
        current:=false;   // der andere Spieler ist am Zug
      end
    else
      begin
        p13.caption:='O'// O in gewähltes Feld 
        current:=true; // der andere Spieler ist am Zug
      end;
    p13.enabled:=false; // Feld abschalten
    move:=move+1//  Zugzahl erhöhen (max 9)
  end;  
end;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 05.03.09 01:50 
Moin und :welcome: im Forum!

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
Weil die aber alle unterschiedlich heißen, brauchen die alle eine eigene (genau gleiche) Prozedur.
Was muss ich schreiben, damit alle Felder Pxy ('P11' - 'P33' (P=Panel, x-, y-Koordinate))
nur auf einen Text zugreifen können?
Schau mal hier, das ist zwar ein anderes Spiel, aber da wird die Technik, eine gemeinsame Aktionsmethode für gleiche Controls zu verwenden, demonstriert. :idea: ;)

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
procedure TF.P13Click(Sender: TObject); 
// statt P13.Click bräuchte ich es allgemein: Pxy (alle Felder)
Das ist schon OK so, irgendwie muss die Methode ja heißen. Und diese Methode stellst du im Objekt-Inspektor einfach für alle Controls ein. Welches Control das Ereignis ausgelöst hat, bekommst du im Parameter Sender: TObject geliefert. Details im o.a. Tutorial. :les:

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
    if current= true then // aktuellen Spieler abfragen
      begin
Du solltest nicht auf TRUE hin vergleichen, sondern einfach nur if current then verwenden; könnte sonst zu komischen Effekten führen (wird dir sicher auch gleich noch von Anderen mit Links auf erläuternde Beiträge gesagt ;)).

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.