4Gewinnt/Tic Tac Toe-Variation

Hallo zusammen,

ich habe mal eine Frage und zwar habe ich ein ähnliches Spiel programmiert wie 4 gewinnt, nur das es mehr n Richtung TicTacToe geht.
Dabei habe ich un folgendes Problem.

Ich habe das ganze unter SWING erstellt. Soweit alles wunderbar. Ich kann die Buttons drücken und sie ändern die Farbe, ich bekomme das ganze in ein Array geschrieben (ENUM GRÜN/ROT/LEER). Das Array ist ein 2 Dimensionales Array, bedeutet also ich kann darüber die Koordinaten abbilden. Alles super, wird so auch geschrieben.

Nun habe ich meine Gewinnlogik und kann dieses Array auslesen und auf Gewinnsituation überprüfen.
Ich würde aber gerne wenn ich eine Gewinnsituation habe meine Buttons einfärben lassen die gewonnen haben. Dafür müsste ich allerdings die Koordinaten wissen und da hapert es bei mir ich weiß nicht wie ich diese 6 Gewinnsteine dann markiere.

Wenn mir hier einer helfen kann wäre das echt Klasse. Was immer ihr für Infos von mir braucht ich versuche sie euch dann zu geben.

Gruß und Danke
Firestar

Die Koordinaten kannst du mit Hilfe der Größe der Grafik der Steine und der Position im Array berechnen.
Die Grafiken der Steine dürften ja eine rechteckige Form haben, da kannst du die Dimensionen der Grafik (in Pixeln) auslesen. An Hand der Position im Array kannst du mit Hilfe des Indexes dann auch die Position des Steines auf deiner Benutzeroberfläche ermitteln.

Hey L-ectron-X,

danke für die Info. Ich habe nur das Problem das ich hier mit dem MVC Model arbeiten soll.
Also ich Rufe über den Buttonlistener die Methode “repaint” in meinem Button auf. Diese malt den Button je nach Spieler in Grün oder Rot an und ruft die Methode “MakeMove” in meinem Modell auf.
Diese bekommt die x und y position des Buttons mitgeteilt. Diese verzeichnet diese Position in einem 2 Dimensionalen Array.
Dann rufe ich in der Methode “MakeMove” meine SucheGewinnsituation Methode auf. Ohne Übergabeparameter.
Diese Prüft dann mit Hilfe des Arrays ob eine Gewinnsituation vorliegt.
Wenn dies der Fall ist setzt sie eine Variable "gewonnen auf True und ich rufe dann noch eine Methode auf die ein PopUp öffnet und sagt das gewonnen wurde.
Danach gehe ich ja wieder in die repaint Methode des Buttons, da ich von hier ja die MakeMove Methode aufgerufen habe.
So und hier hatte ich dann die Idee das ich prüfe ob die Variable “gewonnen” im Modell == true ist. Sollte dies der Fall sein soll die Gewinnkonstelation gelb werden (die Buttons).

Ich weiß nun nicht wie ich es hinbekomme die Koordinaten der Buttons mit zu übergeben die gewonnen haben, sodaß ich diese neu zeichnen lassen kann.

Ich kann dir auch gerne mal meinen Quellcode schicken. Leider nur per Mail, da ich ihn ungerne hier posten würde, da das Projekt noch offen ist.

Danke und Gruß
Firestar!

Wenn du ermitteln kannst, ob das Spiel gewonnen wurde oder nicht, solltest du doch auch ermitteln können, welche Steine zum Gewinnen geführt haben. Diese Steine merkst du dir und färbst sie ein.

Es hört sich nach einem kleinen Designfehler an.
Die Buttons sollten keine Kenntnis davon haben, wen oder was sie abbilden. Du brauchst also eine Klasse Stein, die die Daten eines jeden Spielsteins (Instanzen) halten kann und welche du in deinem Model verwaltest.

Hallo L-ectron-X,

ich habe nun die Positionen und kann diese auch ermitteln. Nun habe ich das Problem mit den Buttons. Ich komme ja wie weiter unten Beschrieben wieder in die Button Klasse zurück und zwar in die Repaint Methode.

Hier kann ich nun die nächsten Schritte machen, zumindest habe ich das gedacht.
Wollte hier jetzt mit den Positionen die neuen Buttons erzeugen in der Farbe Geld und diese dann mit Hilfe der Koordinaten Positionieren.

Leider bekomme ich das nciht wirklich hin. Ich kann zwar einen neuen Button erzeugen, dieser wird aber leider nicht an der Stelle angezeigt die ich ihm mit den Koordinaten mit gebe, sondern es wird der Button nur eingefärbt den ich als letztes gedrückt habe.

Hast du hier eine Idee wo ich das am besten mache mit dem Umfärben???

Wie oben schon gesagt: Wenn du die Konstellation kennst, die zum Gewinn geführt hat, ist es doch recht einfach die passenden Button zu färben.

Ohne Code wirds jetzt schwierig.

Hallo L-ectron-X,

kurzer Vorschlag und zwar wäre es Klasse wenn ich dir den Quelltext per Mail schicken könnte.

Also wenn du die hier nicht posten willst habe ich vollstest Verständniss. Daher mein Vorschlag, du schickst mir eine Mail,
dann kann ich dir recht zügig meinen Quelltext zuschicken und dann können wir das weiter Besprechen.

Was hälst du von meiner Idee???

noch_fragen"at"nurfuerspam.de

Gruß
Firestar
[LEFT][/LEFT]

Warum meldest du dich nicht an? Dann geht das auch via PN.

Hallo L-ectron-X,

angemeldet und Code ist zu dir unterwegs.

Danke nochmal für die schnelle und vor allem wirklich Klasse Hilfe.

Gruß
Firestar

Hab deine PNs und deinen Code erst heute gelesen. Ich war beruflich unterwegs.
Aber gut, wenn du es allein lösen konntest. :slight_smile: