Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ristinollaa netissä :)

PetriKeckman [04.11.2023 23:35:31]

#

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";
}
?>

TapaniS [07.11.2023 14:46:45]

#

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 ..

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta