Problème avec new random

Résolu/Fermé
benben - 8 nov. 2009 à 18:21
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 8 nov. 2009 à 18:42
Bonjour, j'ai un soucis dans mon programme de vb net (je suis en bts informatique premier année, je ne trouve pas mon erreur. mes 3 nombres aléatoires avec la fonction new random() sont toujour identique a chaque partie ...
voici mon code , nb1 que j'enregistre en entier dans nb2 avec la fonction next() sera identique a nb4 que j'enregistre dans nb5... je ne sais pas pourquoi xd en clair nb1=nb4=nb7 alors que je voudrai 3 nombre aléatoire (diférent a chaque partie ;) )
résumé du programme au niveau du problème :
Public Class F1
Public nb1 As New Random()
Public nb4 As New Random()
Public nb7 As New Random()
Public nb2 As Integer
Public nb3 As Integer
Public nb5 As Integer
...
Private Sub R1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles R1.Click
nb2 = nb1.Next(10)
nb5 = nb4.Next(10)
nb8 = nb7.Next(10)

End Sub

et en msgbox nb2 = nb5 = nb8... c'est mon problème

aussi j'aimerai savoir s'il y'a un autre moyen pour convertir des données récupérés dans le textbox en entier que : nb3 = Integer.Parse(TB1.Text)
car si je suprime un nombre en textbox avec la touche retour au lieu de le remplacé par un autre le programme plante a cause de sa ^^


si besoin voila le programme en entier :

Option Strict On
Option Explicit On

Public Class F1
Public nb1 As New Random()
Public nb4 As New Random()
Public nb7 As New Random()
Public nb2 As Integer
Public nb3 As Integer
Public nb5 As Integer
Public nb6 As Integer
Public nb8 As Integer
Public nb9 As Integer
Public i, j As Integer



Private Sub R1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles R1.Click
TB1.Show()
TB2.Show()
TB3.Show()
nb2 = nb1.Next(10)
nb5 = nb4.Next(10)
nb8 = nb7.Next(10)
j = 10
i = 0
Timer1.Enabled = True
Timer2.Enabled = False
pb1.Value = 0
End Sub
Private Sub TB1_Tkeypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TB1.KeyPress

If IsNumeric(e.KeyChar) Or e.KeyChar = vbBack Then
e.Handled = False
Else
e.Handled = True
End If

End Sub

Private Sub TB2_keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TB2.KeyPress

If IsNumeric(e.KeyChar) Or e.KeyChar = vbBack Then
e.Handled = False
Else
e.Handled = True
End If

End Sub

Private Sub TB3_keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TB3.KeyPress

If IsNumeric(e.KeyChar) Or e.KeyChar = vbBack Then
e.Handled = False
Else
e.Handled = True
End If

End Sub

Private Sub TB1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TB1.TextChanged


nb3 = Integer.Parse(TB1.Text)
If nb3 > nb2 Then
lb1.Text = "-"
Else
If nb3 < nb2 Then
lb1.Text = "+"
Else
If nb3 = nb2 Then
lb1.Text = "ok"
TB2.Focus()
End If
End If

End If

End Sub

Private Sub TB2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TB2.TextChanged

nb6 = Integer.Parse(TB2.Text)
If nb6 > nb5 Then
lb2.Text = "-"
Else
If nb6 < nb5 Then
lb2.Text = "+"
Else
If nb6 = nb5 Then
lb2.Text = "ok"
TB3.Focus()
End If
End If

End If

End Sub

Private Sub TB3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TB3.TextChanged

nb9 = Integer.Parse(TB3.Text)
If nb9 > nb8 Then
lb3.Text = "-"
Else
If nb9 < nb8 Then
lb3.Text = "+"
Else
If nb9 = nb8 Then
lb3.Text = "ok"
End If
End If

End If

End Sub

Private Sub R_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles R.Click
If lb1.Text = "ok" And lb2.Text = "ok" And lb3.Text = "ok" Then
MsgBox("Vous avez gagné")
Timer1.Enabled = False
Timer2.Enabled = False
pb1.Value = 0
Else
If j > 0 Then
MsgBox("vous n'avez pas gagnez, continuez !!!")
Else
MsgBox("partie terminée")
End If
End If

End Sub

Private Sub F1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TB1.Hide()
TB2.Hide()
TB3.Hide()

End Sub


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
pb1.Increment(1)
lb4.Text = pb1.Value & "%"
If pb1.Value = 99 Then
lb4.Text = "plus vite !!!"
i = 0
Timer2.Enabled = True
Timer1.Enabled = False
pb1.Value = 0
i = 0
End If

End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
j = j - 1
lb5.Text = j.ToString
If j = 0 Then
lb4.Text = "perdu"
Timer1.Enabled = False
Timer2.Enabled = False
TB1.Hide()
TB2.Hide()
TB3.Hide()
End If

End Sub
End Class


merci beaucoup de m'aider :)

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
8 nov. 2009 à 18:42
salut. Je n'y connais rien dans VB, mais essaye d'éditer ton message et de mettre des balises "code" autour (le bouton à coté de gras, italique, souligné), sinon avec cette taille c'est pas lisible!

Bonne chance et bonne soirée
0