Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP tic tac toe

Frage Entwicklung PHP

Mitglied: dempsey

dempsey (Level 1) - Jetzt verbinden

11.10.2010 um 15:08 Uhr, 3735 Aufrufe, 14 Kommentare

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
Mitglied: kaiand1
11.10.2010 um 15:36 Uhr
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
Bitte warten ..
Mitglied: Guenni
11.10.2010 um 15:55 Uhr
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
Bitte warten ..
Mitglied: maretz
11.10.2010 um 19:49 Uhr
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...
Bitte warten ..
Mitglied: dog
11.10.2010 um 20:53 Uhr
...das Script ist so alt, dass es auf einem halbwegs aktuellen Server nicht mal mehr laufen wird und zudem programmier-technisch beinahe eine Vergewaltigung.
Bitte warten ..
Mitglied: maretz
11.10.2010 um 21:02 Uhr
jap - das global dürfte schon ein erstes kleineres Problem geben...

und nur nebenbei - ich würde auch überlegen html und php zu trennen (ggf. nen template-system nutzen). das macht es übersichtlicher...

mehr guck ich lieber nich an - hab doch eben erst gegessen, das soll bitte auch drin bleiben!
Bitte warten ..
Mitglied: Guenni
11.10.2010 um 21:29 Uhr
Hi Master of Scripting,

...das Script ist so alt, dass es auf einem halbwegs aktuellen Server nicht mal mehr laufen wird

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
Bitte warten ..
Mitglied: dog
11.10.2010 um 21:45 Uhr
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:

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;

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;

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!

01.
		if($movIndex==0) 
02.
			$s1=$myToken; 
03.
		if($movIndex==1) 
04.
			$s2=$myToken; 
05.
		if($movIndex==2) 
06.
			$s3=$myToken; 
07.
		if($movIndex==3) 
08.
			$s4=$myToken; 
09.
		if($movIndex==4) 
10.
			$s5=$myToken; 
11.
		if($movIndex==5) 
12.
			$s6=$myToken; 
13.
		if($movIndex==6) 
14.
			$s7=$myToken; 
15.
		if($movIndex==7) 
16.
			$s8=$myToken; 
17.
		if($movIndex==8) 
18.
			$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.
Bitte warten ..
Mitglied: Florian.Sauber
12.10.2010 um 00:22 Uhr
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.

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...

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
Bitte warten ..
Mitglied: dempsey
13.10.2010 um 09:46 Uhr
Hallo Zusammen,

also ihr müsst erstmal wissen, dass ich auch gewisse Vorgaben habe. Vielleicht ergeben sie für euch keinen Sinn aber mein Ausbilder hat sich dabei schon etwas gedacht und deswegen darf ich jetzt nicht mit DB arbeiten.
Ich soll das ganze nämlich mit hiddenfeldern machen. Das wird dann mit einem Counter später durchgezählt usw. usw. aber wie dem auch sei.

ich habe das "Spielfeld" in meiner ausgabe.php generiert und ich möchte jetzt z.b. es so machen, dass an der stelle wo ich den button drücke, da ein einfaches jpg erscheint.
Da ich noch in den Anfangsschuhen von PHP stecke, bitte ich um nachsicht

Ich werde nachher mal ein paar Sachen hier posten, damit ihr ungefähr seht, was ich fabriziert hab =)
Bitte warten ..
Mitglied: kaiand1
13.10.2010 um 10:42 Uhr
Nun nur mit Hiddenfelder wird es schwer da du ja die Kommunikation mit den 2ten User brauchst wo er seine Kreuze macht.
Du könntes die Daten in einer Datei speichern und auslesen.
Aber sowas sagt man direckt am Anfang das du dies unter Einschränkungen zu Progamieren hast...
Bitte warten ..
Mitglied: maretz
13.10.2010 um 10:53 Uhr
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 ;)
Bitte warten ..
Mitglied: Florian.Sauber
13.10.2010 um 13:25 Uhr
Zitat von maretz:
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
Bitte warten ..
Mitglied: dempsey
13.10.2010 um 16:49 Uhr
Also es beide Informationen Stimmen -> Hiddenfelder verwenden und -> keine Datenbank

Es soll keinen Computer mit KI geben ! Florian hatte da recht .. Letztendlich sollen nur mein Ausbilder und ich an einem und dem selben Browser das TicTacToe spielen können.

01.
  <?php 
02.
	function bild(){ 
03.
	 
04.
		//$value = "<input class=\"button\" name=\"button1\" type=\"submit\" value=\"absenden\"/>"; 
05.
		if ($_POST['A1'] =='A1'){ 
06.
		$value = "<p><img src=\"x.jpg\" alt=\"Spieler1\"></p>"; 
07.
08.
		return ($value);		 
09.
10.
	 
11.
	 
12.
	function playground($A1, $A2, $A3, $B1, $B2, $B3, $C1, $C2, $C3) { 
13.
	 
14.
		//Erstellung von Spielfeld A1 bis A3		 
15.
		$value = "<tr>\n"; 
16.
		$value.= "<td div id=\"fields\">\n"; 
17.
		$value.= "<input name=\"hiddenA1\" type=\"hidden\" value=\"1\"/>"; 
18.
		$value.= "<input class=\"button\" name=\"A1\" type=\"submit\" value=\"A1\"/>"; 
19.
		$value.= $A1; 
20.
		$value.= "</td>\n"; 
21.
		$value.= "<td div id=\"fields\">\n"; 
22.
		$value.= "<input name=\"hiddenA2\" type=\"hidden\" value=\"1\"/>"; 
23.
		$value.= "<input class=\"button\" name=\"A2\" type=\"submit\" value=\"A2\"/>"; 
24.
		//$value.= fields($A2); 
25.
		$value.= "</td>\n"; 
26.
		$value.= "<td div id=\"fields\">\n"; 
27.
		$value.= "<input name=\"hiddenA3\" type=\"hidden\" value=\"1\"/>"; 
28.
		$value.= "<input class=\"button\" name=\"A3\" type=\"submit\" value=\"A3\"/>"; 
29.
		//$value.= fields($A3); 
30.
		$value.= "</td>\n"; 
31.
		$value.= "</tr>\n"; 
32.
		//Erstellung von Spielfeld B1 bis B3 
33.
		$value.= "<tr>\n"; 
34.
		$value.= "<td div id=\"fields\">\n"; 
35.
		$value.= "<input name=\"hiddenB1\" type=\"hidden\" value=\"1\"/>"; 
36.
		$value.= "<input class=\"button\" name=\"B1\" type=\"submit\" value=\"B1\"/>"; 
37.
		//$value.= fields($B1); 
38.
		$value.= "</td>\n"; 
39.
		$value.= "<td div id=\"fields\">\n"; 
40.
		$value.= "<input name=\"hiddenB2\" type=\"hidden\" value=\"1\"/>"; 
41.
		$value.= "<input class=\"button\" name=\"B2\" type=\"submit\" value=\"B2\"/>"; 
42.
		//$value.= fields($B2); 
43.
		$value.= "</td>\n"; 
44.
		$value.= "<td div id=\"fields\">\n"; 
45.
		$value.= "<input name=\"hiddenB3\" type=\"hidden\" value=\"1\"/>"; 
46.
		$value.= "<input class=\"button\" name=\"B3\" type=\"submit\" value=\"B3\"/>"; 
47.
		//$value.= fields($B3); 
48.
		$value.= "</td>\n"; 
49.
		$value.= "</tr>\n"; 
50.
		//Erstellung von Spielfeld C1 bis C3 
51.
		$value.= "<tr>\n"; 
52.
		$value.= "<td div id=\"fields\">\n"; 
53.
		$value.= "<input name=\"hiddenC1\" type=\"hidden\" value=\"1\"/>"; 
54.
		$value.= "<input class=\"button\" name=\"C1\" type=\"submit\" value=\"C1\"/>"; 
55.
		//$value.= fields($C1); 
56.
		$value.= "</td>\n"; 
57.
		$value.= "<td div id=\"fields\">\n"; 
58.
		$value.= "<input name=\"hiddenC2\" type=\"hidden\" value=\"1\"/>"; 
59.
		$value.= "<input class=\"button\" name=\"C2\" type=\"submit\" value=\"C2\"/>"; 
60.
		//$value.= fields($C2); 
61.
		$value.= "</td>\n"; 
62.
		$value.= "<td div id=\"fields\">\n"; 
63.
		$value.= "<input name=\"hiddenC3\" type=\"hidden\" value=\"1\"/>"; 
64.
		$value.= "<input class=\"button\" name=\"C3\" type=\"submit\" value=\"C3\"/>"; 
65.
		//$value.= fields($C3); 
66.
		$value.= "</td>\n"; 
67.
		$value.= "</tr>\n"; 
68.
		 
69.
		return($value); 
70.
71.
	 
72.
 
73.
 
74.
?>
bislang sieht die Ausgabe so aus, dass das Spielfeld generiert wird und oben bei der Funktion bild() wird beim betätigen von Knopf A1, ein rotes Kreuz angezeigt. Das geschieht allerdings nicht da wo es hin sollte.

hier seht ihr mal, wie es aussieht: http://img818.imageshack.us/img818/1897/tttx.jpg
das rote x soll den Button ersetzen aber ich glaube, dass wird etwas komplizierter und ich komme an der Stelle nicht weiter
Bitte warten ..
Mitglied: dempsey
14.10.2010 um 14:31 Uhr
Ich hoffe mal, dass hier nochmal einer reinschaut aber ich bin wieder ein stück weitergekommen aber leider läuft in meiner funktion etwas verkehrt aber ich finde das problem noch nicht so wirklich

01.
 
02.
	function bild($i){ 
03.
		 
04.
		$buttons = array(0 => "A1", 1 => "A2", 2 => "A3", 3 => "B1", 4 => "B2", 5 => "B3", 6 => "C1", 7 => "C2", 8 => "C3"); 
05.
		 
06.
				 
07.
		$value = "<input class=\"button\" name=".$i."\" type=\"submit\" value=".$buttons[$i]."></input>"; 
08.
	 
09.
			if ($_POST['$buttons[$i]'] =='$buttons[$i]'){ 
10.
			 
11.
				$value = "<p><img src=\"x.jpg\" alt=\"Spieler1\"></p>"; 
12.
		}	 
13.
		return ($value);		 
14.
15.
 
16.
 
Ich generiere hier die 9 Buttons und ich möchte mit einem Mausklick auf das jpg zugreifen bzw. das jpg soll den button ersetzen aber irgendwie haut das nicht hin
momentan steht in der ifanweisung if ($_POST['$buttons[$i]'] =='$buttons[$i]') aber ich habe hier nur rumgespielt also nciht direkt meckern

die buttons rufe ich am ende mit
$value.="bild(0);
$vaöie.=bild(1); usw. usw.
auf..
Bitte warten ..
Ähnliche Inhalte
PHP
Copy to clipboard (PHP)
gelöst Frage von chaos2goPHP4 Kommentare

Hey leute , würde gerne bei den generierten Kennwort ein copy to clipboard einfügen nur ich komm da ned ...

PHP
PHP statements mit PHp erzeugen
gelöst Frage von LorderichPHP4 Kommentare

Hallo zusammen, ich habe eine Datei, in welcher per switch und case die Webseiten definiert werden, welche bei Aufruf ...

PHP
PHP - Variable in anderes PHP-Skript mitgeben
gelöst Frage von Jens4everPHP3 Kommentare

Hi zusammen, könnt ihr mir kurz helfen? Ich habe folgendes vor: Ich möchte, dass beim Aufruf von "check1.php" eine ...

PHP
PHP 5.3 nach PHP 5.6 portieren
Frage von nippon-tussiPHP5 Kommentare

Ich habe hier ein altes Projekt, das seit Jahren unter php 5.3 auf einem shared host bei all-inkl läuft. ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 57 MinutenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...