Dostałem na projekt za zadanie napisać grę online multiplayer, i wybrałem taka gierkę: link
Samo działanie gry sobie rozkminiłem (choć jeszcze nie jest skończona) ale mam problem z jej odświeżaniem/ przeładowaniem planszy po kliknięciu, a mianowicie plansza jest ładowana z drugiej strony php po (odświeżeniu po paru sekundach) bądź kliknięciu w bok kwadratu Ajaxem. I wszystko fajnie działa tylko jest taki problem ze po 4-5 kliknięciu kolejnego boku kwadratu ta druga strona php nie odpowiada. Zapytanie trwa ok 20s po czym stronka się wiesza.
Działa to tak ze na drugiej stronie php sa zdarzenia onclick które po zwróceniu odpowiedzi drugiej strony do pierwszej wykonują znowu odświeżenie / przeładowanie planszy funkcja Ajaxa na pierwszej stronie.
Zauważyłem ze właśnie po 4-5 kliknięciu jakoś strona się wiesza, trzeba ja odświeżyć i znowu działa do 5 kliknięć.
Ruchy graczy są zapisywane i zczytywane do bazy MySQL
po uruchomieniu stronki pierwszej raz automatycznie pobiera plansze z drugiej strony
PIERWSZA STRONA:
<div id='tutaj'>strona gra</div> </body>"; ?> <script language='javascript'> var version function initXMLHttpRequest(){ var objHTTP = null if (window.XMLHttpRequest) { //IE7 and FF try{ objHTTP = new XMLHttpRequest() }catch(e){} }else if(window.ActiveXObject){ //IE6 and below if(version){ objHTTP = new ActiveXObject(version) }else{ var xmlhttp = new Array('Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP') for(var i = 0; i < xmlhttp.length; i++){ try{ objHTTP = new ActiveXObject(xmlhttp[i]); if(objHTTP != null){ version = xmlhttp[i] break } }catch(e){} } } } return objHTTP } function alertContents(oXmlHttp) { if (oXmlHttp.readyState == 4) { if (oXmlHttp.status == 200) { document.getElementById('tutaj').innerHTML=oXmlHttp.responseText } else { alert('a') } } } function plansza(klik){ oXmlHttp=initXMLHttpRequest() oXmlHttp.onreadystatechange = function() { alertContents(oXmlHttp) } //oXmlHttp.onabort = function() {alert("oXmlHttp.onabort")}; //oXmlHttp.onerror = function() {alert("oXmlHttp.onerror")}; //oXmlHttp.onload = function() { alert("oXmlHttp.onload")}; //oXmlHttp.onloadstart = function() {alert("oXmlHttp.onloadstart")}; //oXmlHttp.onprogress = function() {alert("oXmlHttp.onprogress")}; tym=klik //encodeURIComponent oXmlHttp.open("POST",'do.php',false) oXmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') oXmlHttp.send(tym) alertContents(oXmlHttp) } var gecik; function gecior(zm){ gecik = zm //t=setTimeout("plansza('gracz=" + gecik + "')",5000) plansza("gracz=" + gecik) } </script>
DRUGA STRONKA:
include('gra.php'); $player1 = "jeden"; $player2 = "dwa"; $plansza_kolumny = 7; $plansza_wiersze = 5; //if ($_POST['x'] != ""){ $nadpis = mysql_query("select count(*) from ruchy where x=".$_POST['x']." and y=".$_POST['y']." and z=".$_POST['z']); if ($nadpisek[0] == 0){ mysql_query("insert into ruchy(x,y,z,nazwa) values(".$_POST['x'].",".$_POST['y'].",".$_POST['z'].",'".$_POST['gracz']."')"); /* tutaj jeszcze nie skonczone //sprawdzanie czy kwadrat zostal zamkniety if ($_POST['z'] == 0){ //mozliwosc zamkniecia kwadratu w pionie if ($_POST['y'] == 0){ $boczek = '1'; $boczek = spr_bok($_POST['x'], 0, 1); $boczek = spr_bok($_POST['x'], 1, 0); $boczek = spr_bok($_POST['x']+1, 0, 1); if ($boczek == '1'){ echo "kwadrat zamkniety"; }else{ echo "kwadrat: ".$boczek; } } }else if ($_POST['z'] == 1){ //mozliwosc zamkniecia kwadratu w poziomie }*/ }else{ } //} //tworzenie pustej tabeli na ruchy for ($i=0; $i <= $plansza_wiersze; $i++){ for ($j=0; $j <= $plansza_kolumny; $j++){ $poz[$i][$j][0] = 0; $poz[$i][$j][1] = 0; $poz[$i][$j][2] = 0; } } //zczytywanie ruchow z bazy do tabeli for ($a=0 ; $a<get_rows(ruchy); $a++){ $poz[$odp[1]][$odp[0]][$odp[2]] = $odp[3]; } //wypisywanie planszy for ($i = 0; $i<$plansza_wiersze; $i++ ){ //rzad poziomy for ($j = 0; $j<$plansza_kolumny; $j++ ){ if ($poz[$i][$j][0] != '0'){ if($poz[$i][$j][0] == $player1){ }else if($poz[$i][$j][0] == $player2){ } }else{ echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"' onmousemove='this.style.backgroundColor=\"#AAAAAA\"' onmouseover='this.style.backgroundColor=\"#AAAAAA\"' onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$j."&y=".$i."&z=0')\"> <img src='gfx/blue_h.png'></td>"; } } //rzad pionowy for ($j = 0; $j<$plansza_kolumny; $j++ ){ //pionowe boki if ($poz[$i][$j][1] != '0'){ if ($poz[$i][$j][1] == $player1){ }else if($poz[$i][$j][1] == $player2){ } }else{ echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"' onmousemove='this.style.backgroundColor=\"#AAAAAA\"' onmouseover='this.style.backgroundColor=\"#AAAAAA\"' onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$j."&y=".$i."&z=1')\"> <img src='gfx/blue_v.png'></td>"; } //kwadraty if ($poz[$i][$j][2] != '0'){ if ($poz[$i][$j][2] == $player1){ }else if($poz[$i][$j][2] == $player2){ } }else{ } } //ostatni pionowy bok if ($poz[$i][$j][1] != '0'){ if ($poz[$i][$j][1] == $player1){ }else if ($poz[$i][$j][1] == $player2){ } }else{ echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"' onmousemove='this.style.backgroundColor=\"#AAAAAA\"' onmouseover='this.style.backgroundColor=\"#AAAAAA\"' onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$j."&y=".$i."&z=1')\"> <img src='gfx/blue_v.png'></td>"; } } //ostatni poziomy bok for ($i = 0; $i<$plansza_kolumny; $i++ ){ if ($poz[$plansza_wiersze][$i][0] != '0'){ if ($poz[$plansza_wiersze][$i][0] == $player1){ }else if ($poz[$plansza_wiersze][$i][0] == $player2){ } }else{ echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"' onmousemove='this.style.backgroundColor=\"#AAAAAA\"' onmouseover='this.style.backgroundColor=\"#AAAAAA\"' onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$i."&y=".$plansza_wiersze."&z=0')\"> <img src='gfx/blue_h.png'></td>"; } } //koniec wypisywania ?>
Wiem ze trochę zagmatwane ale mam nadzieje ze ktoś pomoże
pozdro