Bonjour,
J'ai un projet qui consiste à réaliser un Scrabble en VB. Je suis arrivé au problème de la pioche aléatoire des lettres du jeu.
J'ai créé une fenêtre de test à laquelle j'ai joint mon code, mais elle ne fonctionne pas...
Il faut tenir compte que chaque lettre apparaît un certain nombre de fois dans le jeu (9 lettres A, 2 lettres B, 1 lettre C, etc...). J'ai pour cela créé un tableau de 27 cases (il ne faut pas oublier les 2 jokers) dans lequel je stocke le nombre de lettres restantes.
J'ai aussi créé une variable globale reste qui m'indique le nombre total de lettres restantes à piocher.
J'ai utilisé les fonctions Randomize() et Rnd() dans une fonction RANDOM, que j'appelle au clic sur un bouton, qui affiche par la suite la lettre sortie dans un Label.
Mais voilà : quand je lance la fenêtre, ca me la ferme immédiatement !!! oO
Voici le code commenté :
J'ai beau lire et relire mon code, je ne vois pas où se trouve l'erreur ! Peut-être est-ce bêtement dans mes paramètres de fonction ou dans ma boucle while... Je n'arrive pas à voir :s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 Public Class Test_random Dim pts(26) As Integer Dim reste As Integer 'nombre total de lettres restantes Sub initialisation() reste = 101 'on initialise le nombre de lettres restantes '(101 car pour la fonction RANDOM() on ajoutera 1 à ce nombre) 'Tableau pts : nombre de lettres dans le jeu pts(0) = 9 'lettre A pts(1) = 2 pts(2) = 2 pts(3) = 3 pts(4) = 15 pts(5) = 2 pts(6) = 2 pts(7) = 2 pts(8) = 8 pts(9) = 1 pts(10) = 1 pts(11) = 5 pts(12) = 3 pts(13) = 6 pts(14) = 6 pts(15) = 2 pts(16) = 1 pts(17) = 6 pts(18) = 6 pts(19) = 6 pts(20) = 6 pts(21) = 2 pts(22) = 1 pts(23) = 1 pts(24) = 1 pts(25) = 1 'lettre Z pts(26) = 2 'JOKERS End Sub Function RANDOM() As Char Dim i, somme, numero_lettre As Integer Dim lettre_tiree As Char 'initialisation du générateur de nombres aléatoires Randomize() 'on obtiendra un nombre compris entre 1 et 102 (ou valeur de la variable reste) numero_lettre = CInt(Int(reste * Rnd() + 1)) somme = 0 'on initialise la somme, qui va recherche la lettre qui correspond à numero_lettre i = 0 'initialisation de la variable i, qui correspond à la ième case de pts : la lettre dont le code ASCII est i+65 'on parcourt le tableau en modifiant au fur et à mesure la valeur de somme 'quand la variable somme est assez proche de numero_lettre, on sort de la boucle While (somme < numero_lettre) somme = somme + pts(i) i = i + 1 End While 'modification du nombre de lettres restantes pts(i) = pts(i) - 1 reste = reste - 1 'lettre_tiree reçoit le code ASCII qui correspond à la lettre retenue lettre_tiree = Chr(i + 65) Return lettre_tiree End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'clic sur le bouton : affichage de la lettre à l'aide de la fonction RANDOM() Label1.Text = RANDOM() End Sub End Class
Si quelqu'un pouvait m'aider, je lui en serais très reconnaissant !
Merci d'avance !
Partager