Accueil > > > JEU DE MATH - CALCUL MENTAL
JEU DE MATH - CALCUL MENTAL
Information sur la source
Description
Voici un petit jeu de Math sympathique. J'ai repris l'idée d'un jeu appelé Yakamath sur un des nombreux serveur de jeu gratuit en ligne. Règles du jeu : Un calcul est donné, trouvez le résultat pour cela additionnez les chiffres qui sont dans la grille en cliquant dessus. Une fois que vous aurez estimé avoir le bon résultat, cliquez sur OK. Si le résultat est juste : les cases deviennent blanches et vous gagnez des points. Si vous faites une ligne blanche horizontale ou verticale, vous gagnez 100 points de bonus. Si vous vous trompez ou mettez plus de 30s à répondre Des cases rouges remplacent les cases cochées, vous empêchant ainsi de les utiliser à nouveau. Amusez-vous bien ;)
Source
- Option Explicit
- Dim First As Boolean 'Indique si on vient de lancer le programme
- Dim Total, a, b, c, d, Etat, NbParties As Integer 'Variable de calcul
- Dim BonusX(8) As Boolean, BonusY(8) As Boolean 'Stock les numéros de lignes qui ont eu un bonus pr ne pas les recompter
- Dim TabColorChf(80) As String 'Stockage de la couleur et du chiffre des cases
- Private Sub Chiffre_Click(Index As Integer) 'On pass l'image en jaune pr indiquer le click
- If ((Left(TabColorChf(Index), 1) <> "O") And (Left(TabColorChf(Index), 1) <> "K")) Then
- If Right(TabColorChf(Index), 1) = "J" Then
- Chiffre(Index).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(Index), 1) & "V.bmp") 'On affiche le chiffre dans la case
- TabColorChf(Index) = Left(TabColorChf(Index), 1) & "V" 'On stock le chiffre et la couleur de la case
- Total = Total - Left(TabColorChf(Index), 1) 'On soustrait les chiffres qui ont été enlevé par le joueur
- Else
- Chiffre(Index).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(Index), 1) & "J.bmp")
- TabColorChf(Index) = Left(TabColorChf(Index), 1) & "J" 'On stock le chiffre et la couleur de la case
- Total = Total + Left(TabColorChf(Index), 1) 'On additionne les chiffres qui ont été cliqué pr donner le total
- End If
- End If
- End Sub
- 'Démarrage de l'application
- Private Sub Form_Load()
- NbParties = 13 'On détermine combien de partie il y a (13-1)
- First = True
- Total = 0 'Initialisation du total donné par le joueur
- a = 0: b = 0: c = 0: d = 0
- Tps.Text = "30"
- Init 'Initialisation des pièces sur le damier
- Stade 1 '1er niveau de difficulté de calcul
- Points.Text = 0
- End Sub
- 'Nouvelle partie
- Private Sub New_Click()
- Init 'Répartion des pièces sur le damier
- End Sub
- 'Validation, vérification du résultat, calcul des points
- Private Sub OK_Click()
- Dim i As Integer, j As Integer, k As Integer, l As Integer, t As Integer
- Dim OK As Boolean
- OK = False 'Variable indiquant si le résultat est juste ou faux
- OK = VerifRes 'on vérifie si l'addition de chiffres sélectionnés donne bien le résultat attendu
- k = 0 '1ere case des 81 au total
- If (OK = True) Then 'Si la réponse est juste
- For j = 0 To 8
- For i = 0 To 8
- If Right(TabColorChf(k), 1) = "J" Then 'Si la case est jaune (donc qu'elle a été cliquée)
- Chiffre(k).Picture = LoadPicture(App.Path & "\" & "OK.bmp") 'On la met en blanc
- TabColorChf(k) = "OK" 'On stock l'état de la case
- End If
- k = k + 1 'case suivante
- Next i
- VerifBonus j, "H" 'On vérifie si ya un bonus
- VerifBonus j, "V" 'On vérifie si ya un bonus
- Next j
- 'On multiplie les points en fonction du temps
- If CInt(Tps.Text) < 30 Then t = 3
- If CInt(Tps.Text) < 20 Then t = 2
- If CInt(Tps.Text) < 10 Then t = 1
- Points = CStr(CInt(Points) + (CInt(Total) * 3 * t)) 'Total des points remportés
- Else 'si la réponse est fausse
- For i = 0 To 80 'On passe toutes les cases cochées en noires
- If Right(TabColorChf(i), 1) = "J" Then
- Chiffre(i).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(i), 1) & "R.bmp") 'On affiche le chiffre dans la case
- 'Chiffre(i).Picture = LoadPicture(App.Path & "\" & "KO.bmp")
- TabColorChf(i) = "KO" 'On passe l'état des cases à KO
- End If
- Next i
- End If
- Total = 0 'On réinitialise l " " & Totales variables de temps et de calcul
- Tps.BackColor = vbGreen: Tps.ForeColor = vbBlack 'La couleur de départ
- Tps.Text = "30" 'On remet le temps à 30s
- If Etat = NbParties Then MsgBox "Le jeu est terminé" 'Indique la fin de la série de question
- End Sub
- 'Niveau de difficulté des calculs
- Private Sub Stade(ByVal Num As Integer)
- Select Case Num
- Case 1 'Addition : 8 + 14 = 22
- Etat = 1
- a = CInt(Rnd * 10) + 1
- b = CInt(Rnd * 10) + 10
- Calcul.Text = CStr(a) & " + " & CStr(b)
- Case 2 'Soustraction : 34 - 10 = 24
- Etat = 2
- a = CInt(Rnd * 10) + 30
- b = CInt(Rnd * 10) + 10
- Calcul.Text = CStr(a) & " - " & CStr(b)
- Case 3 'Multiplication : 4 * 6 = 24
- Etat = 3
- a = CInt(Rnd * 3) + 3
- b = CInt(Rnd * 4) + 2
- Calcul.Text = CStr(a) & " x " & CStr(b)
- Case 4 ' 18 - 6 + 10 = 22
- Etat = 4
- a = CInt(Rnd * 10) + 10
- b = CInt(Rnd * 10) + 3
- c = CInt(Rnd * 10) + 10
- Calcul.Text = CStr(a) & " - " & CStr(b) & " + " & CStr(c)
- Case 5 '(4 * 4 ) + 3 = 19
- Etat = 5
- a = CInt(Rnd * 3) + 3
- b = CInt(Rnd * 4) + 2
- c = CInt(Rnd * 10) + 1
- Calcul.Text = "(" & CStr(a) & " x " & CStr(b) & ") + " & CStr(c)
- Case 6 '(6 * 4) + 5 = 29
- Etat = 6
- a = CInt(Rnd * 3) + 3
- b = CInt(Rnd * 4) + 2
- c = CInt(Rnd * 10) + 1
- Calcul.Text = "(" & CStr(a) & " x " & CStr(b) & ") + " & CStr(c)
- Case 7 '33-(3*3)= 24
- Etat = 7
- a = CInt(Rnd * 10) + 25
- b = CInt(Rnd * 4) + 2
- c = CInt(Rnd * 3) + 1
- Calcul.Text = CStr(a) & " - (" & CStr(b) & " x " & CStr(c) & ")"
- Case 8 '27-(6*1)= 21
- Etat = 8
- a = CInt(Rnd * 10) + 25
- b = CInt(Rnd * 4) + 2
- c = CInt(Rnd * 3) + 1
- Calcul.Text = CStr(a) & " - (" & CStr(b) & " x " & CStr(c) & ")"
- Case 9 '14 + 26 - 8 - 4 =28
- Etat = 9
- a = CInt(Rnd * 10) + 10
- b = CInt(Rnd * 10) + 20
- c = CInt(Rnd * 10) + 5
- d = CInt(Rnd * 10) + 1
- Calcul.Text = CStr(a) & " + " & CStr(b) & " - " & CStr(c) & " - " & CStr(d)
- Case 10 '32-(2*4)+9=33
- Etat = 10
- a = CInt(Rnd * 10) + 25
- b = CInt(Rnd * 4) + 2
- c = CInt(Rnd * 3) + 1
- d = CInt(Rnd * 10) + 1
- Calcul.Text = CStr(a) & " - (" & CStr(b) & " x " & CStr(c) & ") + " & CStr(d)
- Case 11 '18+(13-6)-3=22
- Etat = 11
- a = CInt(Rnd * 10) + 20
- b = CInt(Rnd * 10) + 10
- c = CInt(Rnd * 9) + 1
- d = CInt(Rnd * 9) + 1
- Calcul.Text = CStr(a) & " + (" & CStr(b) & " - " & CStr(c) & ") - " & CStr(d)
- Case 12 '(4x1)+(6-2)=8
- Etat = 12
- a = CInt(Rnd * 6) + 2
- b = CInt(Rnd * 5) + 1
- c = CInt(Rnd * 10) + 5
- d = CInt(Rnd * 7) + 2
- Calcul.Text = "(" & CStr(a) & " x " & CStr(b) & ") + (" & CStr(c) & " - " & CStr(d) & ")"
- End Select
- End Sub
- 'Mélange des pièces du jeu, réinitialisaiton du jeu, nouvelle partie...
- Private Sub Init()
- Dim i, j, k, ran As Integer
- Dim OK As Boolean
- Dim TabChf(8) As Integer 'tableau des chiffres qui composent le quadrillage
- Randomize 'Activation de la fonction permettant d'avoir des chiffres aléatoire
- Tps.Text = "30": Tps.BackColor = vbGreen: Tps.ForeColor = vbBlack
- Points.Text = "0": Total = 0
- Temps.Interval = 1000 '1000 millisecondes soit 1 seconde
- Stade 1 'Au repasse au 1er niveau de difficulté
- For i = 0 To 8
- TabChf(i) = 0 'Initialisation du tableau
- BonusX(i) = False 'Initialisation des lignes de bonus sur les abcisses
- BonusY(i) = False 'Initialisation des lignes de bonus sur les ordonnées
- Next i
- k = 0 '1ere case des 81 au total
- 'C'est 2 boucles vont servir à répartir aléatoirement les chiffres sur la grille
- For j = 0 To 8 'k = 0 1 2 3 4 5 6 7 8
- For i = 0 To 8 ' 9 10 11 12 13 14 15 16 17
- OK = False ' 18 19 20 21 22 23 24 25 26 ...
- If ((i <> 0) Or (j <> 0)) Then 'On passe la 1ere case qui existe par défaut
- k = k + 1 'case suivante
- If First = True Then 'Si c'est la 1ere fois, on charge les autres boutons
- Load Chiffre(k) 'création de chaque bouton de la grille
- Chiffre(k).Visible = True 'on les rend visibles et on les place
- Chiffre(k).Left = 300 * (i) 'abscisse
- Chiffre(k).Top = 300 * (j) 'ordonnée
- End If
- While OK = False 'Tant qu'on a pas trouvé une image à mettre sur la case
- ran = CInt(Rnd * 8) 'choix d'un chiffre entre 0 et 8 (+1)
- If TabChf(ran) <> 9 Then 'Si on a pas déjà atteint la limite de 9 pr chaque chiffre
- Chiffre(k).Picture = LoadPicture(App.Path & "\" & (ran + 1) & "V.bmp") 'On affiche le chiffre dans la case
- OK = True 'On peut passer à la case suivante
- TabChf(ran) = TabChf(ran) + 1 'On incrémente le nombre de fois qu'a été utilisé le chiffre
- TabColorChf(k) = CStr(ran + 1) & "V" 'On stock le chiffre et la couleur de la case
- End If
- Wend
- Else
- ran = CInt(Rnd * 8) 'choix d'un chiffre entre 0 et 8
- Chiffre(k).Picture = LoadPicture(App.Path & "\" & (ran + 1) & "V.bmp") 'On affiche le chiffre dans la case
- TabChf(ran) = TabChf(ran) + 1 'On incrémente le nombre de fois qu'a été utilisé le chiffre
- TabColorChf(k) = CStr(ran) + 1 & "V" 'On stock le chiffre et la couleur de la case
- End If
- Next i
- Next j
- First = False 'Indique que ce n'est plus la 1ere fois qu'on utilise cette fonction afin de ne pas recharger les boutons
- End Sub
- '30s pour trouver la répons eà chaque question
- Private Sub Temps_Timer()
- Dim i As Integer
- Tps.Text = CStr(CInt(Tps.Text) - 1) 'On affiche le décompte des secondes
- 'On change la couleur du fond et de la police en fonction du temps écoulé
- If CInt(Tps) <= 20 Then Tps.BackColor = vbYellow: Tps.ForeColor = vbBlack
- If CInt(Tps) <= 10 Then Tps.BackColor = vbRed: Tps.ForeColor = vbWhite
- 'Lorsque le temps impartie est terminé
- If CInt(Tps) = 0 Then
- Tps.Text = "30" 'On redonne 30s pr le prochain compte
- Tps.BackColor = vbGreen: Tps.ForeColor = vbBlack
- For i = 0 To 80 'Toutes les cases cochées deviennent noires
- If Right(TabColorChf(i), 1) = "J" Then
- Chiffre(i).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(i), 1) & "R.bmp") 'Cases rouges
- 'Chiffre(i).Picture = LoadPicture(App.Path & "\" & "KO.bmp") 'cases noires
- TabColorChf(i) = "KO"
- End If
- Next i
- If Etat + 1 = NbParties Then 'Si c'était le dernier état
- Temps.Interval = 0 'On arrête le timer
- MsgBox "Le jeu est terminé"
- Else 'On passe au niveau suivant
- Etat = Etat + 1
- End If
- Stade Etat 'On passe au niveau de difficulté suivant
- Total = 0
- End If
- End Sub
- 'Vérifie si on a une ligne de cases verticalement alignées
- Private Sub VerifBonus(ByVal y As Integer, ByVal Sens As String)
- Dim i As Integer, j As Integer, k As Integer, Bonus As Integer
- '9 cases blanches alignées horizontalement pour avoir un bonus
- Bonus = 0 'Initilisation du compteur de cases
- For i = 0 To 8
- If Sens = "H" Then
- k = (y * 9) + i 'calcul de l'index du bouton sur la ligne (voir fonction init)
- If BonusX(y) = False Then If Left(TabColorChf(k), 1) = "O" Then Bonus = Bonus + 1 'Si la case est blanche on incrémente le compteur de Bonus
- End If
- If Sens = "V" Then
- k = y + (i * 9) 'calcul de l'index du bouton sur la colonne (voir fonction init)
- If BonusY(y) = False Then If Left(TabColorChf(k), 1) = "O" Then Bonus = Bonus + 1 'Si la case est blanche on incrémente le compteur de Bonus
- End If
- If Right(TabColorChf(k), 1) = "J" Then 'Si la case est jaune (donc qu'elle a été cliquée)
- Bonus = Bonus + 1 'On incrémente le compteur de cases alignées vu que la réponse est juste
- End If
- If Bonus = 9 Then 'Si le joueur a fait une ligne de cases blanches et/ou dorées
- Points = Points + 100 'Il gagne 100 points de Bonus
- If Sens = "H" Then BonusX(y) = True 'Indique que cette colonne a déjà été comptée dans les points
- If Sens = "V" Then BonusY(y) = True
- For j = 0 To 8 'On rend les cases, de la colonne bonus, dorées
- If Sens = "H" Then k = (y * 9) + j 'calcul de l'index
- If Sens = "V" Then k = y + (j * 9) 'calcul de l'index
- Chiffre(k).Picture = LoadPicture(App.Path & "\" & "BO.bmp")
- TabColorChf(k) = "OK" 'On stock l'état de la case
- Next j
- End If
- Next i
- End Sub
- 'On vérifie si l'addition des chiffrex sélectionnés donne bien le résultat attendu
- Private Function VerifRes() As Boolean
- VerifRes = False 'Si la réponse est fausse alors VerifRs = false
- Select Case Etat
- Case 1 '8+14 = 22
- If Total = (a + b) Then VerifRes = True 'Le résultat est correct
- Stade 2 'On passe au niveau de difficulté suivant
- Case 2 '34-10 = 24
- If Total = (a - b) Then VerifRes = True
- Stade 3
- Case 3 '4*6 = 24
- If Total = (a * b) Then VerifRes = True
- Stade 4
- Case 4 '18 - 6 + 10 = 22
- If Total = (a - b + c) Then VerifRes = True
- Stade 5
- Case 5 '(4 * 4 ) + 3 = 19
- If Total = ((a * b) + c) Then VerifRes = True
- Stade 6
- Case 6 '(6 * 4) + 5 = 29
- If Total = ((a * b) + c) Then VerifRes = True
- Stade 7
- Case 7 '33-(3*3)= 24
- If Total = (a - (b * c)) Then VerifRes = True
- Stade 8
- Case 8 '27-(6*1)= 21
- If Total = (a - (b * c)) Then VerifRes = True
- Stade 9
- Case 9 '14 + 26 - 8 - 4 =28
- If Total = (a + b - c - d) Then VerifRes = True
- Stade 10
- Case 10 '32-(2*4)+9=33
- If Total = (a - (b * c) + d) Then VerifRes = True
- Stade 11
- Case 11 '18+(13-6)-3
- If Total = (a + (b - c) - d) Then VerifRes = True
- Stade 12
- Case 12 '(2*4)+(6-2)
- If Total = ((a * b) + (c - d)) Then VerifRes = True
- 'Stade 13 'Futur niveau peut être à vous d'en créer... :)
- Etat = NbParties 'Marque la fin du questionnaire (Etat + 1)
- Temps.Interval = 0 'On arrête le timer
- End Select
- End Function
Option Explicit
Dim First As Boolean 'Indique si on vient de lancer le programme
Dim Total, a, b, c, d, Etat, NbParties As Integer 'Variable de calcul
Dim BonusX(8) As Boolean, BonusY(8) As Boolean 'Stock les numéros de lignes qui ont eu un bonus pr ne pas les recompter
Dim TabColorChf(80) As String 'Stockage de la couleur et du chiffre des cases
Private Sub Chiffre_Click(Index As Integer) 'On pass l'image en jaune pr indiquer le click
If ((Left(TabColorChf(Index), 1) <> "O") And (Left(TabColorChf(Index), 1) <> "K")) Then
If Right(TabColorChf(Index), 1) = "J" Then
Chiffre(Index).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(Index), 1) & "V.bmp") 'On affiche le chiffre dans la case
TabColorChf(Index) = Left(TabColorChf(Index), 1) & "V" 'On stock le chiffre et la couleur de la case
Total = Total - Left(TabColorChf(Index), 1) 'On soustrait les chiffres qui ont été enlevé par le joueur
Else
Chiffre(Index).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(Index), 1) & "J.bmp")
TabColorChf(Index) = Left(TabColorChf(Index), 1) & "J" 'On stock le chiffre et la couleur de la case
Total = Total + Left(TabColorChf(Index), 1) 'On additionne les chiffres qui ont été cliqué pr donner le total
End If
End If
End Sub
'Démarrage de l'application
Private Sub Form_Load()
NbParties = 13 'On détermine combien de partie il y a (13-1)
First = True
Total = 0 'Initialisation du total donné par le joueur
a = 0: b = 0: c = 0: d = 0
Tps.Text = "30"
Init 'Initialisation des pièces sur le damier
Stade 1 '1er niveau de difficulté de calcul
Points.Text = 0
End Sub
'Nouvelle partie
Private Sub New_Click()
Init 'Répartion des pièces sur le damier
End Sub
'Validation, vérification du résultat, calcul des points
Private Sub OK_Click()
Dim i As Integer, j As Integer, k As Integer, l As Integer, t As Integer
Dim OK As Boolean
OK = False 'Variable indiquant si le résultat est juste ou faux
OK = VerifRes 'on vérifie si l'addition de chiffres sélectionnés donne bien le résultat attendu
k = 0 '1ere case des 81 au total
If (OK = True) Then 'Si la réponse est juste
For j = 0 To 8
For i = 0 To 8
If Right(TabColorChf(k), 1) = "J" Then 'Si la case est jaune (donc qu'elle a été cliquée)
Chiffre(k).Picture = LoadPicture(App.Path & "\" & "OK.bmp") 'On la met en blanc
TabColorChf(k) = "OK" 'On stock l'état de la case
End If
k = k + 1 'case suivante
Next i
VerifBonus j, "H" 'On vérifie si ya un bonus
VerifBonus j, "V" 'On vérifie si ya un bonus
Next j
'On multiplie les points en fonction du temps
If CInt(Tps.Text) < 30 Then t = 3
If CInt(Tps.Text) < 20 Then t = 2
If CInt(Tps.Text) < 10 Then t = 1
Points = CStr(CInt(Points) + (CInt(Total) * 3 * t)) 'Total des points remportés
Else 'si la réponse est fausse
For i = 0 To 80 'On passe toutes les cases cochées en noires
If Right(TabColorChf(i), 1) = "J" Then
Chiffre(i).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(i), 1) & "R.bmp") 'On affiche le chiffre dans la case
'Chiffre(i).Picture = LoadPicture(App.Path & "\" & "KO.bmp")
TabColorChf(i) = "KO" 'On passe l'état des cases à KO
End If
Next i
End If
Total = 0 'On réinitialise l " " & Totales variables de temps et de calcul
Tps.BackColor = vbGreen: Tps.ForeColor = vbBlack 'La couleur de départ
Tps.Text = "30" 'On remet le temps à 30s
If Etat = NbParties Then MsgBox "Le jeu est terminé" 'Indique la fin de la série de question
End Sub
'Niveau de difficulté des calculs
Private Sub Stade(ByVal Num As Integer)
Select Case Num
Case 1 'Addition : 8 + 14 = 22
Etat = 1
a = CInt(Rnd * 10) + 1
b = CInt(Rnd * 10) + 10
Calcul.Text = CStr(a) & " + " & CStr(b)
Case 2 'Soustraction : 34 - 10 = 24
Etat = 2
a = CInt(Rnd * 10) + 30
b = CInt(Rnd * 10) + 10
Calcul.Text = CStr(a) & " - " & CStr(b)
Case 3 'Multiplication : 4 * 6 = 24
Etat = 3
a = CInt(Rnd * 3) + 3
b = CInt(Rnd * 4) + 2
Calcul.Text = CStr(a) & " x " & CStr(b)
Case 4 ' 18 - 6 + 10 = 22
Etat = 4
a = CInt(Rnd * 10) + 10
b = CInt(Rnd * 10) + 3
c = CInt(Rnd * 10) + 10
Calcul.Text = CStr(a) & " - " & CStr(b) & " + " & CStr(c)
Case 5 '(4 * 4 ) + 3 = 19
Etat = 5
a = CInt(Rnd * 3) + 3
b = CInt(Rnd * 4) + 2
c = CInt(Rnd * 10) + 1
Calcul.Text = "(" & CStr(a) & " x " & CStr(b) & ") + " & CStr(c)
Case 6 '(6 * 4) + 5 = 29
Etat = 6
a = CInt(Rnd * 3) + 3
b = CInt(Rnd * 4) + 2
c = CInt(Rnd * 10) + 1
Calcul.Text = "(" & CStr(a) & " x " & CStr(b) & ") + " & CStr(c)
Case 7 '33-(3*3)= 24
Etat = 7
a = CInt(Rnd * 10) + 25
b = CInt(Rnd * 4) + 2
c = CInt(Rnd * 3) + 1
Calcul.Text = CStr(a) & " - (" & CStr(b) & " x " & CStr(c) & ")"
Case 8 '27-(6*1)= 21
Etat = 8
a = CInt(Rnd * 10) + 25
b = CInt(Rnd * 4) + 2
c = CInt(Rnd * 3) + 1
Calcul.Text = CStr(a) & " - (" & CStr(b) & " x " & CStr(c) & ")"
Case 9 '14 + 26 - 8 - 4 =28
Etat = 9
a = CInt(Rnd * 10) + 10
b = CInt(Rnd * 10) + 20
c = CInt(Rnd * 10) + 5
d = CInt(Rnd * 10) + 1
Calcul.Text = CStr(a) & " + " & CStr(b) & " - " & CStr(c) & " - " & CStr(d)
Case 10 '32-(2*4)+9=33
Etat = 10
a = CInt(Rnd * 10) + 25
b = CInt(Rnd * 4) + 2
c = CInt(Rnd * 3) + 1
d = CInt(Rnd * 10) + 1
Calcul.Text = CStr(a) & " - (" & CStr(b) & " x " & CStr(c) & ") + " & CStr(d)
Case 11 '18+(13-6)-3=22
Etat = 11
a = CInt(Rnd * 10) + 20
b = CInt(Rnd * 10) + 10
c = CInt(Rnd * 9) + 1
d = CInt(Rnd * 9) + 1
Calcul.Text = CStr(a) & " + (" & CStr(b) & " - " & CStr(c) & ") - " & CStr(d)
Case 12 '(4x1)+(6-2)=8
Etat = 12
a = CInt(Rnd * 6) + 2
b = CInt(Rnd * 5) + 1
c = CInt(Rnd * 10) + 5
d = CInt(Rnd * 7) + 2
Calcul.Text = "(" & CStr(a) & " x " & CStr(b) & ") + (" & CStr(c) & " - " & CStr(d) & ")"
End Select
End Sub
'Mélange des pièces du jeu, réinitialisaiton du jeu, nouvelle partie...
Private Sub Init()
Dim i, j, k, ran As Integer
Dim OK As Boolean
Dim TabChf(8) As Integer 'tableau des chiffres qui composent le quadrillage
Randomize 'Activation de la fonction permettant d'avoir des chiffres aléatoire
Tps.Text = "30": Tps.BackColor = vbGreen: Tps.ForeColor = vbBlack
Points.Text = "0": Total = 0
Temps.Interval = 1000 '1000 millisecondes soit 1 seconde
Stade 1 'Au repasse au 1er niveau de difficulté
For i = 0 To 8
TabChf(i) = 0 'Initialisation du tableau
BonusX(i) = False 'Initialisation des lignes de bonus sur les abcisses
BonusY(i) = False 'Initialisation des lignes de bonus sur les ordonnées
Next i
k = 0 '1ere case des 81 au total
'C'est 2 boucles vont servir à répartir aléatoirement les chiffres sur la grille
For j = 0 To 8 'k = 0 1 2 3 4 5 6 7 8
For i = 0 To 8 ' 9 10 11 12 13 14 15 16 17
OK = False ' 18 19 20 21 22 23 24 25 26 ...
If ((i <> 0) Or (j <> 0)) Then 'On passe la 1ere case qui existe par défaut
k = k + 1 'case suivante
If First = True Then 'Si c'est la 1ere fois, on charge les autres boutons
Load Chiffre(k) 'création de chaque bouton de la grille
Chiffre(k).Visible = True 'on les rend visibles et on les place
Chiffre(k).Left = 300 * (i) 'abscisse
Chiffre(k).Top = 300 * (j) 'ordonnée
End If
While OK = False 'Tant qu'on a pas trouvé une image à mettre sur la case
ran = CInt(Rnd * 8) 'choix d'un chiffre entre 0 et 8 (+1)
If TabChf(ran) <> 9 Then 'Si on a pas déjà atteint la limite de 9 pr chaque chiffre
Chiffre(k).Picture = LoadPicture(App.Path & "\" & (ran + 1) & "V.bmp") 'On affiche le chiffre dans la case
OK = True 'On peut passer à la case suivante
TabChf(ran) = TabChf(ran) + 1 'On incrémente le nombre de fois qu'a été utilisé le chiffre
TabColorChf(k) = CStr(ran + 1) & "V" 'On stock le chiffre et la couleur de la case
End If
Wend
Else
ran = CInt(Rnd * 8) 'choix d'un chiffre entre 0 et 8
Chiffre(k).Picture = LoadPicture(App.Path & "\" & (ran + 1) & "V.bmp") 'On affiche le chiffre dans la case
TabChf(ran) = TabChf(ran) + 1 'On incrémente le nombre de fois qu'a été utilisé le chiffre
TabColorChf(k) = CStr(ran) + 1 & "V" 'On stock le chiffre et la couleur de la case
End If
Next i
Next j
First = False 'Indique que ce n'est plus la 1ere fois qu'on utilise cette fonction afin de ne pas recharger les boutons
End Sub
'30s pour trouver la répons eà chaque question
Private Sub Temps_Timer()
Dim i As Integer
Tps.Text = CStr(CInt(Tps.Text) - 1) 'On affiche le décompte des secondes
'On change la couleur du fond et de la police en fonction du temps écoulé
If CInt(Tps) <= 20 Then Tps.BackColor = vbYellow: Tps.ForeColor = vbBlack
If CInt(Tps) <= 10 Then Tps.BackColor = vbRed: Tps.ForeColor = vbWhite
'Lorsque le temps impartie est terminé
If CInt(Tps) = 0 Then
Tps.Text = "30" 'On redonne 30s pr le prochain compte
Tps.BackColor = vbGreen: Tps.ForeColor = vbBlack
For i = 0 To 80 'Toutes les cases cochées deviennent noires
If Right(TabColorChf(i), 1) = "J" Then
Chiffre(i).Picture = LoadPicture(App.Path & "\" & Left(TabColorChf(i), 1) & "R.bmp") 'Cases rouges
'Chiffre(i).Picture = LoadPicture(App.Path & "\" & "KO.bmp") 'cases noires
TabColorChf(i) = "KO"
End If
Next i
If Etat + 1 = NbParties Then 'Si c'était le dernier état
Temps.Interval = 0 'On arrête le timer
MsgBox "Le jeu est terminé"
Else 'On passe au niveau suivant
Etat = Etat + 1
End If
Stade Etat 'On passe au niveau de difficulté suivant
Total = 0
End If
End Sub
'Vérifie si on a une ligne de cases verticalement alignées
Private Sub VerifBonus(ByVal y As Integer, ByVal Sens As String)
Dim i As Integer, j As Integer, k As Integer, Bonus As Integer
'9 cases blanches alignées horizontalement pour avoir un bonus
Bonus = 0 'Initilisation du compteur de cases
For i = 0 To 8
If Sens = "H" Then
k = (y * 9) + i 'calcul de l'index du bouton sur la ligne (voir fonction init)
If BonusX(y) = False Then If Left(TabColorChf(k), 1) = "O" Then Bonus = Bonus + 1 'Si la case est blanche on incrémente le compteur de Bonus
End If
If Sens = "V" Then
k = y + (i * 9) 'calcul de l'index du bouton sur la colonne (voir fonction init)
If BonusY(y) = False Then If Left(TabColorChf(k), 1) = "O" Then Bonus = Bonus + 1 'Si la case est blanche on incrémente le compteur de Bonus
End If
If Right(TabColorChf(k), 1) = "J" Then 'Si la case est jaune (donc qu'elle a été cliquée)
Bonus = Bonus + 1 'On incrémente le compteur de cases alignées vu que la réponse est juste
End If
If Bonus = 9 Then 'Si le joueur a fait une ligne de cases blanches et/ou dorées
Points = Points + 100 'Il gagne 100 points de Bonus
If Sens = "H" Then BonusX(y) = True 'Indique que cette colonne a déjà été comptée dans les points
If Sens = "V" Then BonusY(y) = True
For j = 0 To 8 'On rend les cases, de la colonne bonus, dorées
If Sens = "H" Then k = (y * 9) + j 'calcul de l'index
If Sens = "V" Then k = y + (j * 9) 'calcul de l'index
Chiffre(k).Picture = LoadPicture(App.Path & "\" & "BO.bmp")
TabColorChf(k) = "OK" 'On stock l'état de la case
Next j
End If
Next i
End Sub
'On vérifie si l'addition des chiffrex sélectionnés donne bien le résultat attendu
Private Function VerifRes() As Boolean
VerifRes = False 'Si la réponse est fausse alors VerifRs = false
Select Case Etat
Case 1 '8+14 = 22
If Total = (a + b) Then VerifRes = True 'Le résultat est correct
Stade 2 'On passe au niveau de difficulté suivant
Case 2 '34-10 = 24
If Total = (a - b) Then VerifRes = True
Stade 3
Case 3 '4*6 = 24
If Total = (a * b) Then VerifRes = True
Stade 4
Case 4 '18 - 6 + 10 = 22
If Total = (a - b + c) Then VerifRes = True
Stade 5
Case 5 '(4 * 4 ) + 3 = 19
If Total = ((a * b) + c) Then VerifRes = True
Stade 6
Case 6 '(6 * 4) + 5 = 29
If Total = ((a * b) + c) Then VerifRes = True
Stade 7
Case 7 '33-(3*3)= 24
If Total = (a - (b * c)) Then VerifRes = True
Stade 8
Case 8 '27-(6*1)= 21
If Total = (a - (b * c)) Then VerifRes = True
Stade 9
Case 9 '14 + 26 - 8 - 4 =28
If Total = (a + b - c - d) Then VerifRes = True
Stade 10
Case 10 '32-(2*4)+9=33
If Total = (a - (b * c) + d) Then VerifRes = True
Stade 11
Case 11 '18+(13-6)-3
If Total = (a + (b - c) - d) Then VerifRes = True
Stade 12
Case 12 '(2*4)+(6-2)
If Total = ((a * b) + (c - d)) Then VerifRes = True
'Stade 13 'Futur niveau peut être à vous d'en créer... :)
Etat = NbParties 'Marque la fin du questionnaire (Etat + 1)
Temps.Interval = 0 'On arrête le timer
End Select
End Function
Conclusion
J'aimerais faire une version réseau de ce jeu, pour jouer à 2. Avec Winsock, sur le même principe que ma source sur le démineur réseau type msn. Le but, ici, serait de donner les points à celui qui joue le plus vite et de mettre en rouge, les cases sélectionnées par le perdant qui n'a pas eu le temps de valider sa réponse. Et pourquoi pas lui faire perdre 1/3 tu total que l'on a réalisé. Bien sûr, vaudrait mieux jouer à ça sur un réseau local pour éviter de trop pénaliser le client par rapport au serveur niveau rapidité...
Historique
- 19 avril 2008 14:08:57 :
- Cases noires remplacées par des cases rouges
Ligne de bonus verticale et horizontale
Plus de calculs à trouver
- 19 avril 2008 14:10:47 :
- Plus de calculs à trouver
Lignes de bonus verticales et horizontales
- 20 avril 2008 14:15:35 :
- La capture ne s'est pas mise à jour.
J'ai ajouté tout le code
Mise à jour du descriptif
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
VB.Net Calcul math ??? [ par JeffC1977 ]
Salut... Je fasi un calcul mathématique et certaine ligne de codefonctionne et une en particulière me donne une valeur bisare soit, -1.#INDOudblTextbo
calcul de corrélation [ par oliver7520 ]
bonjour,j'ai utilisé la fonction excel "coefficient de corrélation" pour récupérer le code.jusqu'ici tout va bien.Par contre lorsque que j'ai une seri
calcul pour un volme [ par bebert49100 ]
<span id="gtbmisp_6" style="border: 0pt none ; margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 50%; font-family: serif; font-
VB.Net Fonction Math.Max [ par JeffC1977 ]
Salut...Comment fait-on pour utiliser la fonction Math.Max dans un tableau qui est en String ???? merci de votre aide
Calcul d'amortissement [ par mogouan ]
Je veux calculer l'amortissement d'un matériel selon le tableau suivant sous access/VBAMon problème est que je ne sais pas comment utiliser des donné
Connaitre la couleur d'un pixel [ par Razor_rws1 ]
Salut, ça fais 3 fois que je pose la même question mais sans succès. Pourtant, il me semble que la question ne sois pas si compliqué. J'imagine que je
débuter jeu de l'oie ou bonne paye [ par e1huet ]
Je suis débutant en vba et je dois développer un jeu sur le principe d'un jeu de plateau (jeu de l'oie, bonne paye) mais je ne sais vraiment pas comm
jeu de domino [ par Truande ]
Salut,je suis sur un projet sur les jeu de domino en c sur linux.Je susi étudiante en master science cogntive mais j'ai de grosses difficultés en c.L
userform bloque! help! [ par Julyaberdeen ]
Bonjour a tous,Deuxieme post de la journee...Cette fois ci un probleme avec un userform qui reste bloque.J'ai une feuille excel qui fait tourner des c
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|