|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
DES CHIFFRES (PAS DES LETTRES)
Information sur la source
Description
Ce logiciel recherche la solution exacte (sinon la plus proche) donnant le résultat désiré en fonction des nombres choisis. Les 6 nombres et le résultat sont choisis dans le respect de la règle du jeu. Le logiciel explore sytématiquement tous les calculs corrects en n'éliminant que les différences nulles, les multiplications par 1 et les divisions non entières. Il affiche successivement tout calcul "meilleur" que le précédent et ne s'arrête que si le compte est bon ou que si l'arbre des tous les calculs correct est complètement exploré. La vitesse des calculs occulte complètement les affichages intermédiaires et l'oeil ne retient que le dernier calcul ! Cliquez sur le nombre choisi pour l'éliminer. Le résultat peut être donné ou tiré au hasard.
Source
- Public Class Chiffre1
-
- '------------------------------------------------
-
- Public Retour$ ' "à la ligne" pour écrire un "text" sur plusieurs lignes
-
- Public HVtab& ' constante de taille graphique Horizontale ou Verticale (clin d'oeil à l'Apple II)
- Const LargeurTrait = 3
- Const SuperTaille = 43
- Const GrandeTaille = 24
- Const PetiteTaille = 16
-
- '------------------------------------------------
- ' les chiffres à choisir
- Public ValeurChoix%(13)
- Public NombreChoix%(13)
- Public ButtonChoix(13) As Button
- Public LabelTraitChoix As Label
-
- '------------------------------------------------
- ' les 6 chiffres choisis
- Public LabelExplique As Label
- Public ButtonDonnees(5) As Button
- Public LabelTraitDonnees As Label
-
- '------------------------------------------------
- ' Le nombre à trouver
-
- Public LabelNombre As Label
- Public TextNombre As TextBox
- Public SiNoTexte As Boolean
- Public LabelTraitNombre As Label
- Public ButtonHasard As Button
- Public ButtonRien As Button
- Public LabelSoluce As Label
- Public ButtonSoluce As Button
- Public LabelTraitSoluce As Label
- Public But% ' à trouver ou à approcher
-
- '------------------------------------------------
- ' les données + les résultats des calculs
-
- Public Signe$(3) ' de l'opération"
- Public Chiffre0&(5) ' profondeur du calcul : 0 = données
- Public Chiffre1&(4)
- Public Chiffre2&(3)
- Public Chiffre3&(2)
- Public Chiffre4&(1)
-
- Public Operation%(4) ' " 0 = + " ; " 1 = x " ; " 2 = - " ; " 3 = / "
-
- '------------------------------------------------
-
- Public LabelReponse As Label
- Public LabelTraitReponse As Label
-
- '------------------------------------------------
-
- Public KelChoix% ' le rang du chiffre choisi
- Public NombreDonnees% ' déjà choisie
-
- Public SiOperationCorrecte(4) As Boolean
- Public RangOperation%(4)
- Public RangOperande%(3)
- Public RangOperateur%(3) ' Operande Operation Operateur = Resultat
- ' au niveau 4 Operande(4) = 0 et Operateur(4) = 1
- Public MonResultat&(4)
- Public Approximation& ' la meilleure solution en cours
-
- '------------------------------------------------
-
- Public CouleurFond As Color
- Public CouleurButtonClair As Color
- Public CouleurButtonFonce As Color
-
- '--------------------------------------------------------------------------------------
- Private Sub Chiffre1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim Rang%, HVChoix&, Ecart&, VDonnees&, HNombre&, VNombre&
- Const Releve = 5
-
- '-------------------
-
- Retour = Chr(13)
- SiNoTexte = True
- Randomize()
-
- '-------------------
- Signe(0) = "+"
- Signe(1) = "´"
- Signe(2) = "-"
- Signe(3) = "¸"
-
- '-------------------
-
- CouleurFond = Color.FromArgb(255, 235, 240, 220)
- CouleurButtonClair = Color.FromArgb(255, 255, 240)
- CouleurButtonFonce = Color.FromArgb(235, 235, 210)
-
- '-------------------
- Me.Font = New Font("Times New Roman", PetiteTaille, FontStyle.Regular)
- HVtab = Me.Font.Height
- Me.BackColor = CouleurFond
- '-------------------
- ' Chiffres proposés + leur nombre maximum autorisé
-
- For Rang = 0 To 9
- ValeurChoix(Rang) = Rang + 1
- NombreChoix(Rang) = 2
- Next Rang
-
- ValeurChoix(10) = 25
- NombreChoix(10) = 1
-
- ValeurChoix(11) = 50
- NombreChoix(11) = 1
-
- ValeurChoix(12) = 75
- NombreChoix(12) = 1
-
- ValeurChoix(13) = 100
- NombreChoix(13) = 1
-
- '-------------------
- ' choix des chiffres autorisés
-
- HVChoix = HVtab * 0.7
- Ecart = HVtab * 0.2
-
- For Rang = 0 To 13
- ButtonChoix(Rang) = New Button
- Me.Controls.Add(ButtonChoix(Rang))
- ButtonChoix(Rang).BackColor = CouleurButtonClair
- ButtonChoix(Rang).Text = Chaine(ValeurChoix(Rang))
- ButtonChoix(Rang).Font = New Font("Symbol", GrandeTaille, FontStyle.Bold)
- ButtonChoix(Rang).Height = HVtab * 2
- ButtonChoix(Rang).Tag = ValeurChoix(Rang)
- AddHandler ButtonChoix(Rang).Click, AddressOf ButtonChoix_Click
- Select Case Rang
- Case 0 To 8
- ButtonChoix(Rang).Width = HVtab * 2
- Case 9 To 12
- ButtonChoix(Rang).Width = HVtab * 2.5
- Case Else
- ButtonChoix(Rang).Width = HVtab * 3.1
- End Select
- If Rang = 0 Then
- ButtonChoix(Rang).Location = New Point(HVChoix, HVChoix)
- Else
- ButtonChoix(Rang).Location = New Point(ButtonChoix(Rang - 1).Location.X + _
- ButtonChoix(Rang - 1).Width + Ecart, _
- HVChoix)
- End If
-
- ButtonChoix(Rang).TextAlign = ContentAlignment.MiddleCenter
- Next Rang
-
- '-------------------
- ' on encadre le tout
-
- LabelTraitChoix = New Label
- Me.Controls.Add(LabelTraitChoix)
-
- LabelTraitChoix.Location = New Point(ButtonChoix(0).Location.X - Ecart, _
- ButtonChoix(0).Location.Y - Ecart)
- LabelTraitChoix.Width = ButtonChoix(13).Location.X + _
- ButtonChoix(0).Width + Ecart * 4
- LabelTraitChoix.Height = ButtonChoix(0).Height + Ecart * 2
- LabelTraitChoix.BorderStyle = BorderStyle.Fixed3D
- LabelTraitChoix.BackColor = CouleurFond
-
- '-------------------
- ' les 6 chiffres données
-
- NombreDonnees = 0
- VDonnees = LabelTraitChoix.Location.Y + LabelTraitChoix.Height + HVChoix + Ecart
-
- LabelExplique = New Label
- Me.Controls.Add(LabelExplique)
- LabelExplique.Text = "0 nombre"
- LabelExplique.Location = New Point(HVChoix, VDonnees)
- LabelExplique.Width = HVtab * 4.5
- LabelExplique.Height = HVtab
- LabelExplique.BorderStyle = BorderStyle.None
- LabelExplique.TextAlign = ContentAlignment.MiddleCenter
- LabelExplique.BackColor = CouleurFond
-
- For Rang = 0 To 5
- ButtonDonnees(Rang) = New Button
- Me.Controls.Add(ButtonDonnees(Rang))
- ButtonDonnees(Rang).Text = ""
- ButtonDonnees(Rang).Font = ButtonChoix(Rang).Font
- ButtonDonnees(Rang).Height = ButtonChoix(0).Height
- ButtonDonnees(Rang).Width = HVtab * 3.5
- ButtonDonnees(Rang).Location = New Point(HVChoix + Ecart * 2, LabelExplique.Location.Y + _
- LabelExplique.Height + Ecart + _
- (ButtonDonnees(0).Height + Ecart) * Rang)
- ButtonDonnees(Rang).TextAlign = ContentAlignment.MiddleCenter
- ButtonDonnees(Rang).Enabled = False
- ButtonDonnees(Rang).Tag = Rang
- ButtonDonnees(Rang).BackColor = CouleurButtonFonce
- AddHandler ButtonDonnees(Rang).Click, AddressOf ButtonDonnees_Click
-
- Next Rang
-
- LabelTraitDonnees = New Label
- Me.Controls.Add(LabelTraitDonnees)
- LabelTraitDonnees.Location = New Point(LabelTraitChoix.Location.X, _
- LabelTraitChoix.Location.Y + _
- LabelTraitChoix.Height + HVChoix)
- LabelTraitDonnees.Width = ButtonDonnees(5).Width + Ecart * 6.1
- LabelTraitDonnees.Height = ButtonDonnees(5).Location.Y + ButtonDonnees(5).Height - _
- LabelTraitDonnees.Location.Y + Ecart
- LabelTraitDonnees.BorderStyle = BorderStyle.Fixed3D
- LabelTraitDonnees.BackColor = CouleurFond
-
- '-------------------
-
- VNombre = VDonnees
- HNombre = LabelTraitDonnees.Location.X + LabelTraitDonnees.Width + HVChoix + Ecart
-
- LabelNombre = New Label
- Me.Controls.Add(LabelNombre)
- LabelNombre.Text = "Le nombre" + Retour + "cherché :"
- LabelNombre.Font = New Font("Times New Roman", PetiteTaille, FontStyle.Bold)
- LabelNombre.Height = HVtab * 2
- LabelNombre.Width = HVtab * 5
- LabelNombre.Location = New Point(HNombre, VNombre)
- LabelNombre.TextAlign = ContentAlignment.TopCenter
- LabelNombre.BorderStyle = BorderStyle.None
- LabelNombre.BackColor = CouleurFond
-
- TextNombre = New TextBox
- Me.Controls.Add(TextNombre)
- TextNombre.Text = ""
- TextNombre.Font = New Font("Times New Roman", GrandeTaille, FontStyle.Bold)
- TextNombre.Height = HVtab * 2
- TextNombre.Width = HVtab * 3
- TextNombre.Location = New Point(HNombre + HVtab, _
- ButtonDonnees(1).Location.Y - Ecart * Releve)
- TextNombre.TextAlign = HorizontalAlignment.Center
- TextNombre.BorderStyle = BorderStyle.Fixed3D
- AddHandler TextNombre.TextChanged, AddressOf TextNombre_TextChanged
-
- ButtonHasard = New Button
- Me.Controls.Add(ButtonHasard)
- ButtonHasard.Text = "Hasard"
- ButtonHasard.Width = HVtab * 3.9
- ButtonHasard.Height = HVtab * 1.7
- AddHandler ButtonHasard.Click, AddressOf ButtonHasard_Click
- ButtonHasard.BackColor = CouleurButtonClair
- ButtonHasard.Location = New Point(HNombre + HVtab * 0.5, _
- ButtonDonnees(2).Location.Y - Ecart * Releve)
- ButtonRien = New Button
- Me.Controls.Add(ButtonRien)
- ButtonRien.Enabled = False
- ButtonRien.Text = "Annuler"
- ButtonRien.Width = ButtonHasard.Width
- ButtonRien.Height = ButtonHasard.Height
- ButtonRien.BackColor = CouleurButtonFonce
- AddHandler ButtonRien.Click, AddressOf ButtonRien_Click
- ButtonRien.Location = New Point(ButtonHasard.Location.X, _
- ButtonDonnees(3).Location.Y - Ecart * Releve)
-
- LabelSoluce = New Label
- Me.Controls.Add(LabelSoluce)
- LabelSoluce.Location = New Point(HNombre, ButtonDonnees(4).Location.Y - HVtab * 0.2)
- LabelSoluce.Width = LabelNombre.Width
- LabelSoluce.Height = HVtab * 2
- LabelSoluce.BorderStyle = BorderStyle.None
- LabelSoluce.Text = "Lancer" + Retour + "le calcul"
- LabelSoluce.Font = LabelNombre.Font
- LabelSoluce.TextAlign = ContentAlignment.TopCenter
- LabelSoluce.BackColor = CouleurFond
-
- ButtonSoluce = New Button
- Me.Controls.Add(ButtonSoluce)
- ButtonSoluce.Text = "Solution"
- ButtonSoluce.Width = ButtonHasard.Width
- ButtonSoluce.Height = ButtonHasard.Height
- ButtonSoluce.BackColor = CouleurButtonFonce
- AddHandler ButtonSoluce.Click, AddressOf ButtonSoluce_Click
- ButtonSoluce.Enabled = False
- ButtonSoluce.Location = New Point(ButtonRien.Location.X, LabelSoluce.Location.Y + LabelSoluce.Height + HVtab * 0.5)
-
- LabelTraitNombre = New Label
- Me.Controls.Add(LabelTraitNombre)
- LabelTraitNombre.Location = New Point(HNombre - Ecart * 2.5, LabelTraitDonnees.Location.Y)
- LabelTraitNombre.Width = HVtab * 6
- LabelTraitNombre.Height = ButtonRien.Height + ButtonRien.Location.Y + Ecart * 2.5 - _
- VNombre
- LabelTraitNombre.BorderStyle = BorderStyle.Fixed3D
- LabelTraitNombre.BackColor = CouleurFond
-
- LabelTraitSoluce = New Label
- Me.Controls.Add(LabelTraitSoluce)
- LabelTraitSoluce.Location = New Point(LabelTraitNombre.Location.X, _
- LabelTraitNombre.Location.Y + _
- LabelTraitNombre.Height + HVtab - Ecart * 2)
- LabelTraitSoluce.Width = LabelTraitNombre.Width
- LabelTraitSoluce.Height = ButtonSoluce.Height + ButtonSoluce.Location.Y - _
- LabelTraitSoluce.Location.Y + Ecart * 2
- LabelTraitSoluce.BorderStyle = BorderStyle.Fixed3D
- LabelTraitSoluce.BackColor = CouleurFond
-
- '-------------------
-
- LabelReponse = New Label
- Me.Controls.Add(LabelReponse)
-
- LabelTraitReponse = New Label
- Me.Controls.Add(LabelTraitReponse)
- LabelTraitReponse.Location = New Point(LabelTraitNombre.Location.X + _
- LabelTraitNombre.Width + Ecart * 2, _
- LabelTraitNombre.Location.Y)
- LabelTraitReponse.Width = LabelTraitChoix.Location.X + LabelTraitChoix.Width - _
- LabelTraitReponse.Location.X
- LabelTraitReponse.Height = LabelTraitDonnees.Location.Y + LabelTraitDonnees.Height - _
- LabelTraitReponse.Location.Y
- LabelTraitReponse.BorderStyle = BorderStyle.Fixed3D
- LabelTraitReponse.BackColor = CouleurFond
-
- LabelReponse.Location = New Point(LabelTraitReponse.Location.X + HVtab * 0.5, _
- LabelTraitReponse.Location.Y + HVtab * 0.2)
- LabelReponse.Width = LabelTraitReponse.Width - HVtab
- LabelReponse.Height = LabelTraitReponse.Height - HVtab * 0.7
- LabelReponse.BorderStyle = BorderStyle.None
- LabelReponse.Text = ""
- LabelReponse.Font = New Font("Symbol", SuperTaille, FontStyle.Bold)
- LabelReponse.BackColor = CouleurFond
-
- '-------------------
-
- Me.Height = LabelTraitDonnees.Location.Y + LabelTraitDonnees.Height + HVChoix + Ecart * 6
- Me.Location = New Point(HVtab, HVtab)
- Me.Width = LabelTraitChoix.Location.X + LabelTraitChoix.Width + HVChoix + Ecart
- Me.Text = " Des chiffres par Jacques BOURDEAU :"
-
- '-------------------
-
- SiNoTexte = False
-
-
-
- End Sub
- '--------------------------------------------------------------------------------------
- Function Chaine$(ByVal Nombre&)
-
- Return Trim(Str(Nombre))
-
- End Function
- '--------------------------------------------------------------------------------------
- Private Sub ButtonDonnees_Click(ByVal Sender As System.Object, ByVal E As System.EventArgs)
-
- ButtonDonnees(Sender.Tag).Text = ""
- ButtonDonnees(Sender.Tag).Enabled = False
- ButtonDonnees(Sender.Tag).BackColor = CouleurButtonFonce
- NombreDonnees = NombreDonnees - 1
- Call VerifieMaximum()
-
- End Sub
- '--------------------------------------------------------------------------------------
- Private Sub ButtonChoix_Click(ByVal Sender As System.Object, ByVal E As System.EventArgs)
-
- Dim Rang%
-
- If NombreDonnees > 5 Then
- Exit Sub
- End If
-
- KelChoix = Sender.tag
-
- Rang = 0
- While Len(ButtonDonnees(Rang).Text.Trim) > 0
- Rang = Rang + 1
- End While
-
- ButtonDonnees(Rang).Text = Chaine(KelChoix)
- ButtonDonnees(Rang).Enabled = True
- ButtonDonnees(Rang).BackColor = CouleurButtonClair
- NombreDonnees = NombreDonnees + 1
-
- Call VerifieMaximum()
-
- ButtonSoluce.Enabled = (NombreDonnees = 6) And (Val(TextNombre.Text) > 100)
- If ButtonSoluce.Enabled Then
- ButtonSoluce.BackColor = CouleurButtonClair
- Else
- ButtonSoluce.BackColor = CouleurButtonFonce
- End If
-
- End Sub
- '--------------------------------------------------------------------------------------
- Private Sub TextNombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
-
- Dim Texte$, NewTexte$, Lettre$
-
- If SiNoTexte Then Exit Sub
-
- SiNoTexte = True
- Texte = TextNombre.Text
- If Len(Texte) > 3 Then
- Texte = Texte.Substring(0, 3)
- End If
-
- NewTexte = ""
- While (Len(Texte) > 0)
- Lettre = Texte.Chars(0)
- If (Lettre >= "0") And (Lettre <= "9") Then
- NewTexte = NewTexte + Lettre
- End If
- Texte = Texte.Substring(1)
- End While
- TextNombre.Text = NewTexte
-
- ButtonSoluce.Enabled = (Val(NewTexte) > 100) And (NombreDonnees = 6)
- If ButtonSoluce.Enabled Then
- ButtonSoluce.BackColor = CouleurButtonClair
- Else
- ButtonSoluce.BackColor = CouleurButtonFonce
- End If
-
- ButtonRien.Enabled = Len(NewTexte) > 0
- If ButtonRien.Enabled Then
- ButtonRien.BackColor = CouleurButtonClair
- Else
- ButtonRien.BackColor = CouleurButtonFonce
- End If
-
- TextNombre.SelectionStart = Len(TextNombre.Text)
-
- SiNoTexte = False
-
- End Sub
- '--------------------------------------------------------------------------------------
- 'vérifie si le nombre maximum de chiffres est atteint
- Sub VerifieMaximum()
-
- Dim Rang%, Place%, NombreChiffre%(13)
-
- For Rang = 0 To 13
- NombreChiffre(Rang) = 0
- Next Rang
-
- For Place = 0 To 5
- If Len(ButtonDonnees(Place).Text) > 0 Then
- Rang = RangNombre(Val(ButtonDonnees(Place).Text))
- NombreChiffre(Rang) = NombreChiffre(Rang) + 1
- End If
- Next Place
-
- If NombreDonnees < 6 Then
- ButtonSoluce.Enabled = False
- For Rang = 0 To 13
- ButtonChoix(Rang).Enabled = (NombreChiffre(Rang) < NombreChoix(Rang))
- Next Rang
- Else
- For Rang = 0 To 13
- ButtonChoix(Rang).Enabled = False
- Next Rang
- End If
- For Rang = 0 To 13
-
- If ButtonChoix(Rang).Enabled Then
- ButtonChoix(Rang).BackColor = CouleurButtonClair
- Else
- ButtonChoix(Rang).BackColor = CouleurButtonFonce
- End If
- Next Rang
-
-
-
-
- Select Case NombreDonnees
- Case 0
- LabelExplique.Text = "0 nombre"
- Case 1
- LabelExplique.Text = "1 nombre"
- Case Else
- LabelExplique.Text = Chaine(NombreDonnees) + " nombres"
- End Select
-
- End Sub
- '--------------------------------------------------------------------------------------
- Public Function RangNombre%(ByVal KelChiffre%)
-
- Dim Reponse%, Rang%
-
- Reponse = -1
- For Rang = 0 To 13
- If ValeurChoix(Rang) = KelChiffre Then
- Reponse = Rang
- End If
- Next Rang
-
- Return Reponse
-
- End Function
- '--------------------------------------------------------------------------------------
- Private Sub ButtonRien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
-
- TextNombre.Text = ""
- ButtonRien.Enabled = False
- ButtonRien.BackColor = CouleurButtonFonce
- ButtonSoluce.Enabled = False
- ButtonSoluce.BackColor = CouleurButtonFonce
-
- End Sub
- '--------------------------------------------------------------------------------------
- Private Sub ButtonHasard_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
-
- Dim Koi%
-
- Koi = 0
- Randomize()
-
- While (Koi < 101) Or (Koi > 999)
- Koi = CInt(1000 * Rnd())
- End While
-
- SiNoTexte = True
-
- TextNombre.Text = Chaine(Koi)
- ButtonRien.Enabled = True
- ButtonRien.BackColor = CouleurButtonClair
- ButtonSoluce.Enabled = (NombreDonnees = 6)
- If ButtonSoluce.Enabled Then
- ButtonSoluce.BackColor = CouleurButtonClair
- Else
- ButtonSoluce.BackColor = CouleurButtonFonce
- End If
- SiNoTexte = False
-
- End Sub
- '--------------------------------------------------------------------------------------
- Private Sub ButtonSoluce_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
-
- Dim Rang%, Place%, Relais%, Envoi%
- Dim EncoreTri As Boolean
- Dim EncoreCherche(5) As Boolean
-
- 'Public Operation%(5) ' " 0 = + " ; " 1 = x " ; " 2 = - " ; " 3 = / "
- 'Public Resultat%(5) ' de l'opération
- 'Public RangOperation%(5)
- 'Public RangOperande%(5)
- 'Public RangOperateur%(5) ' Operande Operation Operateur = Resultat
-
- 'prépare la saisie des données
- For Rang = 0 To 5
- Chiffre0(Rang) = 0
- Next Rang
-
- 'saisie + tri des données
- For Rang = 0 To 5
- Chiffre0(Rang) = Val(ButtonDonnees(Rang).Text)
- If Rang > 0 Then
- Place = Rang
- EncoreTri = (Chiffre0(Place - 1) < Chiffre0(Place))
- While EncoreTri
- Relais = Chiffre0(Place - 1)
- Chiffre0(Place - 1) = Chiffre0(Place)
- Chiffre0(Place) = Relais
-
- If Place > 0 Then
- Place = Place - 1
- If Place > 0 Then
- EncoreTri = (Chiffre0(Place - 1) < Chiffre0(Place))
- Else
- EncoreTri = False
- End If
-
- Else
- EncoreTri = False
- End If
- End While
- End If
- Next
-
- But = Val(TextNombre.Text)
- EncoreCherche(0) = True
- RangOperation(0) = 0
- RangOperande(0) = 0
- RangOperateur(0) = 1
- Approximation = 0
-
- While EncoreCherche(0)
- MonResultat(0) = Resultat(0)
- If SiOperationCorrecte(0) Then
- If Math.Abs(MonResultat(0) - But) < Math.Abs(Approximation - But) Then
- Approximation = MonResultat(0)
- Call MontrerSoluce(0)
- End If
- If Approximation = But Then
- EncoreCherche(0) = False
- Else ' passant au niveau suivant
-
- 'passons au niveau 1
- EncoreCherche(1) = True
- RangOperation(1) = 0
- RangOperande(1) = 0
- RangOperateur(1) = 1
-
- 'préparer le niveau suivant
- Envoi = 1
- Chiffre1(0) = MonResultat(0)
-
- For Rang = 0 To 5
- If (Rang <> RangOperateur(0)) And (Rang <> RangOperande(0)) Then
- Chiffre1(Envoi) = Chiffre0(Rang)
-
- Place = Envoi
- EncoreTri = (Chiffre1(Place - 1) < Chiffre1(Place))
- While EncoreTri
- Relais = Chiffre1(Place - 1)
- Chiffre1(Place - 1) = Chiffre1(Place)
- Chiffre1(Place) = Relais
-
- If Place > 0 Then
- Place = Place - 1
- If Place > 0 Then
- EncoreTri = (Chiffre1(Place - 1) < Chiffre1(Place))
- Else
- EncoreTri = False
- End If
- Else
- EncoreTri = False
- End If
- End While
- Envoi = Envoi + 1
- End If
- Next
-
-
- While EncoreCherche(1)
- MonResultat(1) = Resultat(1)
- If SiOperationCorrecte(1) Then
- If Math.Abs(MonResultat(1) - But) < Math.Abs(Approximation - But) Then
- Approximation = MonResultat(1)
- Call MontrerSoluce(1)
- End If
- If Approximation = But Then
- EncoreCherche(1) = False
- Else ' passant au niveau suivant
-
- 'passons au niveau 2
- EncoreCherche(2) = True
- RangOperation(2) = 0
- RangOperande(2) = 0
- RangOperateur(2) = 1
-
- 'préparer le niveau suivant
- Envoi = 1 ' on ajoute les nombres restants après le résultat
- Chiffre2(0) = MonResultat(1)
-
- For Rang = 0 To 4
- If (Rang <> RangOperateur(1)) And (Rang <> RangOperande(1)) Then
- Chiffre2(Envoi) = Chiffre1(Rang)
-
- Place = Envoi
- EncoreTri = (Chiffre2(Place - 1) < Chiffre2(Place))
- While EncoreTri
- Relais = Chiffre2(Place - 1)
- Chiffre2(Place - 1) = Chiffre2(Place)
- Chiffre2(Place) = Relais
-
- If Place > 0 Then
- Place = Place - 1
- If Place > 0 Then
- EncoreTri = (Chiffre2(Place - 1) < Chiffre2(Place))
- Else
- EncoreTri = False
- End If
- Else
- EncoreTri = False
- End If
- End While
- Envoi = Envoi + 1
- End If
- Next
-
- While EncoreCherche(2)
- MonResultat(2) = Resultat(2)
-
- If SiOperationCorrecte(2) Then
- If Math.Abs(MonResultat(2) - But) < Math.Abs(Approximation - But) Then
- Approximation = MonResultat(2)
- Call MontrerSoluce(2)
- End If
- If Approximation = But Then
- EncoreCherche(2) = False
- Else ' passant au niveau suivant
-
- 'passons au niveau 3
- EncoreCherche(3) = True
- RangOperation(3) = 0
- RangOperande(3) = 0
- RangOperateur(3) = 1
-
- 'préparer le niveau suivant
- Envoi = 1 ' on ajoute les nombres restants après le résultat
- Chiffre3(0) = MonResultat(2)
-
- For Rang = 0 To 3
- If (Rang <> RangOperateur(2)) And (Rang <> RangOperande(2)) Then
- Chiffre3(Envoi) = Chiffre2(Rang)
-
- Place = Envoi
- EncoreTri = (Chiffre3(Place - 1) < Chiffre3(Place))
- While EncoreTri
- Relais = Chiffre3(Place - 1)
- Chiffre3(Place - 1) = Chiffre3(Place)
- Chiffre3(Place) = Relais
-
- If Place > 0 Then
- Place = Place - 1
- If Place > 0 Then
- EncoreTri = (Chiffre3(Place - 1) < Chiffre3(Place))
- Else
- EncoreTri = False
- End If
- Else
- EncoreTri = False
- End If
- End While
- Envoi = Envoi + 1
- End If
- Next
-
- While EncoreCherche(3)
- MonResultat(3) = Resultat(3)
-
- If SiOperationCorrecte(3) Then
- If Math.Abs(MonResultat(3) - But) < Math.Abs(Approximation - But) Then
- Approximation = MonResultat(3)
- Call MontrerSoluce(3)
- End If
- If Approximation = But Then
- EncoreCherche(3) = False
- Else ' passant au niveau suivant
- EncoreCherche(4) = True
- RangOperation(4) = 0
-
- 'préparer le niveau suivant
- Chiffre4(0) = MonResultat(3)
-
- For Rang = 0 To 2
- If (Rang <> RangOperateur(3)) And (Rang <> RangOperande(3)) Then
- Chiffre4(1) = Chiffre3(Rang)
- End If
- Next
- If Chiffre4(1) > Chiffre4(0) Then
- Relais = Chiffre4(1)
- Chiffre4(1) = Chiffre4(0)
- Chiffre4(0) = Relais
- End If
-
- While EncoreCherche(4)
- MonResultat(4) = Resultat(4)
-
- If SiOperationCorrecte(4) Then
-
- If Math.Abs(MonResultat(4) - But) < Math.Abs(Approximation - But) Then
- Approximation = MonResultat(4)
- Call MontrerSoluce(4)
- End If
- If Approximation = But Then
- EncoreCherche(4) = False
- End If
- End If
-
- If RangOperation(4) < 3 Then
- RangOperation(4) = RangOperation(4) + 1
- Else
- EncoreCherche(4) = False
- End If
- End While
-
- End If
- End If
-
- If RangOperation(3) < 3 Then
- RangOperation(3) = RangOperation(3) + 1
- ElseIf RangOperateur(3) < 2 Then
- RangOperation(3) = 0
- RangOperateur(3) = RangOperateur(3) + 1
- Else
- If RangOperande(3) < 1 Then
- RangOperande(3) = RangOperande(3) + 1
- RangOperateur(3) = RangOperande(3) + 1
- Else
- EncoreCherche(3) = False
- End If
- End If
- End While
- End If
- End If
-
- If RangOperation(2) < 3 Then
- RangOperation(2) = RangOperation(2) + 1
- ElseIf RangOperateur(2) < 3 Then
- RangOperation(2) = 0
- RangOperateur(2) = RangOperateur(2) + 1
- Else
- If RangOperande(2) < 2 Then
- RangOperande(2) = RangOperande(2) + 1
- RangOperateur(2) = RangOperande(2) + 1
- Else
- EncoreCherche(2) = False
- End If
- End If
-
- End While
-
- End If
- End If
-
- If RangOperation(1) < 3 Then
- RangOperation(1) = RangOperation(1) + 1
- ElseIf RangOperateur(1) < 4 Then
- RangOperation(1) = 0
- RangOperateur(1) = RangOperateur(1) + 1
- Else
- If RangOperande(1) < 3 Then
- RangOperande(1) = RangOperande(1) + 1
- RangOperateur(1) = RangOperande(1) + 1
- Else
- EncoreCherche(1) = False
- End If
- End If
-
- End While
- End If
- End If
-
- If RangOperation(0) < 3 Then
- RangOperation(0) = RangOperation(0) + 1
- ElseIf RangOperateur(0) < 5 Then
- RangOperation(0) = 0
- RangOperateur(0) = RangOperateur(0) + 1
- Else
- If RangOperande(0) < 4 Then
- RangOperande(0) = RangOperande(0) + 1
- RangOperateur(0) = RangOperande(0) + 1
- Else
- EncoreCherche(0) = False
- End If
- End If
- End While
-
- End Sub
- '--------------------------------------------------------------------------------------
- Function Resultat&(ByVal KelNiveau%)
-
- Dim KelResultat&
-
- ' " 0 = + " ; " 1 = x " ; " 2 = - " ; " 3 = / "
-
- Select Case KelNiveau
- Case 0
- Select Case RangOperation(0)
- Case 0
- SiOperationCorrecte(0) = True
- KelResultat = Chiffre0(RangOperande(0)) + Chiffre0(RangOperateur(0))
- Case 1
- SiOperationCorrecte(0) = (Chiffre0(RangOperateur(0)) > 1)
- KelResultat = Chiffre0(RangOperande(0)) * Chiffre0(RangOperateur(0))
- Case 2
- SiOperationCorrecte(0) = (Chiffre0(RangOperande(0)) > Chiffre0(RangOperateur(0)))
- KelResultat = Chiffre0(RangOperande(0)) - Chiffre0(RangOperateur(0))
- Case Else
- SiOperationCorrecte(0) = ((Chiffre0(RangOperande(0)) Mod _
- Chiffre0(RangOperateur(0))) = 0)
- If Chiffre0(RangOperateur(0)) < 2 Then SiOperationCorrecte(0) = False
- KelResultat = Chiffre0(RangOperande(0)) \ Chiffre0(RangOperateur(0))
- End Select
-
- Case 1
- Select Case RangOperation(1)
- Case 0
- SiOperationCorrecte(1) = True
- KelResultat = Chiffre1(RangOperande(1)) + Chiffre1(RangOperateur(1))
- Case 1
- SiOperationCorrecte(1) = (Chiffre1(RangOperateur(1)) > 1)
- KelResultat = Chiffre1(RangOperande(1)) * Chiffre1(RangOperateur(1))
- Case 2
- SiOperationCorrecte(1) = (Chiffre1(RangOperande(1)) > Chiffre1(RangOperateur(1)))
- KelResultat = Chiffre1(RangOperande(1)) - Chiffre1(RangOperateur(1))
- Case Else
- SiOperationCorrecte(1) = ((Chiffre1(RangOperande(1)) Mod _
- Chiffre1(RangOperateur(1))) = 0)
- If Chiffre1(RangOperateur(1)) < 2 Then SiOperationCorrecte(1) = False
- KelResultat = Chiffre1(RangOperande(1)) \ Chiffre1(RangOperateur(1))
- End Select
-
- Case 2
- Select Case RangOperation(2)
- Case 0
- SiOperationCorrecte(2) = True
- KelResultat = Chiffre2(RangOperande(2)) + Chiffre2(RangOperateur(2))
- Case 1
- SiOperationCorrecte(2) = (Chiffre2(RangOperateur(2)) > 1)
- KelResultat = Chiffre2(RangOperande(2)) * Chiffre2(RangOperateur(2))
- Case 2
- SiOperationCorrecte(2) = (Chiffre2(RangOperande(2)) > Chiffre2(RangOperateur(2)))
- KelResultat = Chiffre2(RangOperande(2)) - Chiffre2(RangOperateur(2))
- Case Else
- SiOperationCorrecte(2) = ((Chiffre2(RangOperande(2)) Mod _
- Chiffre2(RangOperateur(2))) = 0)
- If Chiffre2(RangOperateur(2)) < 2 Then SiOperationCorrecte(2) = False
- KelResultat = Chiffre2(RangOperande(2)) \ Chiffre2(RangOperateur(2))
- End Select
-
- Case 3
- Select Case RangOperation(3)
- Case 0
- SiOperationCorrecte(3) = True
- KelResultat = Chiffre3(RangOperande(3)) + Chiffre3(RangOperateur(3))
- Case 1
- SiOperationCorrecte(3) = (Chiffre3(RangOperateur(3)) > 1)
- KelResultat = Chiffre3(RangOperande(3)) * Chiffre3(RangOperateur(3))
- Case 2
- SiOperationCorrecte(3) = (Chiffre3(RangOperande(3)) > Chiffre3(RangOperateur(3)))
- KelResultat = Chiffre3(RangOperande(3)) - Chiffre3(RangOperateur(3))
- Case Else
- SiOperationCorrecte(3) = ((Chiffre3(RangOperande(3)) Mod _
- Chiffre3(RangOperateur(3))) = 0)
- If Chiffre3(RangOperateur(3)) < 2 Then SiOperationCorrecte(3) = False
- KelResultat = Chiffre3(RangOperande(3)) \ Chiffre3(RangOperateur(3))
- End Select
-
- Case 4
- Select Case RangOperation(4)
- Case 0
- SiOperationCorrecte(4) = True
- KelResultat = Chiffre4(0) + Chiffre4(1)
- Case 1
- SiOperationCorrecte(4) = (Chiffre4(1) > 1)
- KelResultat = Chiffre4(0) * Chiffre4(1)
- Case 2
- SiOperationCorrecte(4) = (Chiffre4(0) > Chiffre4(1))
- KelResultat = Chiffre4(0) - Chiffre4(1)
- Case Else
- SiOperationCorrecte(4) = ((Chiffre4(0) Mod Chiffre4(1)) = 0)
- If Chiffre4(1) < 2 Then SiOperationCorrecte(4) = False
- KelResultat = Chiffre4(0) \ Chiffre4(1)
- End Select
-
- End Select
-
- If KelResultat = 0 Then SiOperationCorrecte(KelNiveau) = False
-
- Return KelResultat
-
- End Function
- '--------------------------------------------------------------------------------------
- Sub MontrerSoluce(ByVal KelNiveau%)
-
- LabelReponse.Text = ""
-
- LabelReponse.Text = LabelReponse.Text + _
- Chaine(Chiffre0(RangOperande(0))) + " " + _
- Signe(RangOperation(0)) + " " + _
- Chaine(Chiffre0(RangOperateur(0))) + " = " + _
- Chaine(MonResultat(0))
-
- If KelNiveau > 0 Then
- LabelReponse.Text = LabelReponse.Text + Retour + _
- Chaine(Chiffre1(RangOperande(1))) + " " + _
- Signe(RangOperation(1)) + " " + _
- Chaine(Chiffre1(RangOperateur(1))) + " = " + _
- Chaine(MonResultat(1))
- End If
-
- If KelNiveau > 1 Then
- LabelReponse.Text = LabelReponse.Text + Retour + _
- Chaine(Chiffre2(RangOperande(2))) + " " + _
- Signe(RangOperation(2)) + " " + _
- Chaine(Chiffre2(RangOperateur(2))) + " = " + _
- Chaine(MonResultat(2))
- End If
-
- If KelNiveau > 2 Then
- LabelReponse.Text = LabelReponse.Text + Retour + _
- Chaine(Chiffre3(RangOperande(3))) + " " + _
- Signe(RangOperation(3)) + " " + _
- Chaine(Chiffre3(RangOperateur(3))) + " = " + _
- Chaine(MonResultat(3))
- End If
-
- If KelNiveau > 3 Then
- LabelReponse.Text = LabelReponse.Text + Retour + _
- Chaine(Chiffre4(0)) + " " + _
- Signe(RangOperation(4)) + " " + _
- Chaine(Chiffre4(1)) + " = " + _
- Chaine(MonResultat(4))
- End If
-
- End Sub
- '--------------------------------------------------------------------------------------
-
-
-
-
- End Class
- '--------------------------------------------------------------------------------------
-
Public Class Chiffre1
'------------------------------------------------
Public Retour$ ' "à la ligne" pour écrire un "text" sur plusieurs lignes
Public HVtab& ' constante de taille graphique Horizontale ou Verticale (clin d'oeil à l'Apple II)
Const LargeurTrait = 3
Const SuperTaille = 43
Const GrandeTaille = 24
Const PetiteTaille = 16
'------------------------------------------------
' les chiffres à choisir
Public ValeurChoix%(13)
Public NombreChoix%(13)
Public ButtonChoix(13) As Button
Public LabelTraitChoix As Label
'------------------------------------------------
' les 6 chiffres choisis
Public LabelExplique As Label
Public ButtonDonnees(5) As Button
Public LabelTraitDonnees As Label
'------------------------------------------------
' Le nombre à trouver
Public LabelNombre As Label
Public TextNombre As TextBox
Public SiNoTexte As Boolean
Public LabelTraitNombre As Label
Public ButtonHasard As Button
Public ButtonRien As Button
Public LabelSoluce As Label
Public ButtonSoluce As Button
Public LabelTraitSoluce As Label
Public But% ' à trouver ou à approcher
'------------------------------------------------
' les données + les résultats des calculs
Public Signe$(3) ' de l'opération"
Public Chiffre0&(5) ' profondeur du calcul : 0 = données
Public Chiffre1&(4)
Public Chiffre2&(3)
Public Chiffre3&(2)
Public Chiffre4&(1)
Public Operation%(4) ' " 0 = + " ; " 1 = x " ; " 2 = - " ; " 3 = / "
'------------------------------------------------
Public LabelReponse As Label
Public LabelTraitReponse As Label
'------------------------------------------------
Public KelChoix% ' le rang du chiffre choisi
Public NombreDonnees% ' déjà choisie
Public SiOperationCorrecte(4) As Boolean
Public RangOperation%(4)
Public RangOperande%(3)
Public RangOperateur%(3) ' Operande Operation Operateur = Resultat
' au niveau 4 Operande(4) = 0 et Operateur(4) = 1
Public MonResultat&(4)
Public Approximation& ' la meilleure solution en cours
'------------------------------------------------
Public CouleurFond As Color
Public CouleurButtonClair As Color
Public CouleurButtonFonce As Color
'--------------------------------------------------------------------------------------
Private Sub Chiffre1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Rang%, HVChoix&, Ecart&, VDonnees&, HNombre&, VNombre&
Const Releve = 5
'-------------------
Retour = Chr(13)
SiNoTexte = True
Randomize()
'-------------------
Signe(0) = "+"
Signe(1) = "´"
Signe(2) = "-"
Signe(3) = "¸"
'-------------------
CouleurFond = Color.FromArgb(255, 235, 240, 220)
CouleurButtonClair = Color.FromArgb(255, 255, 240)
CouleurButtonFonce = Color.FromArgb(235, 235, 210)
'-------------------
Me.Font = New Font("Times New Roman", PetiteTaille, FontStyle.Regular)
HVtab = Me.Font.Height
Me.BackColor = CouleurFond
'-------------------
' Chiffres proposés + leur nombre maximum autorisé
For Rang = 0 To 9
ValeurChoix(Rang) = Rang + 1
NombreChoix(Rang) = 2
Next Rang
ValeurChoix(10) = 25
NombreChoix(10) = 1
ValeurChoix(11) = 50
NombreChoix(11) = 1
ValeurChoix(12) = 75
NombreChoix(12) = 1
ValeurChoix(13) = 100
NombreChoix(13) = 1
'-------------------
' choix des chiffres autorisés
HVChoix = HVtab * 0.7
Ecart = HVtab * 0.2
For Rang = 0 To 13
ButtonChoix(Rang) = New Button
Me.Controls.Add(ButtonChoix(Rang))
ButtonChoix(Rang).BackColor = CouleurButtonClair
ButtonChoix(Rang).Text = Chaine(ValeurChoix(Rang))
ButtonChoix(Rang).Font = New Font("Symbol", GrandeTaille, FontStyle.Bold)
ButtonChoix(Rang).Height = HVtab * 2
ButtonChoix(Rang).Tag = ValeurChoix(Rang)
AddHandler ButtonChoix(Rang).Click, AddressOf ButtonChoix_Click
Select Case Rang
Case 0 To 8
ButtonChoix(Rang).Width = HVtab * 2
Case 9 To 12
ButtonChoix(Rang).Width = HVtab * 2.5
Case Else
ButtonChoix(Rang).Width = HVtab * 3.1
End Select
If Rang = 0 Then
ButtonChoix(Rang).Location = New Point(HVChoix, HVChoix)
Else
ButtonChoix(Rang).Location = New Point(ButtonChoix(Rang - 1).Location.X + _
ButtonChoix(Rang - 1).Width + Ecart, _
HVChoix)
End If
ButtonChoix(Rang).TextAlign = ContentAlignment.MiddleCenter
Next Rang
'-------------------
' on encadre le tout
LabelTraitChoix = New Label
Me.Controls.Add(LabelTraitChoix)
LabelTraitChoix.Location = New Point(ButtonChoix(0).Location.X - Ecart, _
ButtonChoix(0).Location.Y - Ecart)
LabelTraitChoix.Width = ButtonChoix(13).Location.X + _
ButtonChoix(0).Width + Ecart * 4
LabelTraitChoix.Height = ButtonChoix(0).Height + Ecart * 2
LabelTraitChoix.BorderStyle = BorderStyle.Fixed3D
LabelTraitChoix.BackColor = CouleurFond
'-------------------
' les 6 chiffres données
NombreDonnees = 0
VDonnees = LabelTraitChoix.Location.Y + LabelTraitChoix.Height + HVChoix + Ecart
LabelExplique = New Label
Me.Controls.Add(LabelExplique)
LabelExplique.Text = "0 nombre"
LabelExplique.Location = New Point(HVChoix, VDonnees)
LabelExplique.Width = HVtab * 4.5
LabelExplique.Height = HVtab
LabelExplique.BorderStyle = BorderStyle.None
LabelExplique.TextAlign = ContentAlignment.MiddleCenter
LabelExplique.BackColor = CouleurFond
For Rang = 0 To 5
ButtonDonnees(Rang) = New Button
Me.Controls.Add(ButtonDonnees(Rang))
ButtonDonnees(Rang).Text = ""
ButtonDonnees(Rang).Font = ButtonChoix(Rang).Font
ButtonDonnees(Rang).Height = ButtonChoix(0).Height
ButtonDonnees(Rang).Width = HVtab * 3.5
ButtonDonnees(Rang).Location = New Point(HVChoix + Ecart * 2, LabelExplique.Location.Y + _
LabelExplique.Height + Ecart + _
(ButtonDonnees(0).Height + Ecart) * Rang)
ButtonDonnees(Rang).TextAlign = ContentAlignment.MiddleCenter
ButtonDonnees(Rang).Enabled = False
ButtonDonnees(Rang).Tag = Rang
ButtonDonnees(Rang).BackColor = CouleurButtonFonce
AddHandler ButtonDonnees(Rang).Click, AddressOf ButtonDonnees_Click
Next Rang
LabelTraitDonnees = New Label
Me.Controls.Add(LabelTraitDonnees)
LabelTraitDonnees.Location = New Point(LabelTraitChoix.Location.X, _
LabelTraitChoix.Location.Y + _
LabelTraitChoix.Height + HVChoix)
LabelTraitDonnees.Width = ButtonDonnees(5).Width + Ecart * 6.1
LabelTraitDonnees.Height = ButtonDonnees(5).Location.Y + ButtonDonnees(5).Height - _
LabelTraitDonnees.Location.Y + Ecart
LabelTraitDonnees.BorderStyle = BorderStyle.Fixed3D
LabelTraitDonnees.BackColor = CouleurFond
'-------------------
VNombre = VDonnees
HNombre = LabelTraitDonnees.Location.X + LabelTraitDonnees.Width + HVChoix + Ecart
LabelNombre = New Label
Me.Controls.Add(LabelNombre)
LabelNombre.Text = "Le nombre" + Retour + "cherché :"
LabelNombre.Font = New Font("Times New Roman", PetiteTaille, FontStyle.Bold)
LabelNombre.Height = HVtab * 2
LabelNombre.Width = HVtab * 5
LabelNombre.Location = New Point(HNombre, VNombre)
LabelNombre.TextAlign = ContentAlignment.TopCenter
LabelNombre.BorderStyle = BorderStyle.None
LabelNombre.BackColor = CouleurFond
TextNombre = New TextBox
Me.Controls.Add(TextNombre)
TextNombre.Text = ""
TextNombre.Font = New Font("Times New Roman", GrandeTaille, FontStyle.Bold)
TextNombre.Height = HVtab * 2
TextNombre.Width = HVtab * 3
TextNombre.Location = New Point(HNombre + HVtab, _
ButtonDonnees(1).Location.Y - Ecart * Releve)
TextNombre.TextAlign = HorizontalAlignment.Center
TextNombre.BorderStyle = BorderStyle.Fixed3D
AddHandler TextNombre.TextChanged, AddressOf TextNombre_TextChanged
ButtonHasard = New Button
Me.Controls.Add(ButtonHasard)
ButtonHasard.Text = "Hasard"
ButtonHasard.Width = HVtab * 3.9
ButtonHasard.Height = HVtab * 1.7
AddHandler ButtonHasard.Click, AddressOf ButtonHasard_Click
ButtonHasard.BackColor = CouleurButtonClair
ButtonHasard.Location = New Point(HNombre + HVtab * 0.5, _
ButtonDonnees(2).Location.Y - Ecart * Releve)
ButtonRien = New Button
Me.Controls.Add(ButtonRien)
ButtonRien.Enabled = False
ButtonRien.Text = "Annuler"
ButtonRien.Width = ButtonHasard.Width
ButtonRien.Height = ButtonHasard.Height
ButtonRien.BackColor = CouleurButtonFonce
AddHandler ButtonRien.Click, AddressOf ButtonRien_Click
ButtonRien.Location = New Point(ButtonHasard.Location.X, _
ButtonDonnees(3).Location.Y - Ecart * Releve)
LabelSoluce = New Label
Me.Controls.Add(LabelSoluce)
LabelSoluce.Location = New Point(HNombre, ButtonDonnees(4).Location.Y - HVtab * 0.2)
LabelSoluce.Width = LabelNombre.Width
LabelSoluce.Height = HVtab * 2
LabelSoluce.BorderStyle = BorderStyle.None
LabelSoluce.Text = "Lancer" + Retour + "le calcul"
LabelSoluce.Font = LabelNombre.Font
LabelSoluce.TextAlign = ContentAlignment.TopCenter
LabelSoluce.BackColor = CouleurFond
ButtonSoluce = New Button
Me.Controls.Add(ButtonSoluce)
ButtonSoluce.Text = "Solution"
ButtonSoluce.Width = ButtonHasard.Width
ButtonSoluce.Height = ButtonHasard.Height
ButtonSoluce.BackColor = CouleurButtonFonce
AddHandler ButtonSoluce.Click, AddressOf ButtonSoluce_Click
ButtonSoluce.Enabled = False
ButtonSoluce.Location = New Point(ButtonRien.Location.X, LabelSoluce.Location.Y + LabelSoluce.Height + HVtab * 0.5)
LabelTraitNombre = New Label
Me.Controls.Add(LabelTraitNombre)
LabelTraitNombre.Location = New Point(HNombre - Ecart * 2.5, LabelTraitDonnees.Location.Y)
LabelTraitNombre.Width = HVtab * 6
LabelTraitNombre.Height = ButtonRien.Height + ButtonRien.Location.Y + Ecart * 2.5 - _
VNombre
LabelTraitNombre.BorderStyle = BorderStyle.Fixed3D
LabelTraitNombre.BackColor = CouleurFond
LabelTraitSoluce = New Label
Me.Controls.Add(LabelTraitSoluce)
LabelTraitSoluce.Location = New Point(LabelTraitNombre.Location.X, _
LabelTraitNombre.Location.Y + _
LabelTraitNombre.Height + HVtab - Ecart * 2)
LabelTraitSoluce.Width = LabelTraitNombre.Width
LabelTraitSoluce.Height = ButtonSoluce.Height + ButtonSoluce.Location.Y - _
LabelTraitSoluce.Location.Y + Ecart * 2
LabelTraitSoluce.BorderStyle = BorderStyle.Fixed3D
LabelTraitSoluce.BackColor = CouleurFond
'-------------------
LabelReponse = New Label
Me.Controls.Add(LabelReponse)
LabelTraitReponse = New Label
Me.Controls.Add(LabelTraitReponse)
LabelTraitReponse.Location = New Point(LabelTraitNombre.Location.X + _
LabelTraitNombre.Width + Ecart * 2, _
LabelTraitNombre.Location.Y)
LabelTraitReponse.Width = LabelTraitChoix.Location.X + LabelTraitChoix.Width - _
LabelTraitReponse.Location.X
LabelTraitReponse.Height = LabelTraitDonnees.Location.Y + LabelTraitDonnees.Height - _
LabelTraitReponse.Location.Y
LabelTraitReponse.BorderStyle = BorderStyle.Fixed3D
LabelTraitReponse.BackColor = CouleurFond
LabelReponse.Location = New Point(LabelTraitReponse.Location.X + HVtab * 0.5, _
LabelTraitReponse.Location.Y + HVtab * 0.2)
LabelReponse.Width = LabelTraitReponse.Width - HVtab
LabelReponse.Height = LabelTraitReponse.Height - HVtab * 0.7
LabelReponse.BorderStyle = BorderStyle.None
LabelReponse.Text = ""
LabelReponse.Font = New Font("Symbol", SuperTaille, FontStyle.Bold)
LabelReponse.BackColor = CouleurFond
'-------------------
Me.Height = LabelTraitDonnees.Location.Y + LabelTraitDonnees.Height + HVChoix + Ecart * 6
Me.Location = New Point(HVtab, HVtab)
Me.Width = LabelTraitChoix.Location.X + LabelTraitChoix.Width + HVChoix + Ecart
Me.Text = " Des chiffres par Jacques BOURDEAU :"
'-------------------
SiNoTexte = False
End Sub
'--------------------------------------------------------------------------------------
Function Chaine$(ByVal Nombre&)
Return Trim(Str(Nombre))
End Function
'--------------------------------------------------------------------------------------
Private Sub ButtonDonnees_Click(ByVal Sender As System.Object, ByVal E As System.EventArgs)
ButtonDonnees(Sender.Tag).Text = ""
ButtonDonnees(Sender.Tag).Enabled = False
ButtonDonnees(Sender.Tag).BackColor = CouleurButtonFonce
NombreDonnees = NombreDonnees - 1
Call VerifieMaximum()
End Sub
'--------------------------------------------------------------------------------------
Private Sub ButtonChoix_Click(ByVal Sender As System.Object, ByVal E As System.EventArgs)
Dim Rang%
If NombreDonnees > 5 Then
Exit Sub
End If
KelChoix = Sender.tag
Rang = 0
While Len(ButtonDonnees(Rang).Text.Trim) > 0
Rang = Rang + 1
End While
ButtonDonnees(Rang).Text = Chaine(KelChoix)
ButtonDonnees(Rang).Enabled = True
ButtonDonnees(Rang).BackColor = CouleurButtonClair
NombreDonnees = NombreDonnees + 1
Call VerifieMaximum()
ButtonSoluce.Enabled = (NombreDonnees = 6) And (Val(TextNombre.Text) > 100)
If ButtonSoluce.Enabled Then
ButtonSoluce.BackColor = CouleurButtonClair
Else
ButtonSoluce.BackColor = CouleurButtonFonce
End If
End Sub
'--------------------------------------------------------------------------------------
Private Sub TextNombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim Texte$, NewTexte$, Lettre$
If SiNoTexte Then Exit Sub
SiNoTexte = True
Texte = TextNombre.Text
If Len(Texte) > 3 Then
Texte = Texte.Substring(0, 3)
End If
NewTexte = ""
While (Len(Texte) > 0)
Lettre = Texte.Chars(0)
If (Lettre >= "0") And (Lettre <= "9") Then
NewTexte = NewTexte + Lettre
End If
Texte = Texte.Substring(1)
End While
TextNombre.Text = NewTexte
ButtonSoluce.Enabled = (Val(NewTexte) > 100) And (NombreDonnees = 6)
If ButtonSoluce.Enabled Then
ButtonSoluce.BackColor = CouleurButtonClair
Else
ButtonSoluce.BackColor = CouleurButtonFonce
End If
ButtonRien.Enabled = Len(NewTexte) > 0
If ButtonRien.Enabled Then
ButtonRien.BackColor = CouleurButtonClair
Else
ButtonRien.BackColor = CouleurButtonFonce
End If
TextNombre.SelectionStart = Len(TextNombre.Text)
SiNoTexte = False
End Sub
'--------------------------------------------------------------------------------------
'vérifie si le nombre maximum de chiffres est atteint
Sub VerifieMaximum()
Dim Rang%, Place%, NombreChiffre%(13)
For Rang = 0 To 13
NombreChiffre(Rang) = 0
Next Rang
For Place = 0 To 5
If Len(ButtonDonnees(Place).Text) > 0 Then
Rang = RangNombre(Val(ButtonDonnees(Place).Text))
NombreChiffre(Rang) = NombreChiffre(Rang) + 1
End If
Next Place
If NombreDonnees < 6 Then
ButtonSoluce.Enabled = False
For Rang = 0 To 13
ButtonChoix(Rang).Enabled = (NombreChiffre(Rang) < NombreChoix(Rang))
Next Rang
Else
For Rang = 0 To 13
ButtonChoix(Rang).Enabled = False
Next Rang
End If
For Rang = 0 To 13
If ButtonChoix(Rang).Enabled Then
ButtonChoix(Rang).BackColor = CouleurButtonClair
Else
ButtonChoix(Rang).BackColor = CouleurButtonFonce
End If
Next Rang
Select Case NombreDonnees
Case 0
LabelExplique.Text = "0 nombre"
Case 1
LabelExplique.Text = "1 nombre"
Case Else
LabelExplique.Text = Chaine(NombreDonnees) + " nombres"
End Select
End Sub
'--------------------------------------------------------------------------------------
Public Function RangNombre%(ByVal KelChiffre%)
Dim Reponse%, Rang%
Reponse = -1
For Rang = 0 To 13
If ValeurChoix(Rang) = KelChiffre Then
Reponse = Rang
End If
Next Rang
Return Reponse
End Function
'--------------------------------------------------------------------------------------
Private Sub ButtonRien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
TextNombre.Text = ""
ButtonRien.Enabled = False
ButtonRien.BackColor = CouleurButtonFonce
ButtonSoluce.Enabled = False
ButtonSoluce.BackColor = CouleurButtonFonce
End Sub
'--------------------------------------------------------------------------------------
Private Sub ButtonHasard_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim Koi%
Koi = 0
Randomize()
While (Koi < 101) Or (Koi > 999)
Koi = CInt(1000 * Rnd())
End While
SiNoTexte = True
TextNombre.Text = Chaine(Koi)
ButtonRien.Enabled = True
ButtonRien.BackColor = CouleurButtonClair
ButtonSoluce.Enabled = (NombreDonnees = 6)
If ButtonSoluce.Enabled Then
ButtonSoluce.BackColor = CouleurButtonClair
Else
ButtonSoluce.BackColor = CouleurButtonFonce
End If
SiNoTexte = False
End Sub
'--------------------------------------------------------------------------------------
Private Sub ButtonSoluce_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim Rang%, Place%, Relais%, Envoi%
Dim EncoreTri As Boolean
Dim EncoreCherche(5) As Boolean
'Public Operation%(5) ' " 0 = + " ; " 1 = x " ; " 2 = - " ; " 3 = / "
'Public Resultat%(5) ' de l'opération
'Public RangOperation%(5)
'Public RangOperande%(5)
'Public RangOperateur%(5) ' Operande Operation Operateur = Resultat
'prépare la saisie des données
For Rang = 0 To 5
Chiffre0(Rang) = 0
Next Rang
'saisie + tri des données
For Rang = 0 To 5
Chiffre0(Rang) = Val(ButtonDonnees(Rang).Text)
If Rang > 0 Then
Place = Rang
EncoreTri = (Chiffre0(Place - 1) < Chiffre0(Place))
While EncoreTri
Relais = Chiffre0(Place - 1)
Chiffre0(Place - 1) = Chiffre0(Place)
Chiffre0(Place) = Relais
If Place > 0 Then
Place = Place - 1
If Place > 0 Then
EncoreTri = (Chiffre0(Place - 1) < Chiffre0(Place))
Else
EncoreTri = False
End If
Else
EncoreTri = False
End If
End While
End If
Next
But = Val(TextNombre.Text)
EncoreCherche(0) = True
RangOperation(0) = 0
RangOperande(0) = 0
RangOperateur(0) = 1
Approximation = 0
While EncoreCherche(0)
MonResultat(0) = Resultat(0)
If SiOperationCorrecte(0) Then
If Math.Abs(MonResultat(0) - But) < Math.Abs(Approximation - But) Then
Approximation = MonResultat(0)
Call MontrerSoluce(0)
End If
If Approximation = But Then
EncoreCherche(0) = False
Else ' passant au niveau suivant
'passons au niveau 1
EncoreCherche(1) = True
RangOperation(1) = 0
RangOperande(1) = 0
RangOperateur(1) = 1
'préparer le niveau suivant
Envoi = 1
Chiffre1(0) = MonResultat(0)
For Rang = 0 To 5
If (Rang <> RangOperateur(0)) And (Rang <> RangOperande(0)) Then
Chiffre1(Envoi) = Chiffre0(Rang)
Place = Envoi
EncoreTri = (Chiffre1(Place - 1) < Chiffre1(Place))
While EncoreTri
Relais = Chiffre1(Place - 1)
Chiffre1(Place - 1) = Chiffre1(Place)
Chiffre1(Place) = Relais
If Place > 0 Then
Place = Place - 1
If Place > 0 Then
EncoreTri = (Chiffre1(Place - 1) < Chiffre1(Place))
Else
EncoreTri = False
End If
Else
EncoreTri = False
End If
End While
Envoi = Envoi + 1
End If
Next
While EncoreCherche(1)
MonResultat(1) = Resultat(1)
If SiOperationCorrecte(1) Then
If Math.Abs(MonResultat(1) - But) < Math.Abs(Approximation - But) Then
Approximation = MonResultat(1)
Call MontrerSoluce(1)
End If
If Approximation = But Then
EncoreCherche(1) = False
Else ' passant au niveau suivant
'passons au niveau 2
EncoreCherche(2) = True
RangOperation(2) = 0
RangOperande(2) = 0
RangOperateur(2) = 1
'préparer le niveau suivant
Envoi = 1 ' on ajoute les nombres restants après le résultat
Chiffre2(0) = MonResultat(1)
For Rang = 0 To 4
If (Rang <> RangOperateur(1)) And (Rang <> RangOperande(1)) Then
Chiffre2(Envoi) = Chiffre1(Rang)
Place = Envoi
EncoreTri = (Chiffre2(Place - 1) < Chiffre2(Place))
While EncoreTri
Relais = Chiffre2(Place - 1)
Chiffre2(Place - 1) = Chiffre2(Place)
Chiffre2(Place) = Relais
If Place > 0 Then
Place = Place - 1
If Place > 0 Then
EncoreTri = (Chiffre2(Place - 1) < Chiffre2(Place))
Else
EncoreTri = False
End If
Else
EncoreTri = False
End If
End While
Envoi = Envoi + 1
End If
Next
While EncoreCherche(2)
MonResultat(2) = Resultat(2)
If SiOperationCorrecte(2) Then
If Math.Abs(MonResultat(2) - But) < Math.Abs(Approximation - But) Then
Approximation = MonResultat(2)
Call MontrerSoluce(2)
End If
If Approximation = But Then
EncoreCherche(2) = False
Else ' passant au niveau suivant
'passons au niveau 3
EncoreCherche(3) = True
RangOperation(3) = 0
RangOperande(3) = 0
RangOperateur(3) = 1
'préparer le niveau suivant
Envoi = 1 ' on ajoute les nombres restants après le résultat
Chiffre3(0) = MonResultat(2)
For Rang = 0 To 3
If (Rang <> RangOperateur(2)) And (Rang <> RangOperande(2)) Then
Chiffre3(Envoi) = Chiffre2(Rang)
Place = Envoi
EncoreTri = (Chiffre3(Place - 1) < Chiffre3(Place))
While EncoreTri
Relais = Chiffre3(Place - 1)
Chiffre3(Place - 1) = Chiffre3(Place)
Chiffre3(Place) = Relais
If Place > 0 Then
Place = Place - 1
If Place > 0 Then
EncoreTri = (Chiffre3(Place - 1) < Chiffre3(Place))
Else
EncoreTri = False
End If
Else
EncoreTri = False
End If
End While
Envoi = Envoi + 1
End If
Next
While EncoreCherche(3)
MonResultat(3) = Resultat(3)
If SiOperationCorrecte(3) Then
If Math.Abs(MonResultat(3) - But) < Math.Abs(Approximation - But) Then
Approximation = MonResultat(3)
Call MontrerSoluce(3)
End If
If Approximation = But Then
EncoreCherche(3) = False
Else ' passant au niveau suivant
EncoreCherche(4) = True
RangOperation(4) = 0
'préparer le niveau suivant
Chiffre4(0) = MonResultat(3)
For Rang = 0 To 2
If (Rang <> RangOperateur(3)) And (Rang <> RangOperande(3)) Then
Chiffre4(1) = Chiffre3(Rang)
End If
Next
If Chiffre4(1) > Chiffre4(0) Then
Relais = Chiffre4(1)
Chiffre4(1) = Chiffre4(0)
Chiffre4(0) = Relais
End If
While EncoreCherche(4)
MonResultat(4) = Resultat(4)
If SiOperationCorrecte(4) Then
If Math.Abs(MonResultat(4) - But) < Math.Abs(Approximation - But) Then
Approximation = MonResultat(4)
Call MontrerSoluce(4)
End If
If Approximation = But Then
EncoreCherche(4) = False
End If
End If
If RangOperation(4) < 3 Then
RangOperation(4) = RangOperation(4) + 1
Else
EncoreCherche(4) = False
End If
End While
End If
End If
If RangOperation(3) < 3 Then
RangOperation(3) = RangOperation(3) + 1
ElseIf RangOperateur(3) < 2 Then
RangOperation(3) = 0
RangOperateur(3) = RangOperateur(3) + 1
Else
If RangOperande(3) < 1 Then
RangOperande(3) = RangOperande(3) + 1
RangOperateur(3) = RangOperande(3) + 1
Else
EncoreCherche(3) = False
End If
End If
End While
End If
End If
If RangOperation(2) < 3 Then
RangOperation(2) = RangOperation(2) + 1
ElseIf RangOperateur(2) < 3 Then
RangOperation(2) = 0
RangOperateur(2) = RangOperateur(2) + 1
Else
If RangOperande(2) < 2 Then
RangOperande(2) = RangOperande(2) + 1
RangOperateur(2) = RangOperande(2) + 1
Else
EncoreCherche(2) = False
End If
End If
End While
End If
End If
If RangOperation(1) < 3 Then
RangOperation(1) = RangOperation(1) + 1
ElseIf RangOperateur(1) < 4 Then
RangOperation(1) = 0
RangOperateur(1) = RangOperateur(1) + 1
Else
If RangOperande(1) < 3 Then
RangOperande(1) = RangOperande(1) + 1
RangOperateur(1) = RangOperande(1) + 1
Else
EncoreCherche(1) = False
End If
End If
End While
End If
End If
If RangOperation(0) < 3 Then
RangOperation(0) = RangOperation(0) + 1
ElseIf RangOperateur(0) < 5 Then
RangOperation(0) = 0
RangOperateur(0) = RangOperateur(0) + 1
Else
If RangOperande(0) < 4 Then
RangOperande(0) = RangOperande(0) + 1
RangOperateur(0) = RangOperande(0) + 1
Else
EncoreCherche(0) = False
End If
End If
End While
End Sub
'--------------------------------------------------------------------------------------
Function Resultat&(ByVal KelNiveau%)
Dim KelResultat&
' " 0 = + " ; " 1 = x " ; " 2 = - " ; " 3 = / "
Select Case KelNiveau
Case 0
Select Case RangOperation(0)
Case 0
SiOperationCorrecte(0) = True
KelResultat = Chiffre0(RangOperande(0)) + Chiffre0(RangOperateur(0))
Case 1
SiOperationCorrecte(0) = (Chiffre0(RangOperateur(0)) > 1)
KelResultat = Chiffre0(RangOperande(0)) * Chiffre0(RangOperateur(0))
Case 2
SiOperationCorrecte(0) = (Chiffre0(RangOperande(0)) > Chiffre0(RangOperateur(0)))
KelResultat = Chiffre0(RangOperande(0)) - Chiffre0(RangOperateur(0))
Case Else
SiOperationCorrecte(0) = ((Chiffre0(RangOperande(0)) Mod _
Chiffre0(RangOperateur(0))) = 0)
If Chiffre0(RangOperateur(0)) < 2 Then SiOperationCorrecte(0) = False
KelResultat = Chiffre0(RangOperande(0)) \ Chiffre0(RangOperateur(0))
End Select
Case 1
Select Case RangOperation(1)
Case 0
SiOperationCorrecte(1) = True
KelResultat = Chiffre1(RangOperande(1)) + Chiffre1(RangOperateur(1))
Case 1
SiOperationCorrecte(1) = (Chiffre1(RangOperateur(1)) > 1)
KelResultat = Chiffre1(RangOperande(1)) * Chiffre1(RangOperateur(1))
Case 2
SiOperationCorrecte(1) = (Chiffre1(RangOperande(1)) > Chiffre1(RangOperateur(1)))
KelResultat = Chiffre1(RangOperande(1)) - Chiffre1(RangOperateur(1))
Case Else
SiOperationCorrecte(1) = ((Chiffre1(RangOperande(1)) Mod _
Chiffre1(RangOperateur(1))) = 0)
If Chiffre1(RangOperateur(1)) < 2 Then SiOperationCorrecte(1) = False
KelResultat = Chiffre1(RangOperande(1)) \ Chiffre1(RangOperateur(1))
End Select
Case 2
Select Case RangOperation(2)
Case 0
SiOperationCorrecte(2) = True
KelResultat = Chiffre2(RangOperande(2)) + Chiffre2(RangOperateur(2))
Case 1
SiOperationCorrecte(2) = (Chiffre2(RangOperateur(2)) > 1)
KelResultat = Chiffre2(RangOperande(2)) * Chiffre2(RangOperateur(2))
Case 2
SiOperationCorrecte(2) = (Chiffre2(RangOperande(2)) > Chiffre2(RangOperateur(2)))
KelResultat = Chiffre2(RangOperande(2)) - Chiffre2(RangOperateur(2))
Case Else
SiOperationCorrecte(2) = ((Chiffre2(RangOperande(2)) Mod _
Chiffre2(RangOperateur(2))) = 0)
If Chiffre2(RangOperateur(2)) < 2 Then SiOperationCorrecte(2) = False
KelResultat = Chiffre2(RangOperande(2)) \ Chiffre2(RangOperateur(2))
End Select
Case 3
Select Case RangOperation(3)
Case 0
SiOperationCorrecte(3) = True
KelResultat = Chiffre3(RangOperande(3)) + Chiffre3(RangOperateur(3))
Case 1
SiOperationCorrecte(3) = (Chiffre3(RangOperateur(3)) > 1)
KelResultat = Chiffre3(RangOperande(3)) * Chiffre3(RangOperateur(3))
Case 2
SiOperationCorrecte(3) = (Chiffre3(RangOperande(3)) > Chiffre3(RangOperateur(3)))
KelResultat = Chiffre3(RangOperande(3)) - Chiffre3(RangOperateur(3))
Case Else
SiOperationCorrecte(3) = ((Chiffre3(RangOperande(3)) Mod _
Chiffre3(RangOperateur(3))) = 0)
If Chiffre3(RangOperateur(3)) < 2 Then SiOperationCorrecte(3) = False
KelResultat = Chiffre3(RangOperande(3)) \ Chiffre3(RangOperateur(3))
End Select
Case 4
Select Case RangOperation(4)
Case 0
SiOperationCorrecte(4) = True
KelResultat = Chiffre4(0) + Chiffre4(1)
Case 1
SiOperationCorrecte(4) = (Chiffre4(1) > 1)
KelResultat = Chiffre4(0) * Chiffre4(1)
Case 2
SiOperationCorrecte(4) = (Chiffre4(0) > Chiffre4(1))
KelResultat = Chiffre4(0) - Chiffre4(1)
Case Else
SiOperationCorrecte(4) = ((Chiffre4(0) Mod Chiffre4(1)) = 0)
If Chiffre4(1) < 2 Then SiOperationCorrecte(4) = False
KelResultat = Chiffre4(0) \ Chiffre4(1)
End Select
End Select
If KelResultat = 0 Then SiOperationCorrecte(KelNiveau) = False
Return KelResultat
End Function
'--------------------------------------------------------------------------------------
Sub MontrerSoluce(ByVal KelNiveau%)
LabelReponse.Text = ""
LabelReponse.Text = LabelReponse.Text + _
Chaine(Chiffre0(RangOperande(0))) + " " + _
Signe(RangOperation(0)) + " " + _
Chaine(Chiffre0(RangOperateur(0))) + " = " + _
Chaine(MonResultat(0))
If KelNiveau > 0 Then
LabelReponse.Text = LabelReponse.Text + Retour + _
Chaine(Chiffre1(RangOperande(1))) + " " + _
Signe(RangOperation(1)) + " " + _
Chaine(Chiffre1(RangOperateur(1))) + " = " + _
Chaine(MonResultat(1))
End If
If KelNiveau > 1 Then
LabelReponse.Text = LabelReponse.Text + Retour + _
Chaine(Chiffre2(RangOperande(2))) + " " + _
Signe(RangOperation(2)) + " " + _
Chaine(Chiffre2(RangOperateur(2))) + " = " + _
Chaine(MonResultat(2))
End If
If KelNiveau > 2 Then
LabelReponse.Text = LabelReponse.Text + Retour + _
Chaine(Chiffre3(RangOperande(3))) + " " + _
Signe(RangOperation(3)) + " " + _
Chaine(Chiffre3(RangOperateur(3))) + " = " + _
Chaine(MonResultat(3))
End If
If KelNiveau > 3 Then
LabelReponse.Text = LabelReponse.Text + Retour + _
Chaine(Chiffre4(0)) + " " + _
Signe(RangOperation(4)) + " " + _
Chaine(Chiffre4(1)) + " = " + _
Chaine(MonResultat(4))
End If
End Sub
'--------------------------------------------------------------------------------------
End Class
'--------------------------------------------------------------------------------------
Conclusion
La propriété "tag" des 14 boutons "ButtonChoix(13)" permet de les indexer afin de déterminer le bouton cliqué. Pas de bug mais plein de méthodes net pour débutants. Le logiciel contrôle toute action de l'utilisateur et interdit tout plantage. C'est une adaption en net d'un programme écrit à l'origine en assembleur sous Apple II il ya plus de 20 ans
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Lecture Tag trop lent [ par bingo974 ]
Salut tout le mondeJE désir faire un indexeur de mp3. J'utilise un algo super rapide qui parcours les répertoires de mon disque (20Go en 80 secondes -
Format nombre [ par noe ]
Bonjour à tousj'extrait de ma base de donnée acces97 un chiffre simpleje le fait apparaitre dans un textbox en utilisant un code pour le formatage tex
convertire chiffre (ex: 150-->1.500e+02) [ par zouilletorino ]
Salut, voila, j'ai un petit probleme, il faut que je convertisse sous Visual basic des chiffres sous le format: X.XXXXXXe(+/-)XXchaque X etant un chif
glisser listbox->treeview [ par bingo974 ]
Bonjour,Je n'arrive pas à trouver un code sur vbfrance me permettant de réaliser un dragdrop entre une listbox et un treeview en utilisant OLEDRAG OLE
indice ( index ) [ par michong ]
michong Michongvoila je voulais savoi si il était possible de mettre un indice dans un reco
Aide pour l'envois de pièces jointes avec MAPI [ par TopperFr ]
J'utilise le code suivant mais à un seul fichier est attaché au mail et c'est à chaque fois le dernier de la liste. Apparement à chaque attachement de
Dernier chiffre d'un nombre! [ par jpujol95 ]
salut!J'aimerais savoir comment retirer le dernier chiffre d'un nombre quand on clique sur un boutton!Sachant que le nombre peut prendre une taille va
treeview : trouver l'index d'un node d'apres sa cle [ par CoChOnOu ]
Hello à vous :-)Bah tout est à peut près dans le titre ;-)voilà, j'ai la clé d'un node d'un treeview dans une variable et j'aimerai sélectionner ce no
BD: Creation d'index avec .execute ??? [ par wico2002 ]
Bonjour, Je me créer une base de données avec la commande:db.execute "CREATE TABLE xyz".....<img src=/imgs2/smile_question.gif borde
Tag WMA [ par Mosta60 ]
Grace à vous j'ai trouvé comment modifier les Tags MP3 mais pas sur les WMA. Merci d'avance
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|