E-učenje > PHP Tutorijali

 
Želiš pristup svim sekcijama?

Registracija  




Tutorijal: PHP Igra sa kockicama

 

Kreiranje igre sa kockicama pomoću PHP-a

U ovom tutorijalu, pokazaću kako pomoću PHP funkcije rand() možete jednostavno da napravite igru sa kockicama. Igrač će bacati tri kockice (odjednom) i ako "dobije" tri ista broja osvaja dobitak. Pomoću if grananja proverićemo da li su brojevi jednaki i obavestićemo igrača o dobitku.

Korak 1. Pozicionirajte se u htdocs direktorijum (podsetnik u prvom tutorijalu). Kreirajte direktorijum pod imenom "kockice" u direktorijumu htdocs.

Korak 2. Preuzmite sličice za prikaz brojeva kockice: slike.rar. Raspakujte arhivu i folder "slike" ubacite u folder "kockice" kojeg ste upravo kreirali.

Korak 3.Najpre ćemo da kreiramo dugme za bacanje kockica. Otvorite Notepad ili neki drugi tekst editor. Otkucajte sledeći HTML kôd:

 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kockice</title>
</head>
<body>
<form action="kockice.php" method="post">
<input type="submit" name="baciKocku" value="Baci Kockicu" />
</form>
</body>
</html>

Fajl sačuvajte u direktorijum kockice pod imenom "kockice.php". Vodite računa da "Save as type" bude podešen na "All Files" (Ako ste koristili Notepad). Ovim smo kreirali formular za pretragu podataka iz tabele baze podataka.

Korak 4. Sada krećemo sa kreiranjem PHP skripte koja će generisati brojeve za 3 kockice nasumično. Dodajte u fajl kockice.php sledeći PHP kôd (odmah ispod završnog </form> HTML taga):

 
              
<?php
/* rand() funckija vraca broj izmedju 1 i 6
if grama u zavisnosti od nasumicno izabranog broja prikazuje odredjenu slicicu*/
// Prikaz prve kockice
$kockica1 = rand(1,6); 
if ($kockica1 == 1) { echo "<img src=\"slike/kockica-1.png\" />"; } 
if ($kockica1 == 2) { echo "<img src=\"slike/kockica-2.png\" />"; }
if ($kockica1 == 3) { echo "<img src=\"slike/kockica-3.png\" />"; }
if ($kockica1 == 4) { echo "<img src=\"slike/kockica-4.png\" />"; }
if ($kockica1 == 5) { echo "<img src=\"slike/kockica-5.png\" />"; }
if ($kockica1 == 6) { echo "<img src=\"slike/kockica-6.png\" />"; }
// Prikaz druge kockice
$kockica2 = rand(1,6); 
if ($kockica2 == 1) { echo "&nbsp; <img src=\"slike/kockica-1.png\" />"; } 
if ($kockica2 == 2) { echo "&nbsp; <img src=\"slike/kockica-2.png\" />"; }
if ($kockica2 == 3) { echo "&nbsp; <img src=\"slike/kockica-3.png\" />"; }
if ($kockica2 == 4) { echo "&nbsp; <img src=\"slike/kockica-4.png\" />"; }
if ($kockica2 == 5) { echo "&nbsp; <img src=\"slike/kockica-5.png\" />"; }
if ($kockica2 == 6) { echo "&nbsp; <img src=\"slike/kockica-6.png\" />"; }
// Prikaz trece kockice
$kockica3 = rand(1,6); 
if ($kockica3 == 1) { echo "&nbsp; <img src=\"slike/kockica-1.png\" />"; }
if ($kockica3 == 2) { echo "&nbsp; <img src=\"slike/kockica-2.png\" />"; }
if ($kockica3 == 3) { echo "&nbsp; <img src=\"slike/kockica-3.png\" />"; }
if ($kockica3 == 4) { echo "&nbsp; <img src=\"slike/kockica-4.png\" />"; }
if ($kockica3 == 5) { echo "&nbsp; <img src=\"slike/kockica-5.png\" />"; }
if ($kockica3 == 6) { echo "&nbsp; <img src=\"slike/kockica-6.png\" />"; }
// Ispis eventualnog dobitka
if ($kockica1 == $kockica2 &&  $kockica2 == $kockica3) 
{echo "<br/><br/>Bravo! Osvojili ste JACK POT";}
else 
{echo "<br/><br/>Više sreće sledeći put!";}
?>

Sačuvajte fajl.

Kreiranje baze podataka koja će čuvati statistiku igre

Korak 5. Koristeći phpMyAdmin, pomoću SQL upita (podsetnik u 2. tutorijalu) kreirajte tabelu "kockice" u bazi podataka "mojabaza".

CREATE TABLE `mojabaza`.`kockice` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`pokusaj` VARCHAR(5) NOT NULL, 
`dobitak` VARCHAR(5) NOT NULL, 
PRIMARY KEY (`id`)) ENGINE = MYISAM

Korak 6. Na sam vrh stranice dodajte sledeći PHP kôd koji će vršiti konekciju na kreiranu tabelu odnosno bazu podataka:

 
              
?php
mysql_connect("localhost", "root", "") or die(mysql_error()); /**ovde promenite parametre za Vas host **/
mysql_select_db("baza") or die(mysql_error()); 
?>

Korak 7. Na samo dno strane (pre završnog body taga, dodajte sledeći PHP kôd:

 
                <br/><br/><br/><br/><br/><br/>Statistika:<br/><br/>
                  <?php 
                  $upit = "SELECT COUNT(pokusaj) FROM kockice"; 
                  $upit2 = "SELECT COUNT(dobitak) FROM kockice WHERE dobitak = '1'"; 
                  $rezultat = mysql_query($upit);
                  while($red = mysql_fetch_array($rezultat))
                  {
                  	echo "Ukupan broj bacanja kockica: ";
                 	echo $red['COUNT(pokusaj)'];
                  	$rezultat2 = mysql_query($upit2);
                  	while($red2 = mysql_fetch_array($rezultat2))
                  	{
                  		echo "<br/>Broj pojavljivanja 3 ista broja: ";
                  		echo $red2['COUNT(dobitak)']; echo "<br/>Procenat pojavljivanja 3 ista broja: ";
                  		echo round($red2['COUNT(dobitak)'] / $red['COUNT(pokusaj)'] *100,2); echo "%";
                 	}
                  }
                  ?> 

Korak 8. Kucajte u adresnu liniju Vašeg brovsera:

http://localhost/kockice/kockice.php

i proverite kako radi Vaša nova PHP skripta.

Kliknite na "demo" da pogledate kako radi ova PHP skripta: Demo
Prikaz kôda cele skripte pogledajte ovde!

Napomene:
Verovatnoća da dobijete 3 ista broja na 3 kockice je samo 2,78% (U realnim uslovima, bez nameštanja!)
Još manja verovatnoća (samo 2,70%) je da igrač pogodi broj na ruletu!


Nameštanje rezultata

Motiv koji me je "vodio" do kreiranja ovog tutorijala je i da pokažem svima koliko su male šanse za dobitak u svim igrama na sreću. Nekada su igre na sreću organizovali vrlo vešti ljudi koji bi Vas obmanjivali pred Vašim očima. Danas je većina igrara na sreću bazirana na računarima (poker aparati, slot mašine, elektronski ruleti itd.), a računari su za manipulisanje brojkama dosta veštiji od ljudi. Na primeru igre koju smo upravo kreirali ću Vam pokazati kako sa dve linije kôda može da se znatno umanji šansa za dobitak, a Vi samo zamislite šta se sve može koristiti u elektonskim igrama na sreću.

Videli smo da je verovatnoća za dobijanje 3 ista broja na 3 kockice samo 2,78% u realnim uslovima. Uz samo malo dodatnog PHP programiranja možemo ovu verovatnoću da još više umanjimo. Šta ako u kôdu navedemo da ako je vrednost kockice pod rednim brojem 1 jednaka 6 (šest), tada vrednost kockice pod brojem 2 nikada ne bude 6 (šest). Na taj način smo omogućili da se nikada ne pojavi kombinacija sa tri šestice i tako smo smanjili verovatnoću da se pojave tri ista broja na tri kockice na 2,31%.

Uz to ću postaviti da ako vrednost kockice pod rednim brojem 1 iznosi 6 (šest) tada će vrednost kockice pod rednim brojem 3 biti u rasponu od 4 do 6. Ovim sam omogućio da se u 33% slučajeva (umesto realnih 16%) kada se "pojavi" šestica na prvoj kockici pojavi i na trećoj kockici, pa će igrač imati osećaj da je blizu da "pogodi" tri šestice koje nikada neće pogoditi.

Evo kako izgleda PHP kôd kojim sam postigao ovo:
 
              

// Prikaz druge kockice
if ($kockica1 == 6) { $kockica2 = rand(1,5); }
else { $kockica2 = rand(1,6); }

// Prikaz trece kockice
if ($kockica1 == 6) { $kockica3 = rand(4,6); }
else { $kockica3 = rand(1,6); }

Kliknite na "demo" da pogledate kako radi ova ova igra sa nameštanjem: Demo nameštene igre
Napomena: Nikada nećete "izvući" tri šestice a tu se navodno krije najveći dobitak!



Tvoja preporuka:


Preporučujem tutorijal (636) Ne preporučujem tutorijal (127)



Komentari / Pitanja:

Ime:

Tvoja e-mail adresa:

Ostavi svoj komentar:

Spam zaštita:
 

Vaše mišljenje je veoma važno. Ukoliko imate bilo kakav komentar na tutorijal, ili nešto da dodate, izmenite ili ukoliko ste primetili grešku, ne ustručavajte se da podelite sa svima Vaše mišljenje.

Takođe, ukoliko imate bilo kakvo pitanje u vezi tutorijala, postavite ga ovde. Lakše ćemo doći do rešenja ako više nas učestvuje u rešavanju problema.

     


Ukupno komentara: 3


vedran
29.06.2013 21:20 h
  pozz Darko super su ti tutovi, mnogo sam naucio i puno hvala :D. nego mozes li postaviti tut za ove preporuke kao sto je trazio NoName :)

Darko Petrović
02.03.2013 12:45 h
  @NoName,
Može, evo obećavam biće do kraja meseca, napraviću neku prostiju verziju pa posle dopunjujte :)

NoName
02.03.2013 05:43 h
  Super tutorijal, više se ne kockam! ;) Nego, možeš li postaviti tutorijal kako da napravim ove preporuke, prst na gore/dole