Exercice Debutant

Exercice Debutant - VB/VBA/VBS - Programmation

Marsh Posté le 07-06-2008 à 12:31:18    

Bonjour j'ai un exercice à faire et j'ai du mal..
 
Voici l'énnoncé:  
 
Ecrire un programme PG1() :
- qui effectue le lancer de 3 dés
- puis qui calcule le nombre de points gagnés par l'utilisateur selon la règle du jeu suivante :
si la somme des résultats donnés par les trois dés est strictement inférieure à 10, aucun
point n'est gagné ;
si la somme des résultats est comprise entre 10 et 15 (bornes comprises), le nombre de
points gagnés vaut 2 ;
si la somme des résultats est strictement supérieure à 15, le nombre de points gagnés
vaut 8 ;
- puis qui affiche les trois résultats ainsi que le nombre de points gagnés dans une même boite
de dialogue
 
Voici mon programme :  
 
 
Sub dé()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim score As Integer
x = Int((Rnd * 6) + 1)
y = Int((Rnd * 6) + 1)
z = Int((Rnd * 6) + 1)
If x + y + z < 10 Then
score = 0
ElseIf x + y + z >= 10 And x + y + z <= 15 Then
score = 2
ElseIf x + y + z > 15 Then
score = 8
End If
MsgBox ("les 3 lancés sont" & " " & x & " " & y & " " & z & " " & "vous avez gagné" & " " & score & " " & "points" )
End Sub
 
 
On me demande alors d'écrire le code d'une fonction jeu(x,y,z) qui calcule le nombre de points gagnés à partir de trois
résultats de lancers de dés passés en paramètres.

 
Mais la je ne vois pas pouvez vous m'aider ?

Reply

Marsh Posté le 07-06-2008 à 12:31:18   

Reply

Marsh Posté le 07-06-2008 à 13:28:39    

salut


Utiliser un Select Case pour la lisibilité : voir aide en ligne
ainsi qu'un Randomize en début de procédure
 
la fonction devrait ressembler à qqch comme
 
Private Function Jeu(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) As Integer
Dim iTotal As Integer, iScore As Integer
    iTotal = a + b + c
    Select Case iTotal
     .... à toi de completer
    End Select
    Jeu = iScore
End Function
 
Sub dé()
Dim x As Integer
Dim y As Integer
Dim z As Integer
    ....
    x = Int((Rnd * 6) + 1)
    y = Int((Rnd * 6) + 1)
    z = Int((Rnd * 6) + 1)
    'Debug.Print x, y, z, Jeu(x, y, z)
 
    MsgBox ("les 3 lancés sont" & " " & x & " " & y & " " & z & " " & "vous avez gagné" & " " & Jeu(x, y, z) & " " & "points" )
End Sub


Message édité par kiki29 le 07-06-2008 à 13:46:11
Reply

Marsh Posté le 07-06-2008 à 15:44:20    

oulah merci lol meme si pour moi c'est deja compliqué il y a pleins de truc que 'lon a pas vu en cours comme "debug print" "ByVal" ,"select case itotal etc..."

Reply

Marsh Posté le 07-06-2008 à 17:30:59    

Bref,il n'y a qu'en forgeant que ....


Option Explicit
 
Sub dé()
Dim x As Integer
Dim y As Integer
Dim z As Integer
    Randomize
    x = Int((Rnd * 6) + 1)
    y = Int((Rnd * 6) + 1)
    z = Int((Rnd * 6) + 1)
    MsgBox ("les 3 lancés sont" & " " & x & " " & y & " " & z & " " & "vous avez gagné" & " " & Jeu(x, y, z) & " " & "points" )
End Sub
 
Private Function Jeu(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer) As Integer
Dim iTotal As Integer, iScore As Integer
    iTotal = a + b + c
    Select Case iTotal
        Case Is < 10
            iScore = 0
        Case 10 To 15
            iScore = 2
        Case Else
            iScore = 8
    End Select
    Jeu = iScore
End Function


Message édité par kiki29 le 07-06-2008 à 17:33:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed