Problème de boucle

Petit nouveau ! | 3 Messages

07 févr. 2010, 12:25

Bonjour,
Depuis quelques jours je m'intéresse au php, j'ai lu pas mal de tutoriels mais j'aurais besoin de votre aide à propos d'une variable dans une boucle parce que je ne sais pas du tout comment faire pour la mettre en place.
Je m'explique donc:
Mon objectif était de créer un mini-jeu de basket dont voici le déroulement que je souhaitais réaliser et le code que j'ai fait:
"Un des deux joueurs est pris au hasard, si c'est le joueur 1, il doit tomber sur un chiffre entre 0 et 45 pour marquer (c'était pour refléter le %au shoot) et alors il met deux points" Mon code fonctionne, mais je n'arrive pas à additionner son nombre de points...

for ($i=0; $i<10; $i++) {
srand();
$rand = rand(1 , 2);
if ($rand == 1)
{echo "Joueur 1 a la balle et tente de tirer...<br/>";
srand();
$rand = rand(0 , 100);
if ($rand <= 45)
{echo "2pts <br/>";}
else
{echo "Mais Joueur 2 l'empêche de marquer<br/>";}}
else
{echo "Joueur 2 prend la balle et part en attaque!<br/>";}
}

Mon code repose donc sur une boucle avec pas mal de if... else. Mais ce que je n'arrive pas à faire c'est d'additionner à la fin de la boucle le nombre de points qu'aura mis le joueur 1... Vous avez une idée? :(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 févr. 2010, 12:36

Il te faut pour cela stocker le score dans une variable :)

$scoreJoueur = 0; // déclaration et initialisation de la variable
for ($i=0; $i<10; $i++) { 
  srand();
  $rand = rand(1 , 2);
  if ($rand == 1) {
    echo "Joueur 1 a la balle et tente de tirer...<br/>";
    srand();
    $rand = rand(0 , 100);
    if ($rand <= 45){
      echo "2pts <br/>";
      $scoreJoueur += 2; // ajoute deux à la variable $scoreJoueur (équivaut à $scoreJoueur=$scoreJoueur+2)
    }
    else {
      echo "Mais Joueur 2 l'empêche de marquer<br/>";
    }
  }
  else {
    echo "Joueur 2 prend la balle et part en attaque!<br/>";
  }
}

echo "Score du joueur 1 : " . $scoreJoueur;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

07 févr. 2010, 13:16

Merci çà marche! =D>
Par contre est ce que tu pourrais m'aider pour un autre souci dans mon code parce j'ai compris la base mais après pour l'adapter à ce qu'on souhaite c'est pas simple promis je te pose plus de questions après :mrgreen:
-C'est que je voudrais savoir si au lieu de mettre:
srand();
$rand = rand(1 , 2);

Je pourrais mettre:
$joueur1=45
$joueur2=42
srand();
$rand = rand($joueur1 , $joueur2);

Encore merci de ton aide ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 févr. 2010, 14:10

Le plus simple c'est généralement d'essayer :)

Mais pour répondre à ta question : Oui ... et Non .... (ça t'avance hein ? ;))

Oui, dans la mesure où tu peux très bien utiliser des variables plutôt que des valeurs. Tu peux donc sans problème écrire
srand();
$rand = rand($joueur1 , $joueur2);
Non, dans la mesure ou la fonction rand() attend une valeur minimum en premier argument, et une valeur maximum en second argument. Donc si tu spécifies 45 en valeur minimum et 42 en valeur maximum, php aura beaucoup de mal à te trouver une valeur qui corresponde ;)
$joueur1=45
$joueur2=42
srand();
$rand = rand($joueur1 , $joueur2);
// équivaut à 
srand();
$rand = rand(45, 42);
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

07 févr. 2010, 15:02

Ok on ne peut pas faire un code comme celui-ci pour éviter le problème?
srand();
$rand = rand($joueur1 OR $joueur2);

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 févr. 2010, 15:59

Il y a toujours des solutions :)

La première étape, c'est de réussir à formuler ce que tu veux faire. En gros, quand tu dis "rand($joueur1 OR $joueur2)", concrètement, quelle information veux tu récupérer ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...