[PHP en eventueel java] Dobbel spel

Status
Niet open voor verdere reacties.
Ik neem aan dat je dit: link niet gelezen hebt?

Daar staat namelijk in dat wij niet even voor jou je huiswerkvragen gaan oplossen. Dus, zou je ons eens kunnen laten zien wat je al geprobeerd hebt?
 
Ik neem aan dat je dit: link niet gelezen hebt?

Daar staat namelijk in dat wij niet even voor jou je huiswerkvragen gaan oplossen. Dus, zou je ons eens kunnen laten zien wat je al geprobeerd hebt?

Ik zalspoedig posten wat ik al heb.
Ik heb tot nu toe de invul vakjes, de Gooi! button, wat POST dingetjes.
maar zal het posten.
 
Laatst bewerkt:
Het heeft zeker nu om te posten. Ik wil je in ieder geval wel helpen. Maar het is niet de bedoeling dat ik van scratch een heel script voor je ga schrijven.

Als je je script post, kunnen we je tips / code snippets geven om functionaliteit toe toe voegen.
 
Het heeft zeker nu om te posten. Ik wil je in ieder geval wel helpen. Maar het is niet de bedoeling dat ik van scratch een heel script voor je ga schrijven.

Als je je script post, kunnen we je tips / code snippets geven om functionaliteit toe toe voegen.


wat ik heb:

index.php

<head>

</head>

<body>
<form action="calc.php" method="POST">
kapitaal: <input type="text" name="kapitaal" />
inzet: <input type="text" name="inzet" />
aantal keer gooien?: <input type="text" name="aantal" />
<input type="submit" value ="Gooi!" />
</form>
</body>
</html>

calc.php
<?php

$kapitaal = $_POST["kapitaal"];
$inzet = $_POST["inzet"];
$aantal = $_POST["aantal"];
$dobbelsteen1 = rand(1,6);
$dobbelsteen2 = rand(1,6);

$stenen = $dobbelsteen1+$dobbelsteen2;





for($i = 0; $i < ($aantal); ++$i)
{
echo "Dobbelsteen 1 :"; echo $dobbelsteen1; echo "<br />";
echo "Dobbelsteen 2 :"; echo $dobbelsteen2; echo "<br />";
echo "Totaal :"; echo $stenen; echo "<br />"; echo "<br />";



echo "je oude kapitaal:"; echo $kapitaal;"<br />";
echo "je inzet was:"; echo $inzet;"<br />";
if($stenen >= 7) {
$inzet = $kapitaal+$inzet;
echo "Hoger dan 7!, je inzet gewonnen!"; echo "<br />";
echo "je nieuwe kapitaal :"; echo $inzet;echo "<br />";
}
else {
$inzet = $kapitaal-$inzet;
echo "helaas niet gewonnen"; echo "<br />";
echo "je nieuwe kapitaal :"; echo $inzet;echo "<br />";
}
}


?>


hij update alleen de inzet niet.
hoe is dat te verhelpen
 
Je pagina is niet compleet, er mist een HTML-tag en een doctype:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>

<body>
  <form action="calc.php" method="POST">
    kapitaal: <input type="text" name="kapitaal" />
    inzet: <input type="text" name="inzet" />
    aantal keer gooien?: <input type="text" name="aantal" />
    <input type="submit" value ="Gooi!" />
  </form>
</body>
</html>

PHP:
<?php
$kapitaal = $_POST[ 'kapitaal' ];

$n = ( ctype_digit ( $_POST[ 'aantal' ] ) ) ? $_POST[ 'aantal' ] : 1;

for ( $i = 1; $i <= $n; $i++ ) {

  $val1 = rand ( 1 , 6 );
  $val2 = rand ( 1 , 6 );

  echo 'Dobbelsteen 1: ', $val1, '<br />';
  echo 'Dobbelsteen 2: ', $val2, '<br />';
  echo 'Totaal: ', ( $val1 + $val2 ), '<br />';

  echo 'Je kapitaal was: ', $_POST[ 'kapitaal' ] , '<br />';
  echo 'Je inzet was: ', $_POST[ 'inzet' ], '<br />';

  $kapitaal = ( ( $val1 + $val2 ) >= 7 ) ? ( $kapitaal + $_POST[ 'inzet' ] ) : ( $kapitaal - $_POST[ 'inzet' ] );
  $message = ( ( $val1 + $val2 ) >= 7 ) ? 'Hoger dan 7! Je hebt gewonnen!' : 'Helaas, niet gewonnen';

  echo $message, '<br />';
  echo 'Je nieuwe kapitaal is:', $kapitaal, '<br />';
}
?>


Hmm, nu heb ik toch nog het hele script voor je gemaakt (wel op basis van je eigen script). Ik zal je nog even zeggen wat er mankeerde aan jouw script:

  1. Je nam de willekeurige waarde buiten de loop, er wordt dan steeds dezelfde waarde gebruikt. Je verliest dus elke keer, of je wint elke keer.
  2. Je overschrijft $inzet binnen de loop, je kunt $inzet de volgende keer dus niet meer gebruiken.
  3. Je kunt meerdere echo statement eenvoudig met een komma scheiden, er hoeft geen ; en nieuw echo statement in. Daarnaast, als het gaat om twee string (niet variabel) kun je ze ook binnen dezelfde quotes zetten.

Overigens is de speler hier altijd in het voordeel als je maar genoeg ronden speelt.

De kans op 7 of groter is namelijk groter dan de kans op 6 of kleiner. De uitbetaling staat dus niet in verhouding tot de kans. Dat leidt tot een negatieve verwachtingswaarde voor 'de bank'.

EDIT: en als je (delen van) het script niet begrijpt dan moet je maar roepen hè?
 
Laatst bewerkt:
Je pagina is niet compleet, er mist een HTML-tag en een doctype:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>

<body>
  <form action="calc.php" method="POST">
    kapitaal: <input type="text" name="kapitaal" />
    inzet: <input type="text" name="inzet" />
    aantal keer gooien?: <input type="text" name="aantal" />
    <input type="submit" value ="Gooi!" />
  </form>
</body>
</html>

PHP:
<?php
$kapitaal = $_POST[ 'kapitaal' ];

$n = ( ctype_digit ( $_POST[ 'aantal' ] ) ) ? $_POST[ 'aantal' ] : 1;

for ( $i = 1; $i <= $n; $i++ ) {

  $val1 = rand ( 1 , 6 );
  $val2 = rand ( 1 , 6 );

  echo 'Dobbelsteen 1: ', $val1, '<br />';
  echo 'Dobbelsteen 2: ', $val2, '<br />';
  echo 'Totaal: ', ( $val1 + $val2 ), '<br />';

  echo 'Je kapitaal was: ', $_POST[ 'kapitaal' ] , '<br />';
  echo 'Je inzet was: ', $_POST[ 'inzet' ], '<br />';

  $kapitaal = ( ( $val1 + $val2 ) >= 7 ) ? ( $kapitaal + $_POST[ 'inzet' ] ) : ( $kapitaal - $_POST[ 'inzet' ] );
  $message = ( ( $val1 + $val2 ) >= 7 ) ? 'Hoger dan 7! Je hebt gewonnen!' : 'Helaas, niet gewonnen';

  echo $message, '<br />';
  echo 'Je nieuwe kapitaal is:', $kapitaal, '<br />';
}
?>


Hmm, nu heb ik toch nog het hele script voor je gemaakt (wel op basis van je eigen script). Ik zal je nog even zeggen wat er mankeerde aan jouw script:

  1. Je nam de willekeurige waarde buiten de loop, er wordt dan steeds dezelfde waarde gebruikt. Je verliest dus elke keer, of je wint elke keer.
  2. Je overschrijft $inzet binnen de loop, je kunt $inzet de volgende keer dus niet meer gebruiken.
  3. Je kunt meerdere echo statement eenvoudig met een komma scheiden, er hoeft geen ; en nieuw echo statement in. Daarnaast, als het gaat om twee string (niet variabel) kun je ze ook binnen dezelfde quotes zetten.

Overigens is de speler hier altijd in het voordeel als je maar genoeg ronden speelt.

De kans op 7 of groter is namelijk groter dan de kans op 6 of kleiner. De uitbetaling staat dus niet in verhouding tot de kans. Dat leidt tot een negatieve verwachtingswaarde voor 'de bank'.

EDIT: en als je (delen van) het script niet begrijpt dan moet je maar roepen hè?

Heel erg bedankt!
Ik snap de punten die niet werkten, en kan er in eht vervolg rekening mee houden.
Dat de bank een te grote kans heeft op verliezen en het daardoor irreëel word klopt, ik ga de waarden wel aanpassen!
nogmaals bedankt, en ik ga er morgen even verder mee.
Nog geen slotje a.u.b!
 
Goh niek, ik wist niet dat je bij mij op school zit joh ;)

Het probleem is waarschijnlijk dat je shorttags gebruikt:

PHP:
<?=$_SESSION["kapitaal"];?>

ipv:

PHP:
<?php echo $_SESSION[ 'kapitaal' ]; ?>

Op de schoolserver staan shorttags vermoedelijk uitgeschakeld.
 
Goh niek, ik wist niet dat je bij mij op school zit joh ;)

Het probleem is waarschijnlijk dat je shorttags gebruikt:

PHP:
<?=$_SESSION["kapitaal"];?>

ipv:

PHP:
<?php echo $_SESSION[ 'kapitaal' ]; ?>

Op de schoolserver staan shorttags vermoedelijk uitgeschakeld.
ah ok vermoedde al zoiets.
ik zal alle tags volledig uit typen.

welke klas/locatie zit jij/geef je les dan
 
fa

het probleem is het volgende:
Ik kies een spel, maar dan slaat hij het nieuwe kapitaal en het gekozen spel niet op.
Geef de bron weer om te kijken hoe ik het heb gedaan.


mvg
 
Laatst bewerkt:
Het lijkt erop dat je de ingegeven waarde weer returned. Echo je toevallig $_POST[ 'kapitaal' ] en $_POST[ 'inzet' ] rechtstreeks als value?

Anders laat even wat PHP-code zien. We kunnen namelijk in de HTML bron niet zien wat je precies doet.
 
a

dat lijkt er wel op;


echo 'Dobbelsteen 1: ', $val1, '<br />';
echo 'Dobbelsteen 2: ', $val2, '<br />';
echo 'Totaal: ', ( $val1 + $val2 ), '<br />';

echo 'Je inzet was: ', $_POST[ 'inzet' ], '<br />';

echo $message, '<br />';
echo 'Je nieuwe kapitaal is:', $kapitaal, '<br />';
 
Ik bedoel bij:

HTML:
<input name="kapitaal" value="10000"  maxlength="5" size="5" type="text">

Het stukje code daar omheen.

Ben je er overigens dat je layout helemaal fout is in FireFox? Dat komt zeer waarschijnlijk doordat er 115 errors in je pagina zitten.
 
a

Ik weet dat er van die hele template niets klopt in firefox. Hier besteed ik later aandacht aan.
Wat moet ik precies doen ?
 
a

<?php include ("begin.php")?>




<!-- Het dobbel spel -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>

<body>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>

<body>







<!-- Post en het de spellen -->

<?php
$kapitaal = $_POST[ 'kapitaal' ];
$inzet = $_POST[ 'inzet' ];
$gok = $_POST[ 'gok' ];



$n = ( ctype_digit ( $_POST[ 'aantal' ] ) ) ? $_POST[ 'aantal' ] : 1;


for ( $i = 1; $i <= $n; $i++ ) {

$val1 = rand ( 1 , 6 );
$val2 = rand ( 1 , 6 );




}
?>


<!-- Het formulier + kieslijst-->


<form method="post" action="">
<h3> Kapitaal <input name="kapitaal" value="<?php echo $kapitaal ?>" maxlength="5" size="5" type="text"></h3>
<h3>Inzet <input name="inzet" value="<?php echo $inzet ?>" maxlength="6" size="6" type="text"></h3>


<!-- 7h=7 of hoger s= S1X =lager dan 7 g=gelijk aan elkaar (d1=d2) -->
<SELECT NAME="gok">
<OPTION VALUE="kies" >--- Kies een spel ---</OPTION>
<OPTION VALUE="7h" >7 of hoger</OPTION>
<OPTION VALUE="s" >S1X</OPTION>
<OPTION VALUE="g" >Even</OPTION>
</SELECT> <br>

Kies een spel naar keuze. <br>
- Bij 7 of hoger wint u uw inzet terug als u 7 of hoger gooit, maar je verlies telt dubbel! <br>
- Bij S1X wint u uw inzet terug als u 6 gooit. <br>
- Bij even wint u uw inzet dubbel terug als u met 2 dobbelstenen hetzelfde aantal ogen gooit. <br>

<input value="Gooi!" name="submit" type="submit">
<!-- De switch -->
</form>
<?php
switch($gok)
{
case '7h':
$kapitaal = ( ( $val1 + $val2 ) >= 7 ) ? ( $kapitaal + $inzet ) : ( $kapitaal - ($inzet * 2) );
$message = ( ( $val1 + $val2 ) >= 7 ) ? 'Hoger dan 7! Je hebt gewonnen!' : 'Helaas, niet gewonnen';
break;
case 's':
$kapitaal = ( ( $val1 + $val2 ) == 7 ) ? ( $kapitaal + $inzet ) : ( $kapitaal - $inzet );
$message = ( ( $val1 + $val2 ) == 7 ) ? 'Hoger dan 7! Je hebt gewonnen!' : 'Helaas, niet gewonnen';




}
?>











<!-- Het tonen van de score -->

<?php
echo 'Dobbelsteen 1: ', $val1, '<br />';
echo 'Dobbelsteen 2: ', $val2, '<br />';
echo 'Totaal: ', ( $val1 + $val2 ), '<br />';

echo 'Je inzet was: ', $_POST[ 'inzet' ], '<br />';

echo $message, '<br />';
echo 'Je nieuwe kapitaal is:', $kapitaal, '<br />';
?>
 
Laatst bewerkt:
Je kunt het beste alle berekeningen uitvoeren voor dat je output geeft. Dan gebruik je wel gewoon:

PHP:
<h3> Kapitaal <input name="kapitaal" value="<?php echo $kapitaal ?>" maxlength="5" size="5" type="text"></h3>

Het probleem is namelijk, dat je eerste die waarde output, en dan pas ermee gaat rekenen.

En zet de volgende keer alsjeblieft even je code tussen [ PHP] [ /PHP] tags (zonder de spaties).
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan