Originariamente inviato da eiyen
bisogna vedere com'è fatto il "refresh"... ci sono dei reload? usi ajax? o cos'altro?
Utilizzo una funzione js che richiama un codice php che scrive <img src = "game.php"></img> utilizzando in game.php delle variabili per dirgli la posizione degli oggetti e altre cose. La funzione js fa un refresh di un div in cui viene scritto il risultato del codice php e questo refresh è sempre attuato da js con un tempo di 100 ms
Poi utilizzo degli eventi che se premuto un tasto attiva la funzione di refresh inviandogli il tasto premuto, è un po complicato da scrivere
Ecco il codice dell'index:
Codice PHP:
<?php $connessione = mysql_connect("localhost", "AndreWhite", "shadow69"); mysql_select_db("test",$connessione); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"> <head> <Style type="text/css"> #schermo { position: absolute; left: 100px; top: 50px; width: 1000px; height: 600px; border: 1px solid; } </Style> <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js'></script> <script type="text/javascript"> document.onkeydown = function(evt) { evt = evt || window.event; var code = evt.keyCode; schermo("key=" + code); }; function schermo(dati) { $.ajax({ method: 'get', // tipo di richiesta HTTP url : 'insert.php', // percorso allo script lato server data: dati, // parametro opzionale, per impostare la query string da inviare dataType : 'html', // parametro opzionale, formato dei dati (xml, json, script, o html) success: function (data) { // istruzioni richiamate al termine della richiesta document.getElementById("schermo").innerHTML=data; // inserisco i dati restituiti nel DIV } }); } $(function() { setInterval("schermo()", 100); }); </script> </head> <body> <div id = "schermo"></div> </body> </html> <?php mysql_close($connessione); ?>
Poi ho scritto la funzione php che calcola e imposta l'immagine:
Codice PHP:
<?php $connessione = mysql_connect("localhost", "AndreWhite", "shadow69"); mysql_select_db("test",$connessione); if(isset($_GET['key'])) { $key = $_GET['key']; if(isset($_COOKIE['time'])) $time = $_COOKIE['time']; else $time = 0; } else { $key = ""; if(isset($_COOKIE['time'])) $time = $_COOKIE['time'] + 1; else $time = 0; } if(isset($_COOKIE['x'])) $x = $_COOKIE['x']; else $x = 0; if(isset($_COOKIE['y'])) $y = $_COOKIE['y']; else $y = 0; if(($key=="83")&&($y<600)) $y = $y + 5; elseif(($key=="87")&&($y>=0)) $y = $y - 5; elseif(($key=="68")&&($x<1000)) $x = $x + 5; elseif(($key=="65")&&($x>=0)) $x = $x - 5; setcookie("time", $time, time() + 7200, "/", "localhost", 0); setcookie("x", $x, time() + 7200, "/", "localhost", 0); setcookie("y", $y, time() + 7200, "/", "localhost", 0); echo "<img src = \"game.php?key=$key&time=$time&x=$x&y=$y\"></img>"; mysql_close($connessione); ?>
E infine l'immagine in php:
Codice PHP:
<?php $key = $_GET['key']; $time = $_GET['time']; $x = $_GET['x']; $y = $_GET['y']; $resto = $time%2; header("Content-Type: image/jpeg"); $ima = imagecreate(1000, 600); $nero = imagecolorallocate ($ima, 0, 0, 0); $blu = imagecolorallocate ($ima, 0, 0, 255); $verde = imagecolorallocate ($ima, 0, 255, 0); $rosso = imagecolorallocate ($ima, 255, 0, 0); $bianco = imagecolorallocate ($ima, 255, 255, 255); imagefill($ima, 0, 0, $bianco); if($resto==0) $color = $rosso; else $color = $blu; imagefilledarc ($ima, $x, $y, 40, 40, 0, 360, $color, IMG_ARC_PIE); imagejpeg($ima,NULL,100); imagedestroy($ima); ?>
Il risultato è semplice, se premo i tasti wasd lui disegna un cerchio che si sposta, poi c'è una funzione di refresh che è una prova per vedere il tempo di frame che posso mettere e in quel tempo il cerchio lampeggia da rosso a blu. Il problema sta solo nel tempo di costruzione del disegno