Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Reaaliaikainen Pong-peli

qalle [18.09.2010 08:57:31]

#

Peli, jossa pallo pomppii ruudulla. Pelaajan täytyy ohjata mailaa vaakasuunnassa. Jos pallo osuu ruudun alalaitaan, peli päättyy. Peli lukee käyttäjän syötteen tiedoston kautta.

Peli toimii vain omalle koneelle asennetulla PHP:llä, jota käytetään komennolla "php tiedostonimi.php", ei palvelimella. Olen testannut ohjelman Windows-koneella.

Kuvakaappaus, jossa peli on käynnissä:
http://img412.imageshack.us/img412/6818/pong.png

Pelaamisohjeet:
- Tallenna lähdekoodi kiintolevylle nimellä "pong.php".
- Avaa kolme komentorivi-ikkunaa (esim. cmd-käskyllä).
- Mene kaikissa ikkunoissa hakemistoon, jossa peli on.
- Kirjoita toisessa ikkunassa "echo 0 > pong.txt". (Käsky, joka saa pallon vaihtamaan suuntaa vasemmalle.)
- Kirjoita kolmannessa ikkunassa "echo 1 > pong.txt". (Käsky, joka saa pallon vaihtamaan suuntaa oikealle.)
- Kirjoita ensimmäisessä ikkunassa "php pong.php".
- Napsauta nopeasti toista ja kolmatta ikkunaa.
- Maila liikkuu aluksi oikealle. Aina, kun tahdot vaihtaa sen suuntaa, paina alt + tab, ylänuoli, enter. (Mailaa ei voi pysäyttää.)

pong.php

<?PHP

$pallox = 1;   // Pallon sijainti vaakasuunnassa
$palloy = 1;   // Pallon sijainti pystysuunnassa
$vaakasuunta = 1;   // -1 = vasemmalle, 1 = oikealle
$pystysuunta = 1;   // -1 = ylös, 1 = alas
$mailax = 10;   // Mailan sijainti vaakasuunnassa
$mailaleveys = 10;

while (true) {
	// Pallon törmäystarkistus
	if ($pallox == 0 || $pallox == 78) $vaakasuunta = -$vaakasuunta;
	if ($palloy == 0) $pystysuunta = -$pystysuunta;
	if ($palloy == 23) {
		if ($pallox >= $mailax && $pallox < $mailax + $mailaleveys) {
			// Osui mailaan
			$pystysuunta = -$pystysuunta;
		} else {
			// Game over
			for ($i = 0; $i < 30; $i++) echo "\r\n";
			echo "Game over!";
			die();
		}
	}

	// Pallon liikutus
	$pallox += $vaakasuunta;
	$palloy += $pystysuunta;

	// Näytön tyhjennys
	for ($i = 0; $i < 30; $i++) echo "\r\n";

	// Pallon piirto
	echo str_repeat(" ", $pallox) . "*";

	// Mailan piirto
	for ($i = 0; $i < 24 - $palloy; $i++) echo "\r\n";
	echo str_repeat(" ", $mailax) . str_repeat("=", $mailaleveys);

	// Ohjauksen luku
	$tiedosto = file("pong.txt");
	$kasky = trim($tiedosto[0]);
	if ($kasky == 0 && $mailax >= 2) $mailax -= 2;
	if ($kasky == 1 && $mailax <= 77 - $mailaleveys) $mailax += 2;

	// Viive
	usleep (200000);
}

?>

Vastaus

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

Tietoa sivustosta