# Tic Tac Toe in PHP und HTML



## Adil Herceg (26. Mai 2011)

Hallo,
ich habe folgendes Problem, ich soll als Projekt ein Tic Tac Toe Spiel in HTML und PHP programmieren, sozusagen beides gemischt, allerdings habe ich so gut wie überhaupt keine Ahnung davon, jedoch brauche ich es, damit ich nicht eine all zu schlechte Note kriege, welche mir den Abischnitt total versauen würde... Deswegen würde ich um Hilfe bitten, ich habe das Projekt schon angefangen und es liegt als Anhang bei, nun würde ich gerne wissen, mit welchem Befehl bzw. welcher Eingabe in PHP bzw. HTML ich erreichen kann, dass mir ein X bzw. ein O in das zu dem jeweiligen Button gehörende Feld hineingeschrieben werden kann und wie ich erreichen kann, dass jedesmal der Spieler wechselt. Ich habe bisher das Programm mit Hilfe von Dreamweaver bearbeitet und mit xampp gestartet, weil am sonsten der php quellcode wohl nicht erkannt wird, wie mir gesagt wurde. Ich wäre sehr dankbar wenn mir jemand bei diesem Problem helfen könnte, ich glaube es ist an sich nicht all zu schwer, wenn man die Sachen beherrscht aber ich habe leider keinen blaßen Schimmer davon. Vielen dank im Vorraus, Adil.


----------



## Napofis (26. Mai 2011)

Die Sache mit PHP anzugehen ist etwas unsinnig, ist es ein muss? Und wie ist das mit den Spielern ist es Player vs. Player oder Player vs. Computer oder beides?


----------



## ComFreek (26. Mai 2011)

Ja, PHP für das eigentliche Spielen (=Kreuz setzen) zu verwenden ist sinnlos.
Dazu eignet sich JavaScript sehr viel besser!

Mit PHP könntest du theoretisch den Spielstand speichern, usw.

Dein Code sieht übrigens sehr komisch aus, liegt wahrscheinlich daran, dass du einen GUI-Editor genommen hast.


----------



## Adil Herceg (26. Mai 2011)

Ja, es darf nur PHP und HTML benutzt werden, ich möchte nur ein Player gegen Player spiel haben, gegen den Computer ist nicht nötig, ich würde es schon gerne auf dem was ich bis jetzt programmiert hab aufbauen lassen, also ich bräuchte halt nur sozusagen einen befehl, der bewirkt, dass bei einem druck auf den knopf ein x oder ein o in das dazugehörige textfeld, welches in html programmiert ist, schreibt, ich dachte da an so etwas wie eine geschachtelte if anweisung also zum beispiel if(player=1){ echo "X"} else { echo "O"} so etwas in der richtung und das dann das passende symbol in das dazugehörige textfeld geschrieben wird


----------



## Adil Herceg (26. Mai 2011)

@ ComFreek ja kann sein, dass er deswegen komisch aussieht, ich hab leider keine ahnung davon, bin ein totaler ****


----------



## ComFreek (27. Mai 2011)

Nunja der Modus Multiplayer ändern nun die Sache.
Da brauchst du eine Sprache die mit beiden Playern kommunizieren kann => PHP.

Folgende einfache Lösung bietet sich an:

Der aktuelle Status (Player1, Player2, Spielstand,...) wird gespeichert
Ablauf des Hauptskriptes:
Lese den Status
Wenn noch kein Player1 -> Button zum registrieren dafür (schreibe Staus!)
Wenn noch kein Player2 (aber Player1), dann wie bei Player1
Wenn beide Spieler eingetragen -> Spiel
Der eine wartet immer bis der andere gekreuzt hat


Nun ich möchte dich noch bitten verständliche Sätze mit beachteter Groß- und Kleinschreibung zu schreiben 
Vorweg möchte ich auch sagen, dass ich hier keine Komplettlösungen posten werde, aber bei Problemen werde ich dir natürlich helfen.


----------



## Adil Herceg (2. Juni 2011)

So,
ich habe nun mal versucht ein bischen zu tüfteln, leider kann ich das Ergebnis nicht überprüfen, da Xampp bei mir nicht funktioniert. Jedenfalls habe ich mir das nun so gedacht, dass der Spielerwechsel durch eine Art Tauschfunktion stattfindet, also eine Schleife welche von Spieler 1 auf Spieler 2 wechselt etc. Danach soll nun geprüft werden, ob der jeweilige Knopf, beispielsweise der oben links, gedrückt wurde. Dies habe ich mit einer if Anweisung erledigt. Des Weiteren wird dort dann überprüft, ob der erste oder der zweite Spieler dran ist und je nach dem wird dann ein X oder ein O gepostet.

Hier nun einmal der Quelltext:

-->
    </style>
    </head>
    <form action="Tic Tac Toe.html" method="get" >


    <body>
    <div class="links_oben"></div>
    <div class="mitte_oben"></div>
    <div class="rechts_oben">
      <div class="links_mitte"></div>
    </div>
    <div class="mitte_mitte"></div>
    <div class="rechts_mitte"></div>
    <div class="links_unten"></div>
    <div class="mitte_unten"></div>
    <div class="rechts_unten">Raum für den Inhalt von  class "rechts_unten"</div>
    <div class="knopf_links_oben"><button name="knopf_oben_links" type="submit" value="1";></div>
    <div class="knopf_mitte_oben"><button name="knopf_oben_mitte" type="submit" value="2";></div>
    <div class="knopf_rechts_oben"><button name="knopf_oben_rechts" type="submit" value="3";></div>
    <div class="knopf_links_mitte"><button name="knopf_mitte_links" type="submit" value="4";></div>
    <div class="knopf_mitte_mitte"><button name="knopf_mitte_mitte" type="submit" value="5";></div>
    <div class="knopf_rechts_mitte"><button name="knopf_mitte_rechts" type="submit" value="6";></div>
    <div class="knopf_links_unten"><button name="knopf_unten_links" type="submit" value="7";></div>
    <div class="knopf_mitte_unten"><button name="knopf_unten_mitte" type="submit" value="8";></div>
    <div class="knopf_rechts_unten"><button name="knopf_unten_rechts" type="submit" value="9";></div>

    <?
    	$var=temp;
	$var=player1;
	$var=player2;

	for($a=0;$a<=99;$a++)
	{
	 temp=player1;
	 player1=player2;
	 player2=temp;
	}

    	if(isset$_GET['knopf_oben_links'])
       	{
	 if($var=player1)
	   {
	    echo"X";
	   }
	 elseif($var=player2)
	   {
	    echo"O";
	   }
	}       

    ?>
  </div>
  </div>
</div>
</body>
    </html>

Dies ist nun erst einmal nur für den Knopf oben links, also sozusagen den ersten Knopf. Meine Frage ist nun zum einen, ob das ganze so funktionieren kann und zum anderen, ob es sinnvoller wäre, die Schleife innerhalb der if Anweisung zu schreiben, da ja eigentlich nach jedem Druck auf den Knopf der Spieler getauscht werden muss?

Danke an ComFreek, an dieser Stelle, dass du mir deine Hilfe angeboten hast


----------



## ComFreek (2. Juni 2011)

Eine Schleife in Form von [phpf]for[/phpf] oder [phpf]while[/phpf] nützt an dieser Stelle nichts.
Da sonst der eigentliche Spieler am Bildschirm nichts zu sehen bekommt!

Wenn beide Spieler feststehen, würde ich das so machen:

Regelmäßige AJAX Anfrage an PHP-Skript senden, ob Spieler selber dran ist
Wenn nicht, dann Grafik/Text "bitte warten..." und Spielmaske sperren
Wenn schon, Spielmaske freigeben
Warten auf Klick

Wo die aktuellen Kreuze sind, würde ich auch abspeichern. Und falls der aktuelle Spieler dran ist, dann würde ich auch per Request (Punkt 1) diesen Spielstand zurückgeben.
Für die Übertragung JS<->PHP eignet sich vorallem JSON.

Falls du z.B. AJAX nicht kennst, dann müsste der Spieler regelmäßig die Seite aktualisieren (oder eventuell per HTML: meta).



PS: Ich habe jetzt einfach mal eine Lösung mit JavaScript & AJAX erwähnt. Erst danach fiel mir wieder ein, dass du HTML & PHP benutzen sollst. Obwohl wahrscheinlich dein Lehrer wohl nichts dagegen hätte


----------

