peli ei ole itse tekemäni, vaan se löytyy myös täältä ohjelmointiputkasta kai.
yritin liittää siihen ennätylistaa, mutta se siis failaa kun tiedostoon kirjoittaessa pistää aina rahamääräksi sen oletusrahamäärän, 20e.
neuvoja / korjauksia(?)
<?php session_start(); $rahat = $_POST['rahat']; $panos = $_POST['panos']; $rulla0= $_POST['rulla0']; $rulla1= $_POST['rulla1']; $rulla2= $_POST['rulla2']; if(!isset($rahat)) { $rahat = 20; } $rivi = explode("|",$_POST['rullat']); if ($rulla0 == "" && $rulla1 == "" && $rulla2 == "") {$lukitus = "false";} if (isset($_GET[peli])) { if($rahat==0) {exit("Rahat loppuivat, <a href=jokeri.php>aloita alusta</a>!");} if ($panos == "--VALITSE--") {exit("Panos olisi hyvä valita!");} if($panos>$rahat) { exit("Liian iso panos, rahat ei riitä!"); } } $a = "jokeri"; $b = "a"; $c = "k"; $d = "q"; $e = "j"; $f = "10"; $rulla[0] = Array($b,$f,$c,$a,$f,$d,$e,$b,$f,$c,$e,$d,$f,$d,$e,$a,$f,$e,$d,$e,$f,$d,$e,$c); $rulla[1] = Array($e,$f,$c,$d,$b,$f,$e,$a,$f,$c,$f,$d,$e,$b,$f,$d,$e,$d,$f,$a,$e,$b,$f,$d); $rulla[2] = Array($f,$b,$e,$b,$f,$c,$e,$d,$f,$c,$e,$a,$f,$d,$c,$e,$b,$f,$d,$e,$d,$f,$a,$e); if ($rulla0 != 1) {$rivi[0] = $rulla[0][rand(0,23)];} if ($rulla1 != 1) {$rivi[1] = $rulla[1][rand(0,23)];} if ($rulla2 != 1) {$rivi[2] = $rulla[2][rand(0,23)];} if (isset($_GET[peli])) { if($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "a") { $voitto = $panos*20; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "k") { $voitto = $panos*20; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "q") { $voitto = $panos*10; } elseif($rivi[0] == $rivi[1] && $rivi[0] == $rivi[2] && $rivi[1] == $rivi[2]) { $voitto = $panos*5; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "j") { $voitto = $panos*4; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "10") { $voitto = $panos*4; } else { $havisit = $panos; } for($i=0;$i<3;$i++) { if($rivi[$i] == $a) { $voitto = $panos*2; } } $rahat-=$panos; $rahat+=$voitto; } ?> <form method="post" action="?peli=1"> <table border="0"><tr> <? for($i=0;$i<3;$i++) { echo "<td><img src=\"$rivi[$i].png\"></td>\n"; } ?> </tr> <? for($i=0;$i<3;$i++) { if ($lukitus == "false" && !isset($voitto) && isset($_GET['peli'])) { echo "<td><input type=\"checkbox\" name=\"rulla" . $i . "\" value=\"1\">"; } else { echo "<td><input type=\"checkbox\" name=\"rulla" . $i . "\" value=\"1\" disabled=\"disabled\">"; } echo "<small>lukitse</small></td>\n"; } ?> </tr> </table> <br> <? echo "<input type=\"hidden\" value=\"$rahat\" name=\"rahat\">\n"; echo "<input type=\"hidden\" value=\"$rivi[0]|$rivi[1]|$rivi[2]\" name=\"rullat\">\n"; echo "Panos: <select name=\"panos\">\n"; if(isset($panos)) { echo "<option value=\"$panos\">$panos</option>\n"; } else { echo "<option value=\"--VALITSE--\">--VALITSE--</option>\n"; } ?> <option value="0.20">0.20</option> <option value="0.40">0.40</option> <option value="0.60">0.60</option> <option value="0.80">0.80</option> <option value="1.00">1.00</option> <option value="2.00">2.00</option> <option value="3.00">3.00</option> </select> <br> Sinulla on rahaa: <? echo $rahat; ?>€<br> <a href="?savemoneys=true">Tallenna ennätyslistalle</a><br><br> <br> <input type="submit" value="Pelaa"> <br> <? //Tulostetaan voitto/häviö if (isset($_GET['peli'])) { if(isset($voitto)) { echo "<br>Voitit " . $voitto . "€!"; } else { echo "<br>Hävisit " . $havisit . "€!"; } } if($_GET['savemoneys'] == "true"){ $nick = $_SESSION['tun']; $aika = date('Y-m-d - H:i:s'); $ip = $_SERVER['REMOTE_ADDR']; $logit = "$nick $rahat <!--$ip $aika-->"; $fp = fopen("saves.txt", "a+"); fwrite($fp, $logit); fclose($fp); header("location: ok.php?moneys=saved"); } ?>
sen verran taidan ymmärtää, että tuossa kirjoitusvaiheessa se hakee ton muuttujan $rahat tuolta ylhäältä missä se on määriteltynä, eikä osaa päivittää sitä nykyistä rahatilannetta. jotenkin.
jotain apujaa, camoon..?
vai olisko järkevämpää toteuttaa ennätyslista jollain toisella tavalla? millaisella?
Alkuperäisessä pelissä rahat välitetään joka kierroksella POST-lomakkeen rahat-nimisessä kentässä.
Tuo "tallenna rahat" on linkki ja näin ollen ihan normaali GET-pyyntö, joten siinä ei voi välittää POST-kenttää ja näin ollen rahat-tieto katoaa kun sitä klikataan.
Jos jotain ennätyslistaa haluaa pitää, niin rahat olisi ylipäätään järkevämpi laittaa talteen palvelimen päässä, esimerkiksi sessio-muuttujaan, koska nythän käyttäjä voi äärimmäisen helposti määritellä itselleen ziljoona rahaa.
jee, vielä kun osaisi.
Ei oo paha rasti opetella
https://www.ohjelmointiputka.net/oppaat/opas.
tein omanlaisen ratkaisun:
<?php session_start(); $rahat = $_POST['rahat']; $panos = $_POST['panos']; $rulla0= $_POST['rulla0']; $rulla1= $_POST['rulla1']; $rulla2= $_POST['rulla2']; if(!isset($rahat)) { $rahat = 20; } $rivi = explode("|",$_POST['rullat']); if ($rulla0 == "" && $rulla1 == "" && $rulla2 == "") {$lukitus = "false";} if (isset($_GET[peli])) { if($rahat==0) {exit("Rahat loppuivat, <a href=jokeri.php>aloita alusta</a>!");} if ($panos == "--VALITSE--") {exit("Panos olisi hyvä valita!");} if($panos>$rahat) { exit("Liian iso panos, rahat ei riitä!"); } } $a = "jokeri"; $b = "a"; $c = "k"; $d = "q"; $e = "j"; $f = "10"; $rulla[0] = Array($b,$f,$c,$a,$f,$d,$e,$b,$f,$c,$e,$d,$f,$d,$e,$a,$f,$e,$d,$e,$f,$d,$e,$c); $rulla[1] = Array($e,$f,$c,$d,$b,$f,$e,$a,$f,$c,$f,$d,$e,$b,$f,$d,$e,$d,$f,$a,$e,$b,$f,$d); $rulla[2] = Array($f,$b,$e,$b,$f,$c,$e,$d,$f,$c,$e,$a,$f,$d,$c,$e,$b,$f,$d,$e,$d,$f,$a,$e); if ($rulla0 != 1) {$rivi[0] = $rulla[0][rand(0,23)];} if ($rulla1 != 1) {$rivi[1] = $rulla[1][rand(0,23)];} if ($rulla2 != 1) {$rivi[2] = $rulla[2][rand(0,23)];} if (isset($_GET[peli])) { if($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "a") { $voitto = $panos*20; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "k") { $voitto = $panos*20; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "q") { $voitto = $panos*10; } elseif($rivi[0] == $rivi[1] && $rivi[0] == $rivi[2] && $rivi[1] == $rivi[2]) { $voitto = $panos*5; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "j") { $voitto = $panos*4; } elseif($rivi[0] == $rivi[1] && $rivi[1] == $rivi[2] && $rivi[0] == "10") { $voitto = $panos*4; } else { $havisit = $panos; } for($i=0;$i<3;$i++) { if($rivi[$i] == $a) { $voitto = $panos*2; } } $rahat-=$panos; $rahat+=$voitto; } ?> <form method="post" action="?peli=1"> <table border="0"><tr> <? for($i=0;$i<3;$i++) { echo "<td><img src=\"$rivi[$i].png\"></td>\n"; } ?> </tr> <? for($i=0;$i<3;$i++) { if ($lukitus == "false" && !isset($voitto) && isset($_GET['peli'])) { echo "<td><input type=\"checkbox\" name=\"rulla" . $i . "\" value=\"1\">"; } else { echo "<td><input type=\"checkbox\" name=\"rulla" . $i . "\" value=\"1\" disabled=\"disabled\">"; } echo "<small>lukitse</small></td>\n"; } ?> </tr> </table> <br> <? echo "<input type=\"hidden\" value=\"$rahat\" name=\"rahat\">\n"; echo "<input type=\"hidden\" value=\"$rivi[0]|$rivi[1]|$rivi[2]\" name=\"rullat\">\n"; echo "Panos: <select name=\"panos\">\n"; if(isset($panos)) { echo "<option value=\"$panos\">$panos</option>\n"; } else { echo "<option value=\"--VALITSE--\">--VALITSE--</option>\n"; } ?> <option value="0.20">0.20</option> <option value="0.40">0.40</option> <option value="0.60">0.60</option> <option value="0.80">0.80</option> <option value="1.00">1.00</option> <option value="2.00">2.00</option> <option value="3.00">3.00</option> </select> <br> Sinulla on rahaa: <? echo $rahat; ?>€ <br> <input type="submit" value="Pelaa"> <br><br></form> <form method="post" action="jokeri.php?save=moneys&rahat=<?php echo $rahat; ?>"> <input type="submit" name="submit" value="Tallenna ennätyslistalle!"></form> <? if (isset($_GET['peli'])) { if(isset($voitto)) { echo "<br>Voitit " . $voitto . "€!"; } else { echo "<br>Hävisit " . $havisit . "€!"; } } if($_GET['save'] == "moneys"){ $nick = $_SESSION['tun']; $rahat = $_REQUEST['rahat']; $aika = date('Y-m-d - H:i:s'); $ip = $_SERVER['REMOTE_ADDR']; $logit = "$rahat ,<a href=pelaaja.php?nimimerkki=$nick>$nick</a><!--$ip $aika--><br>\n"; $fp = fopen("saves.txt", "a+"); fwrite($fp, $logit); fclose($fp); header("location: ok.php?moneys=saved"); } ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.