Tulkaa joku pelaan nettiin nollaristiä? Tai tulkaa vaikka kaikki! Ohjelma tietysti vuorottelee sitä, kumman laittovuoro. Olen laittanut jo ristin. Tietty 5 peräkkäin voittaa ja voittajasta on itse pidettävä kirjaa - ohjelma ei sitä huomaa. Sivu päivittyy 5 sekunnin välein ja on sikäli huonosti toteutettu verkkopeli, mutta toimii.
https://www.petke.info/nollaristi/
Koodissa ristinolla pelin tilanne on talletettuna tiedostoon ristinolla.txt ja sen ensimmäinen merkki kertoo kumman laittovuoro on. En ala sen kummemmin koodeja selostamaan enkä laita kaikkia näkyville, ellei joku kysy ja ole kiinnostunut.
index.php:
<html> <body> <button onclick="aloitaUusiPeli()">Aloita uusi peli</button> <script> function aloitaUusiPeli() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'tiedosto.php?action=alustaUusiPeli', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var vastaus = xhr.responseText; console.log(vastaus); location.reload(); // Lataa sivu uudelleen pelin aloittamisen jälkeen } }; xhr.send(); } function solunKlikkaus(rivi, sarake) { // Kutsu PHP-ohjelmaa AJAX-pyynnöllä ja lähetä parametrit rivi ja sarake var xhr = new XMLHttpRequest(); var url = 'php-ohjelma.php?rivi=' + rivi + '&sarake=' + sarake; xhr.open('GET', url, true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // Tee jotain vastauksen kanssa, kuten päivitä sivu tai näytä vastauksen sisältö var vastaus = xhr.responseText; location.reload(); } location.reload(); }; xhr.send(); } setTimeout(function(){ window.location.reload(); }, 5000); </script> <?php function tulosta($merkit) { $tdstomerkit=file_get_contents('ristinolla.txt'); $siirtovuoro=substr($tdstomerkit,0,1); echo $siirtovuoro . ":n laittovuoro"; echo ("<table border='1'>"); //echo $merkit; $indeksi=1; //tulostaa ristinollataulukon for ($rivi=1; $rivi<=30; $rivi++) { echo ('<tr>'); for ($sara=1; $sara<=30; $sara++) { echo '<td>'; switch (substr($merkit,$indeksi,1)) { case 't': //ruutu on tyhja echo "<img src='tyhja.gif' onclick='solunKlikkaus($rivi, $sara)'>"; break; case '0': echo "<img src='0.jpg'>"; break; case 'X': echo "<img src='1.jpg'>"; break; } $indeksi=$indeksi+1; echo '</td>'; } echo ('</tr>'); } echo ('</table>'); } if (!file_exists("ristinolla.txt")) { //jos tiedostoa ei ole, niin tehdään se ... $myfile = fopen("ristinolla.txt", "w"); $merkit='X'; //tiedosoton ensimmäinen merkki kertoo kumman laitto vuoro for ($rivi=1; $rivi<=30; $rivi++) { for ($sara=1; $sara<=30; $sara++) { $merkit=$merkit . 't'; //... ja alustetaan 't' niinkuin tyhjä ruuduilla } } file_put_contents("ristinolla.txt",$merkit); } else { $myfile = fopen("ristinolla.txt", "a"); } $merkit = file_get_contents('ristinolla.txt'); tulosta($merkit); ?> </body> </html>
php-ohjelma.php:
<?php if (isset($_GET['rivi']) && isset($_GET['sarake'])) { $rivi = $_GET['rivi']; $sarake = $_GET['sarake']; $tdstomerkit=file_get_contents('ristinolla.txt'); $siirtovuoro=substr($tdstomerkit,0,1); //echo $siirtovuoro; //echo $ind; // Tässä voit suorittaa haluamasi toimet parametrien perusteella $ind=($rivi-1)*30+$sarake; //viittaa merkkijonon indeksiin, mitä painettiin if ($siirtovuoro=='0') { $tdstomerkit="X" . substr($tdstomerkit,1,$ind-1) . "0" . substr($tdstomerkit,$ind+1); } else { $tdstomerkit="0" . substr($tdstomerkit,1,$ind-1) . "X" . substr($tdstomerkit,$ind+1); } file_put_contents("ristinolla.txt",$tdstomerkit); // Lähetä vastaus takaisin, esimerkiksi JSON-muodossa location.reload(); $vastaus = array('rivi' => $rivi, 'sarake' => $sarake, 'viesti' => 'Tämä on vastaus'); echo json_encode($vastaus); } else { // Käsittele virhetilanne, jos parametrit puuttuvat echo "Virhe: Parametrit puuttuvat"; } ?>
Toi ei oikein toimi. Ristejä ja palloja tulee vaikka 10 pituinen jono! Idea on kai, että jos on 5 jonossa, niin peli päättyy. Nyt se vaan jatkuu ..
Aihe on jo aika vanha, joten et voi enää vastata siihen.