AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TicTacToe - Frage zum Programmablauf

Ein Thema von ShadowDeath · begonnen am 11. Apr 2017 · letzter Beitrag vom 12. Apr 2017
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#1

AW: TicTacToe - Frage zum Programmablauf

  Alt 12. Apr 2017, 15:30
Zitat:
TSpeedButton( Self.Controls[Y * 10 + X ] ).Caption := '';
Das wären bei X=3 und Y=3 ja 34 Controls (Index beginnt bei 0), und alle müssen Speedbuttons sein. Das erscheint mir ein wenig viel.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ShadowDeath

Registriert seit: 11. Apr 2017
10 Beiträge
 
#2

AW: TicTacToe - Frage zum Programmablauf

  Alt 12. Apr 2017, 15:33
Zitat:
TSpeedButton( Self.Controls[Y * 10 + X ] ).Caption := '';
Das wären bei X=3 und Y=3 ja 34 Controls (Index beginnt bei 0), und alle müssen Speedbuttons sein. Das erscheint mir ein wenig viel.
Also wäre 2 der passende Multiplikator?

EDIT: Habe es grade mit 2 getestet. Leider lässt er 12,13 & 23 so wie sie sind & cleart dafür den Neustart-Speedbutton.
EDIT 2: ich habe vom Produkt nochmal 1 abgezogen, damit der neustart Button bleibt. Jetzt werden nur noch 13 & 23 nicht gecleart.

Geändert von ShadowDeath (12. Apr 2017 um 15:38 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: TicTacToe - Frage zum Programmablauf

  Alt 12. Apr 2017, 15:39
Dashier ist jetzt so nicht mehr richtig:
Delphi-Quellcode:
// Welcher Button wurde gedrückt?
  X := 90;
  Y := 90;
  for Index := 0 to Self.ControlCount - 1 do
  begin
   If Sender = Self.Controls[ Index ] then
   begin
     X := (Sender as TSpeedButton).Tag mod 10;
     Y := (Sender as TSpeedButton).Tag div 10;
   end;
  end;
Dashier sollte ausreichen:
Delphi-Quellcode:
  X := (Sender as TSpeedButton).Tag mod 10;
  Y := (Sender as TSpeedButton).Tag div 10;
Wir wollen ja, weil es nicht funktioniert, vom Durchlaufen von Self.Controls weg. Die Nutzung der Eigenschaft Tag dient ja genau der Abschaffung dieser fehleranfälligen Vorgehensweise.

Wir brauchen durch die Änderung auf die Tag-Nutzung nicht mehr abfragen, welcher Button gedrückt wurde. Der Button teilt uns dies durch den Inhalt von Tag selbst mit.

Der Button mit Tag = 11 sagt dadurch letztlich: "Ich bin der Butten von unten links."
Der Button mit Tag = 33 sagt uns: "Ich bin der Button von oben rechts."

Mit Tag mod 10 bzw. Tag div 10 wird der zweistellige Wert von Tag auf X und Y "verteilt", also in die jeweiligen Koordinaten umgerechnet.
  Mit Zitat antworten Zitat
ShadowDeath

Registriert seit: 11. Apr 2017
10 Beiträge
 
#4

AW: TicTacToe - Frage zum Programmablauf

  Alt 12. Apr 2017, 15:42
Ist erledigt. Trotzdem wird weiterhin 13 & 23 nicht gecleart.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: TicTacToe - Frage zum Programmablauf

  Alt 12. Apr 2017, 15:49
Dieses ist so nicht korrekt, die "geographische" Lage der Buttons hat sich durch die Nutzung von Tag und die geänderten Namen nicht verändert.
Delphi-Quellcode:
 for X := 1 to 3 do
   begin
     for Y := 1 to 3 do
     begin
       Spielfeld[ X, Y ] := 0;
       TSpeedButton( Self.Controls[Y * 10 + X ] ).Caption := '';
     end;
   end;
Hier würd' ich es mal so versuchen:
Delphi-Quellcode:
  for X := 1 to 3 do for Y := 1 to 3 do Spielfeld[X,Y] := 0;
  for X := 0 to Self.Controls.Count - 1 do
    begin
      if Self.Controls[X] is TSpeedButton then
        begin
          if TSpeedButton(Self.Controls[X]).Tag <> 0 then TSpeedButton(Self.Controls[X]).Caption := '';
        end;
    end;
(Ist jetzt nur ungetestet hingedaddelt. Schreibfehler (wie immer) nicht ausgeschlossen.)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
992 Beiträge
 
Delphi 6 Professional
 
#6

AW: TicTacToe - Frage zum Programmablauf

  Alt 12. Apr 2017, 15:54
Hmm..


Hab mir deinen Source genommen..
- Den Startbutton aber als TBitBtn
- Den Speedbuttons einen Tag von 0-9 verpasst
- Entsprechende Stellen umgestellt oder bereinigt

Und siehe da dein Basis-Code läuft.
Angehängte Dateien
Dateityp: zip Game_Tic Tac Toe.zip (232,4 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
ShadowDeath

Registriert seit: 11. Apr 2017
10 Beiträge
 
#7

AW: TicTacToe - Frage zum Programmablauf

  Alt 12. Apr 2017, 16:01
@nahpets: Danke, jetzt geht es & nochmals danke für die guten Erklärungen.
@Holger: Danke auch an dich. Ich werde mir den Code gleich anschauen
@ALLE: Danke für eure hilfreichen Antworten und Lösungsansätze.

PS: Ich habe noch ein Problem, um das ihr euch kümmern könnt, zudem ich nachher einen Thread erstellen werde ^^ (Geht um ein anderes Spiel)
  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 14:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz