PHP - Gættespil

Her kan du få hjælp og stille spørgsmål til PHP!
JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03
PHP - Gættespil

Indlæg af JulleKrolle » 24. apr 2014, 10:08

Hej NemProgrammering :)
Er selv på begynder-stadiet i programmering og sidder lige nu og leger med et lille gættespil i php, hvor man skal gætte et tal mellem 1-100. Jeg skal til at starte med lave et fast tal i koden, derefter skal der være et par kriterier,
såsom: hvis gættet er + - 50 eller mere fra det valgte tal, skal den udskrive: meget langt forbi.
Derefter hvis gættet er mellem 19 og 49 fra det valgte tal, skal den udskrive: Du er ikke helt ved siden af.
Ellers: Tampen brænder!
Har siddet og læst mig helt væk men kan ikke rigtig finde ud af at få lavet de kriterier ordentligt, har dog fundet ud af at der nok skal bruges abs() funktionen, men er ikke helt sikker på hvordan :)
Har prøvet mange ting, men kan kun få det til at virke hvis jeg bruger 1 som det valgte tal.
Vedlægger min kode her: (Ikke døm mig hvis den er helt hen i skoven (: )
Første side: <form action="side4.php" method="get">
Gæt et tal mellem 1 og 100 <input type="text" name="tal" />
<input type ="submit" /> </form>
Anden side:
<?php
$R = 66;
if ($_GET['tal'] == $R)
{
echo "Flot - rigtigt gættet!";
}
elseif ($_GET['tal'] <"1" || $_GET['tal'] >"100")
{
echo "Uden for den angivne interval på 1-100";
}
elseif (abs($_GET['tal'] > 50))
{
echo "Meget langt forbi";
}
elseif (abs($_GET['tal'] > "19" && "49"))
{
echo "Du er ikke helt ved siden af";
}
else
{
echo "Tampen brænder!";
}
?>

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 24. apr 2014, 12:03

Har dog fået det til at virke nu, men nu bakser jeg med at få indkorporeret en session i min kode, som skal køre indtil jeg har gættet 10 gange eller gættet det rigtige tal :)

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: PHP - Gættespil

Indlæg af ThomasI » 24. apr 2014, 21:07

Hej Julle,

Super du fik det til at virke :) Vil du dele din løsning, så andre kan få glæde af den? :D

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 24. apr 2014, 22:58

Det kan du tro jeg vil, det bliver lige på mandag når jeg kommer op til den computer det ligger på :)

Kan du evt. Hjælpe med mit problem med at få inkorporeret en Session i det, som jeg skrev i den tidligere kommentar? :)

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: PHP - Gættespil

Indlæg af seerex » 25. apr 2014, 08:47

Hej Julle,

Hvis du ønsker at lære noget om sessions, er den her artikel rigtig god:
http://www.w3schools.com/php/php_sessions.asp

Men kort sagt:
1. Start en session
2. Lav en cookie variabel der gemmes i den nuværende session
3. Arbejd arbejd
4. Luk session

Men den artikel har både eksempler på brugen og lidt teori oveni, så den er rigtig god og kan sikkert hjælpe dig igang :)

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 30. apr 2014, 08:23

Jeg er bare lidt i tvivl om hvilken side min Session skal skrives på?

Den skal vel skrives på den første side, og så trækkes ud på side2? :)

Og jeg synes ikke der bliver forklaret hvordan man gemmer en værdi 10 gange f.eks - så jeg får 10 gæt før den skifter værdi igen :)
Tro mig, jeg bruger meget w3schools, men lige med det, synes jeg ikke det bliver forklaret :)

Håber i kan hjælpe med det også :)

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: PHP - Gættespil

Indlæg af seerex » 30. apr 2014, 09:04

Er lidt i tvivl om hvad du mener, men sådan som jeg har forstået det, så vil du have 10 gæt før den ligesom "resetter"? :)

I det tilfælde, kan du lave en session variable (cookie), som der gemmer antallet af gæt. Når den så overstiger 10, så kan du reset spil.

eksempel:

Kode: Vælg alt

<?php
session_start();
// lav session data
$_SESSION['guesses']=0;
?>
Nu har du en session variabel kaldet "guesses" som indeholder antallet af gæt du har foretaget. Hver gang du foretager et gæt, forøger du den med 1:

Kode: Vælg alt

$_SESSION['guesses']++;
Nu kan du så teste om man har gættet 10 gange:

Kode: Vælg alt

if ( $_SESSION['guesses'] >= 10 ) {
   // Reset
}
Håber det var noget i den stil du ledte efter :) Men kort sagt så bare lav en session og gem det i en variabel. Siden du laver dette på skal bare være der hvor du starter spillet, og så hver gang der foretages et gæt så inkrementér den variabel og test for max :)

HUSK altid at du skal kalde session_start() inden du kan arbejde med det.

Håber det hjælper, ellers giv lyd :)
mvh
/JBJ

Hvis jeg hjalp dig, kunne du måske hjælpe mig ved at besøge mig på www.jbjcode.com :)

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 30. apr 2014, 09:13

Mange tak Seerex :)

Det hjalp meget, ja!

Jeg prøver mig frem med det, skal nok melde tilbage i tråden her senere, eller hvis jeg skal bruge mere hjælp :)
Vil med glæde besøge din hp :)

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 30. apr 2014, 10:10

Jeg tænkte på om der egentlig ikke også skulle oprettes en Session, der generer et nyt tal efter der er gættet 10 gange? :)

Eller er det bare en rand() der skal sættes ind?
I så fald, hvor skal den sættes ind i forhold til min session? :)

Er lidt i tvivl om hvor evt. rand og session skal sættes ind, så her kommer min kode indtil videre :)
Sådan her ser det ud lige nu:(Ved godt det ikke er rigtigt endnu)

Side1:
<?php
Session_start();
$_SESSION['guesses'] =0;
<?

<form action="side4.php" method="get">
Gæt et tal mellem 1 og 100 <input type="text" name="tal" />
<input type ="submit" />
</form>

Side2:
<?php
session_start();
$_SESSION['guesses']++;
$_SESSION['antal']=65;

if ($_GET['tal'] == $_SESSION['antal']){
echo "Flot - rigtigt gættet!";}

elseif ($_GET['tal'] <"1" || $_GET['tal'] >"100"){
echo "Uden for den angivne interval på 1-100";}

elseif (abs($_SESSION['antal'] - $_GET['tal']) > 50){
echo "Meget langt forbi";}

elseif (abs($_SESSION['antal'] - $_GET['tal']) > 19 && 49){
echo "Du er ikke helt ved siden af";}

else {
echo "Tampen brænder!";}

if ($_SESSION['guesses'] >= 10){
unset($_SESSION['guesses']);}
?>
Senest rettet af JulleKrolle 30. apr 2014, 10:39, rettet i alt 2 gange.

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: PHP - Gættespil

Indlæg af seerex » 30. apr 2014, 10:35

Du kunne måske gemme din random tal i en session variabel også? Så har du 2 session variabler:
"Guesses"
"RandomNumber"
Så når guesses er på 10, så nulstiller du guesses (sætter til 0 eller 1) og laver en ny tildeling til randomNumber med et random tal ved at kalde random funktionen.

Det var nok sådan jeg ville gøre det :) Så du skal ikke "lave en ny session" men du skal bare have en ekstra session variable, i den nuværende session :)

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 30. apr 2014, 10:45

Det hjalp en del, ja :)

Nu får jeg bare en fejlmeddelelse ved hvert 10. gæt hvor der står: Undefined index: guesses :)

Og det ser ud til at jeg får et random nummer ved hvert gæt :(

Min kode ser sådan her ud nu:

<?php
session_start();
$_SESSION['guesses']++;
$_SESSION['RandomNumber']=rand(1,100);

if ($_GET['tal'] == $_SESSION['RandomNumber']){
echo "Flot - rigtigt gættet!";}

elseif ($_GET['tal'] <"1" || $_GET['tal'] >"100"){
echo "Uden for den angivne interval på 1-100";}

elseif (abs($_SESSION['RandomNumber'] - $_GET['tal']) > 50){
echo "Meget langt forbi";}

elseif (abs($_SESSION['RandomNumber'] - $_GET['tal']) > 19 && 49){
echo "Du er ikke helt ved siden af";}

else {
echo "Tampen brænder!";}

if ($_SESSION['guesses'] >= 10){
unset($_SESSION['guesses']);}


?>



Og min første side ser således ud: (der mangler vidst en variabel til RandomNumber)

<?php
Session_start();
$_SESSION['guesses'] =0;
<?

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: PHP - Gættespil

Indlæg af seerex » 30. apr 2014, 11:25

Hmm nu sidder jeg ikke lige ved en computer som jeg kan teste ved, men umiddelbart så:

Prøv at ændre den sidste if til:

Kode: Vælg alt

if ($_SESSION['guesses'] >= 10) {
   $_SESSION['guesses'] = 0;
}
Så tror jeg det fjerner fejlen ved 10 gæt måske?

Og du får et nyt random number hver gang, fordi du jo tildeler et random number hver eneste gang siden loader:
$_SESSION['RandomNumber']=rand(1,100);

Står jo helt i toppen, så hver gang den side loades så sætter du nu random number. Du skal sætte den i samme if-sætning som den der endten siger det er rigtig gættet og så tildele ny efter det, eller når man har gættet 10 gange så kan den indsættes i den forovennævnte if-sætning. :)

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 30. apr 2014, 11:52

Nu kommer der ikke nogle fejlmeddelelser, men det virker stadig som om at den genererer et nyt tal hele tiden :)

Og hvis det er muligt, så skulle den nemlig også generere nyt tal når man har gættet rigtigt, så den skal også sættes ind i den første if, men så siger den: unexpected ELSEIF :s

Det er ændret til:

<?php
session_start();
$_SESSION['guesses']++;

if ($_GET['tal'] == $_SESSION['RandomNumber']){
echo "Flot - rigtigt gættet!";}

elseif ($_GET['tal'] <"1" || $_GET['tal'] >"100"){
echo "Uden for den angivne interval på 1-100";}

elseif (abs($_SESSION['RandomNumber'] - $_GET['tal']) > 50){
echo "Meget langt forbi";}

elseif (abs($_SESSION['RandomNumber'] - $_GET['tal']) > 19 && 49){
echo "Du er ikke helt ved siden af";}

else {
echo "Tampen brænder!";}

if ($_SESSION['guesses'] >= 10){
$_SESSION['guesses']=0;}{
$_SESSION['RandomNumber']=rand(1,100);}

?>

Og første side er stadig:

<?php
Session_start();
$_SESSION['guesses'] = 0;
<?

<form action="side4.php" method="get">
Gæt et tal mellem 1 og 100 <input type="text" name="tal" />
<input type ="submit" />
</form>

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: PHP - Gættespil

Indlæg af seerex » 30. apr 2014, 12:19

else if er i 2 ord :) prøv at ændre det

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 30. apr 2014, 12:27

Nu siger den istedet:
Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\Julian\Mini Projekter\Side4.php on line 9

Altså ELSE istedetfor ELSEIF :)

JulleKrolle
Begynder
Indlæg:23
Tilmeldt:24. apr 2014, 10:03

Re: PHP - Gættespil

Indlæg af JulleKrolle » 30. apr 2014, 12:36

Så fik jeg det til at virke! :)

Der var lige et par {} for meget i mine if koder :)

Det færdige resultat blev:
Side1:

Kode: Vælg alt

<form action="side4.php" method="get">
Gæt et tal mellem 1 og 100 <input type="text" name="tal" />
<input type ="submit" />
</form>

<?php
Session_start();
$_SESSION['guesses'] = 0;
<?
Side2:

Kode: Vælg alt

<?php
session_start();
$_SESSION['guesses']++;

if 	($_GET['tal'] == $_SESSION['RandomNumber']){
	$_SESSION['RandomNumber']=rand(1,100);
    echo "Flot - rigtigt gættet!";}

elseif ($_GET['tal'] <"1" || $_GET['tal'] >"100"){
	echo "Uden for den angivne interval på 1-100";}

elseif (abs($_SESSION['RandomNumber'] - $_GET['tal']) > 50){
	echo "Meget langt forbi";}

elseif (abs($_SESSION['RandomNumber'] - $_GET['tal']) > 19 && 49){
	echo "Du er ikke helt ved siden af";}		
	
else {
    echo "Tampen brænder!";}
	
if ($_SESSION['guesses'] >= 10){
	$_SESSION['guesses']=0;
	$_SESSION['RandomNumber']=rand(1,100);}

?>

seerex
Entusiast
Entusiast
Indlæg:37
Tilmeldt:17. apr 2014, 17:23

Re: PHP - Gættespil

Indlæg af seerex » 30. apr 2014, 12:42

Ah ok det var super, jeg havde ikke lige kigget det grundigt igennem :) Men godt du fandt ud af det!

Og lige et piece of advice, skriv "else if" alligevel, set er som regel sådan man gør, da det er mere læsevenligt :)

Besvar