0/5 (9 avis)
Vue 20 771 fois - Téléchargée 1 122 fois
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
15 avril 2008 à 02:03
15 avril 2008 à 08:44
Peux tu augmenter le nombre de partie.
24 avril 2008 à 11:11
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
24 avril 2008 à 11:20
Ca aurait été sympa de mettre le lien de ta source et pourquoi pas, une note, mais bon, pas grave.
24 avril 2008 à 14:08
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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.