Witam,
Dostałem na projekt za zadanie napisać grę online multiplayer, i wybrałem taka gierkę:
linkSamo 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:
echo "<body onload=\"gecior('".$_GET['gr']."')\"> <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{
echo "juz jest ten ruch"; }
//}
//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
echo "<table cellspacing='0'>"; for ($i = 0; $i<$plansza_wiersze; $i++ ){
//rzad poziomy
for ($j = 0; $j<$plansza_kolumny; $j++ ){
echo "<td><img src='gfx/black_dot.png'></td>"; if ($poz[$i][$j][0] != '0'){
if($poz[$i][$j][0] == $player1){
echo "<td><img src='gfx/red_h.png'></td>"; }else if($poz[$i][$j][0] == $player2){
echo "<td><img src='gfx/green_h.png'></td>"; }
}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>";
}
}
echo "<td><img src='gfx/black_dot.png'></td> </tr>"; //rzad pionowy
for ($j = 0; $j<$plansza_kolumny; $j++ ){
//pionowe boki
if ($poz[$i][$j][1] != '0'){
if ($poz[$i][$j][1] == $player1){
echo "<td><img src='gfx/red_v.png'></td>"; }else if($poz[$i][$j][1] == $player2){
echo "<td><img src='gfx/green_v.png'></td>"; }
}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){
echo "<td><img src='gfx/red_dot.png'></td>"; }else if($poz[$i][$j][2] == $player2){
echo "<td><img src='gfx/blue_dot.png'></td>"; }
}else{
echo "<td><img src='gfx/green_dot.png'></td>"; }
}
//ostatni pionowy bok
if ($poz[$i][$j][1] != '0'){
if ($poz[$i][$j][1] == $player1){
echo "<td><img src='gfx/red_v.png'></td>"; }else if ($poz[$i][$j][1] == $player2){
echo "<td><img src='gfx/green_v.png'></td>"; }
}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++ ){
echo "<td><img src='gfx/black_dot.png'></td>"; if ($poz[$plansza_wiersze][$i][0] != '0'){
if ($poz[$plansza_wiersze][$i][0] == $player1){
echo "<td><img src='gfx/red_h.png'></td>"; }else if ($poz[$plansza_wiersze][$i][0] == $player2){
echo "<td><img src='gfx/green_h.png'></td>"; }
}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>";
}
}
echo "<td><img src='gfx/black_dot.png'></td> </tr>"; //koniec wypisywania
?>
Wiem ze trochę zagmatwane ale mam nadzieje ze ktoś pomoże
pozdro