Etusivulle
Sivun PHP-lähdekoodin näyttäminen
Alla on sivun nespelivisa.php PHP-lähdekoodi.
<?PHP include ("_funktiot.php"); ?>
<?PHP NaytaSivunAlku ("NES-pelivisa"); ?>
<?PHP
function LuoTiedostonimi($pelinnimi) {
// Pelin nimi kuvan tiedostonimeksi
return "_naytakuvazipista.php?kuva=nespelivisa/" .
SiistiMerkkijono($pelinnimi, "abcdefghijklmnopqrstuvwxyz0123456789") . ".png";
}
function SiistiKayttajanVastaus($vastaus) {
// Pelin nimi muotoon, jossa oikeat vastausvaihtoehdot on tallennettu
return SiistiMerkkijono($vastaus, "abcdefghijklmnopqrstuvwxyz");
}
function SiistiMerkkijono($sisaan, $sallitutmerkit) {
// Pieniksi kirjaimiksi, poistetaan muut kuin sallitut merkit.
$sisaan = strtolower($sisaan);
$ulos = "";
for ($i = 0; $i < strlen($sisaan); $i++) {
$merkki = substr($sisaan, $i, 1);
if (substr_count($sallitutmerkit, $merkki) > 0) $ulos .= $merkki;
}
return $ulos;
}
$kysymyksia = 20;
// Kustakin pelistä: koko nimi, hyväksytyt vastaukset.
// Kukin hyväksytty vastaus pienillä kirjaimilla. Ei muita merkkejä, ei välilyöntejäkään.
// Vaihtoehdot erotetaan toisistaan välilyönneillä.
$pelientiedot = array(
"A Boy and his Blob", "boyandhisblob aboyandhisblob",
"Adventure Island 2", "adventureisland",
"Adventures in the Magic Kingdom", "adventuresinthemagickingdom adventuresinmagickingdom",
"Adventures of Bayou Billy", "adventuresofbayoubilly bayoubilly",
"Adventures of Lolo", "adventuresoflolo lolo",
"Anticipation", "anticipation",
"Asterix", "asterix",
"Batman", "batman",
"Battletoads", "battletoads",
"Bigfoot", "bigfoot",
"Bionic Commando", "bioniccommando",
"Blades of Steel", "bladesofsteel",
"Blaster Master", "blastermaster",
"Bubble Bobble", "bubblebobble",
"Bucky O'Hare", "buckyohare",
"Castlevania", "castlevania",
"Castlevania 2", "castlevania simonsquest castlevaniasimonsquest",
"Cheetahmen 2", "cheetahmen",
"Chip and Dale", "chipanddale chipndale chipdale tikujataku tikutaku",
"Chip and Dale 2", "chipanddale chipndale chipdale tikujataku tikutaku",
"Cobra Triangle", "cobratriangle",
"Contra / Probotector", "contra probotector",
"Darkwing Duck", "darkwingduck varjoankka",
"Days of Thunder", "daysofthunder",
"Double Dragon 2", "doubledragon",
"Dr. Mario", "drmario doctormario",
"Duck Hunt", "duckhunt",
"Duck Tales", "ducktales ankronikka",
"Duck Tales 2", "ducktales ankronikka",
"Excitebike", "excitebike",
"Faxanadu", "faxanadu",
"Fighting Golf", "fightinggolf leetrevinosfightinggolf",
"Flintstones: Rescue of Dino and Hoppy", "flintstones kivisetjasoraset",
"Gauntlet 2", "gauntlet",
"Gold Medal Challenge '92", "goldmedalchallenge",
"Golf", "golf",
"Gradius", "gradius",
"Gremlins 2", "gremlins",
"Gun Smoke", "gunsmoke",
"Hogan's Alley", "hogansalley",
"Ice Climber", "iceclimber",
"Ice Hockey", "icehockey",
"Jack Nicklaus' Golf", "jacknicklausgolf jacknicklaussgolf",
"Journey to Silius", "journeytosilius",
"Jurassic Park", "jurassicpark",
"Kabuki Quantum Fighter", "kabukiquantumfighter kabuki",
"Kirby's Adventure", "kirbysadventure kirby",
"Kung Fu", "kungfu",
"Legend of Zelda", "zelda",
"Lemmings", "lemmings",
"Life Force", "lifeforce lifeforcesalamander",
"Little Nemo: The Dream Master", "littlenemo littlenemodreammaster littlenemothedreammaster",
"Marble Madness", "marblemadness",
"Mario and Yoshi / Yoshi", "marioandyoshi marionyoshi marioyoshi yoshi",
"Mario Bros", "mariobros mariobrothers",
"Megaman 2", "megaman",
"Metal Gear", "metalgear",
"Metroid", "metroid",
"Micro Machines", "micromachines",
"Mission: Impossible", "missionimpossible",
"NES Open Tournament Golf", "nesopen nesopentournamentgolf",
"New Zealand Story / Kiwi Kraze", "newzealandstory kiwikraze",
"Ninja Gaiden / Shadow Warriors", "ninjagaiden shadowwarriors",
"Nintendo World Cup", "nintendoworldcup",
"Pinball", "pinball",
"Punch-Out", "punchout",
"Rad Racer", "radracer",
"RC Pro-Am", "rcproam",
"River City Ransom / Street Gangs", "rivercityransom streetgangs",
"Road Fighter", "roadfighter",
"Rygar", "rygar",
"Section Z", "sectionz",
"Shadowgate", "shadowgate",
"Side Pocket", "sidepocket",
"Simpsons: Bart vs. Space Mutants", "simpsons simpsonit",
"Simpsons: Bart vs. World", "simpsons simpsonit",
"Skate or Die", "skateordie",
"Slalom", "slalom",
"Smurfs", "smurfs smurffit",
"Snake Rattle N Roll", "snakerattlenroll snakerattleandroll",
"Solar Jetman", "solarjetman",
"Solomon's Key", "solomonskey",
"Solomon's Key 2 / Fire and Ice", "solomonskey fireandice firenice fireice",
"Star Force", "starforce",
"Startropics", "startropics",
"Super Mario Bros", "smb supermario supermariobros supermariobrothers",
"Super Mario Bros 2", "smb supermario supermariobros supermariobrothers",
"Super Mario Bros 3", "smb supermario supermariobros supermariobrothers",
"Super Off-Road", "superoffroad ivanironmanssuperoffroad",
"Super Turrican", "superturrican turrican",
"TaleSpin", "talespin pilipalipilotit",
"Teenage Mutant Ninja/Hero Turtles", "turtles teenagemutantninjaturtles teenagemutantheroturtles tmnt tmht",
"Teenage Mutant Ninja/Hero Turtles 2", "turtles teenagemutantninjaturtles teenagemutantheroturtles tmnt tmht",
"Teenage Mutant Ninja/Hero Turtles 3", "turtles teenagemutantninjaturtles teenagemutantheroturtles tmnt tmht",
"Teenage Mutant Ninja/Hero Turtles: Tournament Fighters", "turtles teenagemutantninjaturtles teenagemutantheroturtles tmnt tmht",
"Tennis", "tennis",
"Tetris", "tetris",
"Tiger-Heli", "tigerheli",
"Tiny Toon Adventures", "tinytoonadventures",
"Tom and Jerry", "tomandjerry tomnjerry tomjerry",
"Top Gun", "topgun",
"Top Gun 2", "topgun",
"Total Recall", "totalrecall",
"Track and Field", "trackandfield tracknfield trackfield",
"Track and Field 2", "trackandfield tracknfield trackfield",
"Trick Shooting", "trickshooting barkerbillstrickshooting",
"Trog", "trog",
"Ufouria", "ufouria",
"Vice: Project Doom", "viceprojectdoom",
"Wild Gunman", "wildgunman",
"Wizards and Warriors 3", "wizardsandwarriors wizardswarriors",
"World Wrestling", "worldwrestling tecmoworldwrestling",
"Yoshi's Cookie", "yoshiscookie",
"Zelda 2: Adventure of Link", "zelda",
);
$peleja = count($pelientiedot) / 2;
if ($_POST["oikeatvastaukset"] == "") {
// Näytetään kyselylomake
?>
Tässä on <?PHP echo $kysymyksia; ?> kuvakaappausta NES-peleistä, jotka pitää tunnistaa.
Kuvat on valittu satunnaisesti <?PHP echo $peleja; ?> pelin valikoimasta.
<P>
Jos peli on osa sarjaa, kirjoita vain <B>sarjan nimi</B>. (Ei esim. "SMB 3", vaan "SMB".) Ohjelma
tunnistaa yleisimmät kirjoitusasut. Kirjainkoko ja välimerkit eivät ole tärkeitä.
<P>
<FORM ACTION="nespelivisa.php" METHOD="post">
<?PHP
// Arvotaan pelit. Taulukossa on lukumuotoisia viittauksia pelitietotaulukkoon.
$kysyttavat = array_rand(range(0, $peleja - 1), $kysymyksia);
shuffle ($kysyttavat);
// Tulostetaan arvotut pelit piilokenttään
$oikeatvastaukset = "";
foreach ($kysyttavat as $kysyttava) {
$oikeatvastaukset .= $kysyttava . "|";
}
$oikeatvastaukset = substr($oikeatvastaukset, 0, -1);
echo "<INPUT TYPE=\"hidden\" NAME=\"oikeatvastaukset\" VALUE=\"" . $oikeatvastaukset . "\">\r\n\r\n";
// Tulostetaan kysymykset
echo "<TABLE>\r\n";
for ($i = 0; $i < $kysymyksia; $i++) {
$tiednimi = LuoTiedostonimi($pelientiedot[$kysyttavat[$i] * 2]);
echo "<TR>\r\n";
echo "<TD><IMG SRC=\"" . $tiednimi . "\"></TD>\r\n";
echo "<TD STYLE=\"vertical-align: bottom;\">";
echo "Pelin nimi: <INPUT TYPE=\"text\" NAME=\"vastaus" . $i . "\">";
echo "</TD>\r\n";
echo "</TR>\r\n";
}
echo "</TABLE>";
?>
<P>
<INPUT TYPE="submit" VALUE="Tarkista vastaukset">
</FORM>
<?PHP
} else {
// Näytetään tulokset
// Haetaan oikeat vastaukset
$temp = $_POST["oikeatvastaukset"];
$oikeatvastaukset = explode("|", $temp);
// Haetaan käyttäjän vastaukset
$kayttajanvastaukset = array();
for ($i = 0; $i < $kysymyksia; $i++) {
$vastaus = stripslashes($_POST["vastaus" . $i]);
if ($vastaus == "") $vastaus = "-";
$kayttajanvastaukset[] = $vastaus;
}
// Tarkistetaan käyttäjän vastaukset
$oikeitavastauksia = 0;
$ovatkooikein = array();
for ($i = 0; $i < $kysymyksia; $i++) {
$oikeat = " " . $pelientiedot[$oikeatvastaukset[$i] * 2 + 1] . " ";
$kayttajan = " " . SiistiKayttajanvastaus($kayttajanvastaukset[$i]) . " ";
if (substr_count($oikeat, $kayttajan) > 0) $tulos = true; else $tulos = false;
if ($tulos == true) $oikeitavastauksia++;
$ovatkooikein[$i] = $tulos;
}
// Tulostus
echo "Tulokset:\r\n";
echo "<P>\r\n";
echo "<TABLE>\r\n";
for ($i = 0; $i < $kysymyksia; $i++) {
$tiednimi = LuoTiedostonimi($pelientiedot[$oikeatvastaukset[$i] * 2]);
echo "<TR>\r\n";
echo "<TD><IMG SRC=\"" . $tiednimi . "\"></TD>\r\n";
echo "<TD>";
$oikeanimi = $pelientiedot[$oikeatvastaukset[$i] * 2];
if ($ovatkooikein[$i]) {
echo "<FONT COLOR=\"#008000\"><B>Oikein.</B></FONT>";
echo "<P>";
echo "Peli: " . $oikeanimi . ".";
} else {
echo "<FONT COLOR=\"#FF0000\"><B>Väärin.</B></FONT>";
echo "<P>";
echo "Vastauksesi: " . htmlspecialchars($kayttajanvastaukset[$i]) . ".<BR>";
echo "Peli oikeasti: " . $oikeanimi . ".";
}
echo "</TD>\r\n";
echo "</TR>\r\n";
}
echo "</TABLE>\r\n";
echo "<P>\r\n";
echo "Oikein: " . $oikeitavastauksia . "/" . $kysymyksia . " kpl.\r\n";
echo "<P>\r\n";
echo "<A HREF=\"nespelivisa.php\">Aloita alusta</A>";
}
?>
<P>
<A HREF="_naytaphplahdekoodi.php?sivu=nespelivisa.php">Tämän ohjelman PHP-lähdekoodi</A>
<?PHP NaytaSivunLoppu (); ?>
Takaisin sivulle nespelivisa.php
Etusivulle