Erstes Projekt TicTactoe

  • Hallo, bin ein absoluter Neuling was Android angeht aber hab mich jetzt mal rangewagt und nachdem ich mich ein wenig mit den Grundlagen vetraut gemacht habe, will ich nun mein erstes Projekt angehn, nämlich TicTacToe! Hab auch schon einiges geschafft aber komme nun iwie nicht weiter...
    Gleich vorweg mein versuch das ganze zu programmieren ist bestimmt eine extrem umständliche Variante aber ich versuchs mal zu erklären! Ich möchte das ganze gegen einen zweiten realen Spieler spielen!


    Activity 1 besteht lediglich aus 2 EditText zum Namen eingeben und einem Button um zum Spielfeld zu gelangen. Alles kein Problem soweit, Namen werden mitHilfe eines Intents mitgenommen und in der zweiten Activity wieder angezeigt...



    Hier habe ich schließlich mit Hilfe des TableLayouts ein Feld erstellt! Um Linien zu zeichnen hab ich das View Objekt etwas missbraucht ^^
    Als "Felderbuttons" habe ich TextViews genommen und alle neun mit einem OnClickListener ausgestatet! Die Textviews habe ich zunächst mit einem leeren String versehen.
    Nun habe ich eine Methode erstellt um den leeren String im jeweiligen Textview entweder durch ein "X" oder eine "O" zu ersetzen . Dies mache ich durch eine Zahl, welche nach jedem click um 1 ansteigt. Sprich bei Zug 1 gibts ein Kreuz, bei Zug 2 einen Kreis,... Alles mit Hilfe einer if-else Anweisung gemacht.



    Bis hierher klappt auch alles ohne Probleme, ich kann abwechselnd "X" und "O" zeichnen... Nun möchte ich aber einen Sieger bestimmen.


    Also nach einem klick den jeweiligen String wieder auslesen (entweder er hat X oder O) und diesen dann mit einem String spieler1=X, und String spieler2=O vergleichen.
    Anschliesend mit If-Anweisung die möglichen Gewinnvarianten prüfen
    (if (
    String aus Textview1 == spieler1 && String aus Textview2 == spieler1 && String aus Textview3 == spieler1){.....)


    Leider klappt das iwie nicht, hab jetzt schon ewig probiert aber komm nicht drauf wie ich das sonst noch anstellen könnte!


    Danke für eure Hilfe

  • Deine Idee zur Auswertung ist m.E. völlig ok, nur verheddert man sich in den ganzen if's, wenn man die Ergenisse prüft.


    Außerdem sollte man genau wissen, was man vergleicht - bei "==" benutzt du den Identitäts-Vergleich, der geht aber garantiert schief, weil du ja verschiedene Objekte (Strings) miteinander vergleichen willst. Um ganz sicher zu gehen, solltest du den String.equals() verwenden, also vom TextView erst getText() und dann mit toString() einen String machen.


    Schreib dir doch einfach mal die Sachen so auf (Zeile 1: Felder 1-3, Zeile 2: Felder 4-6, Zeile 3: Felder 7-9),
    dann sind Gewinner die Kombinationen 123, 456, 789, 147, 258, 369, 159, 357.
    Nun diese Kombinationen in die richtigen Vergleiche für das if einbauen.
    Ich kümmere mich im if übrigens nicht um den Spieler sondern nur um den Erfolg - gewonnen hat der letzte, der gesetzt hat, und das kannst du dann berechnen (hier 0 oder 1) .


    Das If könnte dann ungefähr so aussehen (hier nur für 123 -> 1 nicht leer && 1==2 && 1==2):

    Java
    if (  (  textview1.getText().length() > 0 &&
             textview1.getText().toString().equals(textview2.getText().toString()) &&
             textview1.getText().toString().equals(textview3.getText().toString())
           ) || (
             ...
           )
        ) {
       int gewinner = spielzug % 2;
    }


    Viel Erfolg! :P

  • Oh man, da hatte ich wohl ein kleines Brett vorm Kopf ^^ Die Felder untereinander zu vergleichen, darauf bin ich echt nicht gekommen xD


    Dank dir vielmals, hab alles 1a hinbekommen...


    Hat jmd eine Idee was sich als nächstes anbieten würde zum entwickeln?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!