PHP tic tac toe
Hallo Zusammen,
ich versuche gerade ein TicTacToe Spiel über PHP zu entwerfen bzw. es ist die dritte Aufgabe in meiner Ausbildung.
Nun habe ich Grundgerüst usw. erstellt - so weit so gut
ich möchte jetzt wissen, wie ich am besten die Spielmechanik in PHP programmiere. Es sollen 2 Spieler spielen können
aber ich weiss jetzt nicht wie es abläuft, sodass sich beide abwechseln. Muss ich da mehrere Funktionen ineinanderschachteln?
Mein Ausbilder ist leider im Urlaub und ich muss jetzt erstmal alleine klar kommen.Deswegen frag ich euch
LG,
dempsey
ich versuche gerade ein TicTacToe Spiel über PHP zu entwerfen bzw. es ist die dritte Aufgabe in meiner Ausbildung.
Nun habe ich Grundgerüst usw. erstellt - so weit so gut
ich möchte jetzt wissen, wie ich am besten die Spielmechanik in PHP programmiere. Es sollen 2 Spieler spielen können
aber ich weiss jetzt nicht wie es abläuft, sodass sich beide abwechseln. Muss ich da mehrere Funktionen ineinanderschachteln?
Mein Ausbilder ist leider im Urlaub und ich muss jetzt erstmal alleine klar kommen.Deswegen frag ich euch
LG,
dempsey
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 152780
Url: https://administrator.de/contentid/152780
Ausgedruckt am: 08.11.2024 um 20:11 Uhr
14 Kommentare
Neuester Kommentar
Nun des ist so
Beide Spieler Melden sich auf der Seite das die Spielen wollen.
Wenn beide im SPiel sind Spiel-ID1 machst du entweder einen Würfel wer anfängt oder das die sich selbst einigen.
Dann immer abwechselnd darf einer 1 Zug machen wodurch du ja die Abfragen entweder alle X Sekunden die Seite neu lädst oder am besten per Ajax machst.
Verschalteln im grunde ja da du mehere Sachen prüfen mußt um zu wissen wer dran ist ect
Beide Spieler Melden sich auf der Seite das die Spielen wollen.
Wenn beide im SPiel sind Spiel-ID1 machst du entweder einen Würfel wer anfängt oder das die sich selbst einigen.
Dann immer abwechselnd darf einer 1 Zug machen wodurch du ja die Abfragen entweder alle X Sekunden die Seite neu lädst oder am besten per Ajax machst.
Verschalteln im grunde ja da du mehere Sachen prüfen mußt um zu wissen wer dran ist ect
Hi dempsey,
dieses Script . . .
http://code.activestate.com/recipes/276962-php-tic-tac-toe/
. . . unter tic-tac-toe.php abspeichern.
Du spielst da zwar gegen den Computer, aber da erhälst du schon
mal einen kleinen Einblick, wie aufwändig das ist.
Gruß
Günni
dieses Script . . .
http://code.activestate.com/recipes/276962-php-tic-tac-toe/
. . . unter tic-tac-toe.php abspeichern.
Du spielst da zwar gegen den Computer, aber da erhälst du schon
mal einen kleinen Einblick, wie aufwändig das ist.
Gruß
Günni
moin,
das gibt da eine vielzahl an optionen... Die einfache: Beide Spieler bekommen eine ID die du in ner DB ablegst. Bei dem Spieler bei dem der Wert auf "Aktiv" ist werden die Steuerelemente entsperrt. soweit der klickt sperrst du dessen steuerelemente - und entsperrst die beim anderen spieler...
ob du das dann per ajax realisierst oder per reload is dann ne detailfrage...
das gibt da eine vielzahl an optionen... Die einfache: Beide Spieler bekommen eine ID die du in ner DB ablegst. Bei dem Spieler bei dem der Wert auf "Aktiv" ist werden die Steuerelemente entsperrt. soweit der klickt sperrst du dessen steuerelemente - und entsperrst die beim anderen spieler...
ob du das dann per ajax realisierst oder per reload is dann ne detailfrage...
Hi Master of Scripting,
Meine PHP Version ist vom Stand 5.2.6-1 und da läuft dieses Script einwandfrei. Wenn das nicht der
Fall wäre, so hätte ich das Script wohl kaum gepostet.
Meine Fresse, hast du eigentlich nichts anderes zu tuen, als auf Beiträge irgendwelche Kommentare abzugeben,
nur um in der Leiter links außen nach oben zu klettern?
Wundert mich nur noch, dass du in dem Script nicht noch irgendeine Lücke entdeckt hast, wo jemand eine SQL-Injection
unterbringen kann. Im Rezitieren einer gewissen Wiki-Seite bist du ja auch der Master of Scripting
Gruß
Günni
...das Script ist so alt, dass es auf einem halbwegs aktuellen Server nicht mal mehr laufen wird
und zudem programmier-technisch beinahe eine Vergewaltigung.
und zudem programmier-technisch beinahe eine Vergewaltigung.
Meine PHP Version ist vom Stand 5.2.6-1 und da läuft dieses Script einwandfrei. Wenn das nicht der
Fall wäre, so hätte ich das Script wohl kaum gepostet.
Meine Fresse, hast du eigentlich nichts anderes zu tuen, als auf Beiträge irgendwelche Kommentare abzugeben,
nur um in der Leiter links außen nach oben zu klettern?
Wundert mich nur noch, dass du in dem Script nicht noch irgendeine Lücke entdeckt hast, wo jemand eine SQL-Injection
unterbringen kann. Im Rezitieren einer gewissen Wiki-Seite bist du ja auch der Master of Scripting
Gruß
Günni
Ahnung von PHP hast du nicht, oder?
(Das ist natürlich eine rhetorische Frage. Mit deinem qualifizierten Kommentar zur Bedeutung von SQL-Injections ist ja schon alles gesagt.)
Ich würde dir empfehlen erst mal ein paar Grundlagen zu lernen bevor du andere dermaßen unbegründet anmachst.
Aber bitte, gehen wir es mal durch:
Im globalen Kontext globale Variablen zu definieren ist absoluter Schwachsinn.
Diese Syntax wird in einem aktuellen PHP gar nicht mehr in der Standardkonfiguration angenommen und fliegt in PHP6 raus.
Erst wenn man mutwillig short_open_tags aktiviert läuft das und davon rät PHP nicht ohne Grund deutlich ab.
Du kannst mir auch sicher sagen wo es zu einem guten Stil gehört, dass man in jeder einzelnen Funktion 18 Globalen definiert.
Schon eine davon ist eine zu viel!
Jeder der sich mal 10 Minuten mit Programmieren befasst hat und bis zu Arrays gekommen ist dürfte verstehen, warum das ein Parade-Beispiel für ganz großen Mist ist.
Mit auch nur ein bisschen Ahnung hätte man das geschrieben als:
Seit Ewigkeiten ist das
HTTP_POST_VARS ist seit 4.1.0 (!) veraltet und fliegt in PHP6 raus!
Ich hoffe dazu muss ich nicht auch noch was sagen?
Und die Programm-Logik habe ich mir bisher noch nicht mal angeschaut...
Ich weiß ja nicht, ob es für dich zum guten Ton gehört einen Anfänger mit Uralt-Code zu belasten (wie Cisco das mit den Netz-Klassen macht), aber für mich nicht.
(Das ist natürlich eine rhetorische Frage. Mit deinem qualifizierten Kommentar zur Bedeutung von SQL-Injections ist ja schon alles gesagt.)
Ich würde dir empfehlen erst mal ein paar Grundlagen zu lernen bevor du andere dermaßen unbegründet anmachst.
Aber bitte, gehen wir es mal durch:
global $bsize,$playerToken,$myToken,$gameOver,$winArr,$rowArr,$colArr,$digArr,$vals,$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9;
Im globalen Kontext globale Variablen zu definieren ist absoluter Schwachsinn.
<?
Diese Syntax wird in einem aktuellen PHP gar nicht mehr in der Standardkonfiguration angenommen und fliegt in PHP6 raus.
Erst wenn man mutwillig short_open_tags aktiviert läuft das und davon rät PHP nicht ohne Grund deutlich ab.
function genBox($size) {
global $bsize,$playerToken,$myToken,$gameOver,$winArr,$rowArr,$colArr,$digArr,$vals,$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9;
global $bsize,$playerToken,$myToken,$gameOver,$winArr,$rowArr,$colArr,$digArr,$vals,$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9;
Du kannst mir auch sicher sagen wo es zu einem guten Stil gehört, dass man in jeder einzelnen Funktion 18 Globalen definiert.
Schon eine davon ist eine zu viel!
$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9
Jeder der sich mal 10 Minuten mit Programmieren befasst hat und bis zu Arrays gekommen ist dürfte verstehen, warum das ein Parade-Beispiel für ganz großen Mist ist.
if($who=="")
return 1;
else
return 0;
return 1;
else
return 0;
Mit auch nur ein bisschen Ahnung hätte man das geschrieben als:
return ($who=='');
(Den allgemeinen Sinn der Funktion mal nicht betrachtet).if($HTTP_POST_VARS) {
Seit Ewigkeiten ist das
$_POST
.HTTP_POST_VARS ist seit 4.1.0 (!) veraltet und fliegt in PHP6 raus!
if($movIndex==0)
$s1=$myToken;
if($movIndex==1)
$s2=$myToken;
if($movIndex==2)
$s3=$myToken;
if($movIndex==3)
$s4=$myToken;
if($movIndex==4)
$s5=$myToken;
if($movIndex==5)
$s6=$myToken;
if($movIndex==6)
$s7=$myToken;
if($movIndex==7)
$s8=$myToken;
if($movIndex==8)
$s9=$myToken;
Ich hoffe dazu muss ich nicht auch noch was sagen?
Und die Programm-Logik habe ich mir bisher noch nicht mal angeschaut...
Ich weiß ja nicht, ob es für dich zum guten Ton gehört einen Anfänger mit Uralt-Code zu belasten (wie Cisco das mit den Netz-Klassen macht), aber für mich nicht.
Zitat von @kaiand1:
Dann immer abwechselnd darf einer 1 Zug machen wodurch du ja die Abfragen entweder alle X Sekunden die Seite neu lädst oder am besten per Ajax machst.
Dann immer abwechselnd darf einer 1 Zug machen wodurch du ja die Abfragen entweder alle X Sekunden die Seite neu lädst oder am besten per Ajax machst.
Zitat von @maretz:
bei dem der Wert auf "Aktiv" ist werden die Steuerelemente entsperrt. soweit der klickt sperrst du dessen steuerelemente und entsperrst die beim anderen spieler...
bei dem der Wert auf "Aktiv" ist werden die Steuerelemente entsperrt. soweit der klickt sperrst du dessen steuerelemente und entsperrst die beim anderen spieler...
Ich denke das dies bei dem Aufgabentyp nicht notwendig. Ich kann mich irren, aber ich gehe davon aus, daß die Aufgabe sich so versteht, daß 2 Spieler über ein gemeinsames Interface spielen. Spieler1zieht->reload->Spieler2zieht->reload.
LG Florian
Moin,
das ganze mit "hidden feldern"? War das die explizite Vorgabe - oder war es nur "keine Datenbank"? Im letzten Fall könnte man ja noch ne Datei auf dem Server legen bei dem das Spiel abgefragt wird...
Ansonsten würde ich auch versuchen keine Hidden-Fields zu nehmen - da das ganze natürlich keinen Sinn ergibt. Wenn dann in die Session-Variablen packen und über ne Datei den Austausch zwischen den Spielern regeln. Oder soll es so sein das die beiden Spieler vor EINEM Browser sitzen und sich den teilen? (d.h. wirklich die Maus von Hand zu Hand geben)? Dann würde das mit Hidden natürlich gehen (wenn auch nicht schön). Da hättest du 9 Hidden Felder
(hf1_1, hf1_2, hf1_3,....hf3_2,hf3_3). Die setzt du einfach auf -1 zum Start (nicht belegt), 0 oder 1 (je nach Spieler). Jetzt ist es dann im simpelsten Fall stupide Tipparbeit für das Ergebnis
if ((hf1_1==0) AND (hf1_2==0) and (hf1_3==0)) echo "player 1 won!" und so weiter... (geht natürlich auch eleganter -> aber DA darfst du dir dann nen weg überlegen ;)
das ganze mit "hidden feldern"? War das die explizite Vorgabe - oder war es nur "keine Datenbank"? Im letzten Fall könnte man ja noch ne Datei auf dem Server legen bei dem das Spiel abgefragt wird...
Ansonsten würde ich auch versuchen keine Hidden-Fields zu nehmen - da das ganze natürlich keinen Sinn ergibt. Wenn dann in die Session-Variablen packen und über ne Datei den Austausch zwischen den Spielern regeln. Oder soll es so sein das die beiden Spieler vor EINEM Browser sitzen und sich den teilen? (d.h. wirklich die Maus von Hand zu Hand geben)? Dann würde das mit Hidden natürlich gehen (wenn auch nicht schön). Da hättest du 9 Hidden Felder
(hf1_1, hf1_2, hf1_3,....hf3_2,hf3_3). Die setzt du einfach auf -1 zum Start (nicht belegt), 0 oder 1 (je nach Spieler). Jetzt ist es dann im simpelsten Fall stupide Tipparbeit für das Ergebnis
if ((hf1_1==0) AND (hf1_2==0) and (hf1_3==0)) echo "player 1 won!" und so weiter... (geht natürlich auch eleganter -> aber DA darfst du dir dann nen weg überlegen ;)
Oder soll es so sein das die beiden Spieler vor EINEM Browser sitzen und sich den teilen? (d.h. wirklich die Maus von Hand zu Hand geben)? ...
Da würde ich fast darauf wetten...
LG Florian
Da würde ich fast darauf wetten...
LG Florian