begin process at 2012 05 27 06:56:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > JEU DE MATH - CALCUL MENTAL

JEU DE MATH - CALCUL MENTAL


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :jeu, math, calcul, mental Niveau :Débutant Date de création :14/04/2008 Date de mise à jour :20/04/2008 14:15:35 Vu / téléchargé :16 806 / 681

Auteur : tbbuim1

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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é...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 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

Source avec Zip Source avec une capture JEU EN GIFS ANIMÉS FIRECOIN
Source avec Zip Source avec une capture JEU DE REFLEXION ET D'ENTRAINEMENT OCULAIRE
REMPLACER LE SYMBOLE DÉCIMAL
Source avec Zip Source avec une capture OCX PROGRESSBAR SANS FIN PARAMÉTRABLE
Source avec Zip Source avec une capture DEMINEUR RESEAU TYPE MSN WINSOCK

 Sources de la même categorie

Source avec Zip [VBA] TOWER BATTLE 4 par Softmama
Source avec Zip Source avec une capture [VBA] TOWER BATTLE 3 par Softmama
Source avec Zip Source avec une capture Source .NET (Dotnet) XBOXLIVE AVATAR DOWNLOAD par quentinix
Source avec Zip Source avec une capture Source .NET (Dotnet) GÉNÉRATEUR DE GRILLES DE MOTS MÉLÉS par ardeliner
Source avec Zip HUTOWERS JEU DE CARTES SIMILAIRE AU VIEIL ADATOWERS QUI NE M... par roudoudou2708

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) DES CHIFFRES ET DES LETTRES par ShayW
Source avec Zip CALCULS SUR DE GRANDS NOMBRES (PLUSIEURS MILLIERS DE CHIFFRE... par apexinfo
Source avec Zip Source .NET (Dotnet) PROBABILITES par alpha5
Source avec Zip CALCUL DÉTAILLÉ DE FACTORIEL par danbo
Source avec Zip Source avec une capture CALCUL DE GAINS AU JEU COTE&MATCH DE LA FRANCAISE DES JEUX par tmdax

Commentaires et avis

Commentaire de aminesoft1 le 15/04/2008 02:03:56

wow nice

Commentaire de dedederidiny le 15/04/2008 08:44:59

j'ai bien aimé.
Peux tu augmenter le nombre de partie.

Commentaire de Debiars le 24/04/2008 11:11:54

Salut,
Moi aussi, ça m'a intéressé, mais comme je n'ai pas VB, je me suis amusé à transposer le programme en Delphi et je l'ai posté aujourd'hui sur Delphi.fr.
Je tenais à t'en aviser, comme il se doit.
jp

Commentaire de tbbuim1 le 24/04/2008 11:20:20

Cool :D
Ca aurait été sympa de mettre le lien de ta source et pourquoi pas, une note, mais bon, pas grave.

Commentaire de Debiars le 24/04/2008 14:08:10

Je vois que tu as trouvé sans lien. C'est bien.
Pour la note, difficile, vu que je ne peux pas juger de la valeur du code, n'y connaissant rien en VB. Par contre, pour l'intérêt du jeu, je veux bien de mettre 8/10.  

Commentaire de tbbuim1 le 24/04/2008 14:22:49

lol c pas le soucis de le trouver ou pas, c'est juste plus pratique d'avoir le lien que d'avoir à le chercher.
Les gens (et surtout les programmeurs) sont fainéants en règle générale :)

Commentaire de Debiars le 24/04/2008 15:32:15

Pendant qu'on y est, pourrais-tu me dire quelle est l'unité des coordonnées écran en VB. Quand je vois Width : 1360, je me pose des questions avec mon écran à 1024. Avec Delphi l'unité est le pixel. Pour transposer, j'ai fait le rapprochement entre le bouton chiffre (300x300 je ne sais quoi) et 1V.bmp (22x22 pixels).
Merci !

Commentaire de Dr SKULL le 24/04/2008 15:38:17

Le VB utilise des twips, à savoir qu'en général (c'est censé pouvoir bouger, mais en 15 ans ça a toujours été vrai) 15 twips = 1 pixel.

Commentaire de Debiars le 24/04/2008 15:50:52

Merci docteur!

 Ajouter un commentaire


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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales