php js ajax z kanvasem

Odpowiedz Nowy wątek
2015-07-11 14:17
0

W programowaniu webowym jestem nowy. Chcę zrobić grę przeglądarkową, dla wielu graczy. Pomyślałem że wpierw zrobię test, w którym
kilka osób będzie mogło zaznaczać kółka na canvasie i nie działa oto kod

<html>
  <head>

    <title>AJAX TEST 1</title>

  </head>
  <body onLoad='process();'>
    <canvas id="canvas" width="500" height="500">
      Twoja przeglądarka nie obsługuje elementu canvas standardu HTML5.
    </canvas>
    <br/>
    <script type = "text/javascript">
    //ajj=new XMLHttpRequest();
    var canwas = document.getElementById("canvas");
    var ctx = canwas.getContext('2d');
    var cw=500;
    var ch=500;
    var pw=cw/4;
    var ph=cw/4;
    var tablica;
       xmlhttp=new XMLHttpRequest();

    function drawkolko(x,y,b){
    if(b)
    ctx.strokeStyle = "rgb(200, 0, 0)";
    else 
    ctx.strokeStyle = "rgb(255, 255, 255)";

      ctx.arc(x*pw+pw/2, y*ph+ph/2, 50, 0, Math.PI * 2, true);
      ctx.stroke();

    }
        xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        tablica=xmlhttp.responseText;

        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
            {
                drawkulko(i,j,tablica[i*4+j];
            }

    }
    function klik(ev){
    var mx;
        var my;
        if ( ev.layerX || ev.layerX == 0) { // Firefox
          mx = ev.layerX;
          my = ev.layerY;
        } else if (ev.offsetX || ev.offsetX == 0) { // Opera
          mx = ev.offsetX;
          my = ev.offsetY;
        }
        var x= Math.floor(mx/pw);
        var y= Math.floor(my/ph);

  xmlhttp.open("GET","pehap.php?x="+x+"?y="+y,true);
  xmlhttp.send();

    }

     function process(){
  xmlhttp.open("GET","pehap.php?x="+"-1"+"?y="+"-1",true);
  xmlhttp.send(); 
  setTimeout('process()', 500);

}

    </script>    
  </body>
</html>

oto plik pehap.php

<?php
$x = $_REQUEST['x'];
$y = $_REQUEST['y'];

//get content of textfile
$filename = "tablica.txt";
$tablica = file($filename);
if(x== -1) echo"$tablica";
else{
if(tablica[y*4+x]==1)tablica[y*4+x]=0;
else
tablica[y*4+x]=1;

$insertvote = tablica;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
}
?> 

co mam robić będę wdzięczny za pomoc

Pozostało 580 znaków

2015-07-11 14:26
0

Jakieś błędy w konsoli przeglądarki ?
PS. używanie plików w tym celu to pomysł fatalny, a żądania ajaksowe do gier real time z wieloma graczami tym bardziej. Poczytaj lepiej o web socketach.

edytowany 1x, ostatnio: Tumeg, 2015-07-11 14:26

Pozostało 580 znaków

2015-07-11 14:35
0

Jednak czy web sockety nie komunikują się między komputerami klientów a co jeśli to jest gra trochę w stylu MMO i dane muszą współpracować z serwerem

Pozostało 580 znaków

2015-07-11 15:13
0

WebSocket is designed to be implemented in web browsers and web servers, but it can be used by any client or server application.

https://en.wikipedia.org/wiki/WebSocket

Pozostało 580 znaków

2015-07-11 18:24
0

Powiedzcie mi proszę czy kiedy używam ajax to nie mogę używać canvasa bo już 2 raz mam tak że nie działa mi canvas nawet jeśli coś niezależnie rysuje

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0