Boucles, exercice

juju782

XLDnaute Nouveau
Bonjour

je devais réaliser ce programme:

On veut programmer le jeu "Pile ou face". L’utilisateur entre son choix [le programme demande à l’utilisateur de saisir] qui est comparé au choix fait au hasard par l'ordinateur. Si les deux valeurs sont égales l'utilisateur a gagné. Programmer dix [n] réalisations de ce jeu.
Voila ce que j'ai fais (ca marche) :

Sub pile()
Dim x As Integer
Dim i As Integer
Dim score As Integer
Dim p As String, q As String
score = 0
For i = 1 To 10
x = Int((Rnd * 2)) + 1
If x = 1 Then
p = "pile"
Else
p = "face"
End If
q = InputBox("Rentrez pile ou face")
If p = q Then
MsgBox ("bonne réponse")
score = score + 1
Else
MsgBox ("mauvaise réponse")
End If
Next
MsgBox ("vous avez gagner" & " " & score & " " & "fois")

End Sub




On me demande alors: "Modifier l'exercice précédent pour que maintenant le jeu s'arrête soit lorsque l'utilisateur répond "non" à une question posée soit lorsque le nombre de réalisations de ce jeu dépasse 10 "

Mais la je vois pas quoi rajouter ? ?
 
C

Compte Supprimé 979

Guest
Re : Boucles, exercice

Salut juju782,

Comme tu fais une boucle For I = 1 to 10
Pour les plus de dix tu n'as rien à modifier puisque ça va s'arrêter tout seul !

Sinon pour arrêter en cour, tu peux mettre tou à la fin

Code:
...
  ' Demander si on veut continuer
  If MsgBox("Voulez-vous conitnuer ?", vbQuestion + vbYesNo, "QUESTION ...") = vbNo Then Exit Sub
End Sub

Voilà ;)
 

juju782

XLDnaute Nouveau
Re : Boucles, exercice

Exact ce serait plus la boucle while..

j'ai fais:

...
..
score = 0
recommence="0"
While (recommence="0")

For i = 1 To 10
x = Int((Rnd * 2)) + 1
If x = 1 Then
p = "pile"
Else
p = "face"
End If
q = InputBox("Rentrez pile ou face")
If p = q Then
MsgBox ("bonne réponse")
score = score + 1
Else
MsgBox ("mauvaise réponse")
Else
recommence=Inputbox("voulez vous rejouez O/N")
End If
Next
Wend
MsgBox ("vous avez gagner" & " " & score & " " & "fois")

End Sub

Mais ça me met Else sans iF
 

juju782

XLDnaute Nouveau
Re : Boucles, exercice

Bonjour !

J 'ai refait cette macro de cette manière:

Sub pile()
Dim x As Integer
Dim i As Integer
Dim score As Integer, question As String
Dim p As String, q As String, recommence As String
score = 0
recommence = "0"
While (recommence = "0")
For i = 1 To 10
x = Int((Rnd * 2)) + 1
If x = 1 Then
p = "pile"
Else
p = "face"
End If
q = InputBox("Rentrez pile ou face")
If p = q Then
MsgBox ("bonne réponse")
score = score + 1
Else
MsgBox ("mauvaise réponse")
End If
recommence = InputBox("voulez vous rejouez O/N")

Next
Wend
MsgBox ("vous avez gagner" & " " & score & " " & "fois")

End Sub


ca fonctionne sauf "recommence", savez pourquoi ?
 
C

Compte Supprimé 979

Guest
Re : Boucles, exercice

Salut Juju782,

Juste un petit conseil, si je peux me permettre, pour ton partiel ;)

Dans du code VBA il est vivement conseillé, d'incrémenter vers la droite à chaque fois que tu as une boucle ou une condition

C'est nettement plus lisible, de plus ça evite les message d'erreur du type "If sans End If" ou "While sans Wend", etc ...

Voir le code ci joint, présenté comme il devrait l'être
Code:
Sub pile()
  Dim x As Integer
  Dim i As Integer
  Dim score As Integer, question As String
  Dim p As String, q As String, recommence As String
  score = 0
  ' Recommence doit être la lettre "O" et non le chiffre 0
  recommence = "O"
  While (recommence = "O")
    For i = 1 To 10
      x = Int((Rnd * 2)) + 1
      If x = 1 Then
        p = "pile"
      Else
        p = "face"
      End If
      q = InputBox("Rentrez pile ou face")
      If p = q Then
        MsgBox ("bonne réponse")
        score = score + 1
      Else
        MsgBox ("mauvaise réponse")
      End If
      recommence = InputBox("voulez vous rejouez O/N")
    Next
  Wend
[B][COLOR=red]  ' Supprimer les parenthèses[/COLOR][/B]
  MsgBox "vous avez gagner" & " " & score & " " & "fois"
End Sub

Sinon, pour répondre à ta question, dans while tu avais un ZERO et non la lettre "O"

A+
 
Dernière modification par un modérateur:
C

Compte Supprimé 979

Guest
Re : Boucles, exercice

Re,

Je n'avais pas testé, il faut supprimer les parenthèses de MsgBox !
Avec les parenthèses Msgbox() doit être attribuée à une variable.

Par contre ton code n'est pa bon puiqu'il boucle 10 fois en se moquant de la réponse de l'utilisateur !

Si au bout de 3 fois je ne veux plus jouer, la boucle continue, à étudier ...

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Boucles, exercice

Bonjour juju, Bruno, Marcel

une autre solution, pour le fun :

Code:
Sub test()
Dim recommence As String, i As Byte, x As Byte, p As String, q As String, score As Byte
Randomize
Do
    For i = 1 To 10
        x = Round(Rnd, 0)
        p = IIf(x, "pile", "face")
        q = InputBox("Rentrez pile ou face")
        MsgBox IIf(p = q, "bonne réponse", "mauvaise réponse")
        If p = q Then score = score + 1
    Next
    MsgBox "Vous avez gagné " & score & " fois !!!"
    score = 0
    recommence = InputBox("voulez vous rejouez O/N")
Loop While recommence = "O"
End Sub

bonne journée
@+
 

Statistiques des forums

Discussions
312 305
Messages
2 087 091
Membres
103 467
dernier inscrit
Pandiska