Help! Dobbelsteen spel

  • Onderwerp starter Onderwerp starter Miyu
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Miyu

Gebruiker
Lid geworden
23 dec 2007
Berichten
6
Hallo,

Ik begin pas net met php en wil graag een dobbelsteen spel maken, ik ben al aardig op weg, alleen kom ik niet meer verder :(



De bedoeling is dus dat je mijn geanimeerde gif dobbelstenen ziet vallen op het bord.
Alleen krijg ik de gif plaatjes niet aan de praat en verschijnt de tekst niet zoals het eigenlijk hoort.


Als ik naar mijn site ga, dan zie ik dat hij dit laat zien tussen de plaatjes: "; print ""; if ($getal1==6) { $getal2=rand(1,6); print ""; print "Je mag nog een keer gooien"; } '
/' print "Je hebt in totaal" .$getal1+$getal2.; ?>

maar ik heb geen flauw idee wat ik eraan zou moeten veranderen :confused:


Dit is mijn hele script:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Roll the dice</title>
</head>

<?php

$getal1=rand(1,6);
print "<h1>".$getal1."</h1>";
print "<img src=\"Dice_".$getal1.".gif\">";  

if ($getal1==6) {
$getal2=rand(1,6); 
print "<img src=\"Dice_".$getal2.".gif\">"; 
print "Je mag nog een keer gooien"; } 

'<br>/' 

print "Je hebt in totaal" .$getal1+$getal2.;
?>

<style type="text/css">
<!--
body {
	background-color: #FFFFFF;
}
body,td,th {
	font-family: Georgia, Times New Roman, Times, serif;
	font-size: 16px;
	color: #FFFFFF;
}
-->
</style></head>

<body>
<p align="center">&nbsp; </p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center"><img src="dice_board.jpg" width="500" height="352" /></p>
</body>
</html>
 
Laatst bewerkt:
volgens mij werkt het niet omdat je de link niet aangeeft maar aleen .gif

jouwplaatje.gif zo zou je het moeten doen
 
Laatst bewerkt door een moderator:
hmm nee dat is het volgens mij niet, want de bedoeling is dus dat de vertoonde dice randomly word bepaald, zodat als je refresh drukt op de pagina, je telkens een ander resultaat krijgt. Ik ben er wel achter gekomen dat mijn web hoster geen PHP ondersteunde. Nu heb ik een lycos web site,dit keer geeft hij wel een concreeter probleem dat zich bevindt op lijn 20..maar wat kan ik er aan veranderen??
(het script is nog steeds hetzelfde)


error: Parse error: syntax error, unexpected T_PRINT in /data/members/free/tripod/nl/d/o/b/dobbelsteen/htdocs/index.php on line 20
 
Laatst bewerkt:
Het feit dat een .php-pagina mij de broncode laat zien vertelt mij dat je host geen PHP ondersteunt.

Daarnaast zorgt je script er voor dat er output wordt gegeven voordat je in HTML <body> hebt gebruikt. Niet echt netjes dus.

Er zitten wel wat fouten in je code met name bij het printen.

Mocht je toch een host vinden dan kun je beter deze code gebruiken.
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Roll the dice</title>
<style type="text/css">
<!--
body {
background-color: #FFFFFF;
}
body,td,th {
font-family: Georgia, Times New Roman, Times, serif;
font-size: 16px;
color: #FFFFFF;
}
-->
</style></head>

<body>

<?php
$getal1 = rand(1,6);
echo '
<h1>'. $getal1 .'</h1>
<img src="Dice_'. $getal1 .'.gif"><br />';
if ($getal1 == 6) {
  $getal2 = rand(1,6); 
  echo'
  <img src="Dice_'. $getal2 .'.gif"><br />
  Je mag nog een keer gooien';
}
echo '<br />Je hebt in totaal '. $getal1+$getal2;
?>

<p align="center"><img src="dice_board.jpg" width="500" height="352" /></p>
</body>
</html>
Ik snap je berekening eigenlijk niet:(

Eerst laat je een getal random genereren. Vervolgens ga je kijken of dat getal 6 is. Is hij dat dan laat je een 2e getal genereren en geef je een melding dat er nog een keer gegooid mag worden.

Je laat echter buiten de IF-statement wel getal1 optellen met getal2 maar als getal1 geen 6 is dan wordt er nooit een getal2 gemaakt :confused:

Ook vraag ik me af hoe je opnieuw moet gaan gooien... Moet je dan de pagina vernieuwen? Anders krijg je namelijk geen nieuwe getallen...

edit: Ik was bezig met het bericht aan te maken toe jij reageerde :)
 
Laatst bewerkt:
Ik mijn script bijgepast naar jou zeggen..en thanks Tha Devil, ik zie eindelijk m'n dice board weer! :) :thumb:

Ook krijg ik dit keer geen error, alleen doen mijn gif plaatjes (de dices) het nog steeds niet. >_<

De bedoeling van de script moet dus eigenlijk zijn dat je mag gooien. Als er een 6 gegooid wordt, mag je nog een keer gooien. Het echt te simpel voor woorden maar ik krijg het maar niet goed -_-" . En ja de melding dat er nog een keer gegooid kan worden moet dus alleen maar komen wanneer er de eerste keer een zes wordt gegooid.. dat moet waarschijnlijk dus tussen die twee commands in komen te staan..hmm
 
Heb je bestanden genaamd Dice_1.gif, Dice_2.gif etc wel in dezelfde map staan als dit script?

Ik weet anders nog wel een mooi recursief trucje :)
PHP:
<?php
function dice($i_totaal) {
  $i_getal = rand(1,6);  
  $i_totaal = $i_totaal + $i_getal;
  echo '<img src="Dice_'. $i_getal .'.gif" /><br />';
  if($i_getal == 6) {
    dice($i_totaal);
  } else {
    echo 'Totaal: '. $i_totaal;
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"><head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Roll the dice</title> 
<style type="text/css"> 
<!-- 
body { 
background-color: #FFFFFF; 
} 
body,td,th { 
font-family: Georgia, Times New Roman, Times, serif; 
font-size: 16px; 
color: #FFFFFF; 
} 
--> 
</style></head> 

<body>
<?
dice(0);
?>
<p align="center"><img src="dice_board.jpg" width="500" height="352" /></p>
</body>
</html>
 
Laatst bewerkt:
oke, het is me gelukt! de dobbelstenen zijn te zien, alleen moet ik nu nog mijn dobbelstenen zien te verplaatsen, want dat loopt niet echt soepel :/



<?php
$getal1 = rand(1,6);
echo '
<img src="dice_'. $getal1 .'.gif"><br />';
if ($getal1 == 6) {
$getal2 = rand(1,6);
echo'
<img src="dice_'. $getal2 .'.gif"><br />';
echo'Je mag nog een keer gooien';
}
echo 'Totaal: '. $getal1+$getal2;
?>
 
Laatst bewerkt:
Hoe wil je ze verplaatsen dan? Ik heb in mijn functie er voor gekozen om elke keer een nieuwe regel te geven...
 
Het liefst zou ik de twee dobbelstenen naast elkaar willen hebben..
 
Laatst bewerkt:
Je hebt dus een maximaal aantal keer dat je mag gooien?

Ik heb de functie nu gemaakt dat hij elke keer bij een 6 opnieuw gaat "gooien". Dus als er 2x een 6 is gegooid dan gooit hij nog een keer...
 
Hmm nee niet echt. Het enigste wat belangrijk is, is dat hij als je de eerste keer een 6 gooit, hij je nog een keer laat gooien. als dat ook een 6 is dan is het totaal wat je hebt gegooid 12. Meer dan dat hoeft het niet echt te zijn :)
 
Dan voegen we wat aan de IF-statement in de functie toe :)

PHP:
<?php
function dice($i_totaal) {
  $i_getal = rand(1,6);  
  $i_totaal = $i_totaal + $i_getal;
  echo '<img src="Dice_'. $i_getal .'.gif" /><br />';
  if($i_getal == 6 && $i_totaal < 13) {
    dice($i_totaal);
  } else {
    echo 'Totaal: '. $i_totaal;
  }
}
?>
Eerst ging hij nog een keer gooien wanneer $i_getal 6 was.
Nu gooit hij nog een keer wanneer $i_getal 6 is EN $i_totaal kleiner is dan 13.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan