Aide à la programmation VB
Aire Ayquaza - 16 avril 2011 à 15:39
Je doit refaire mon progrmme car j'ai supprimé mes sources et là bah je plante un peu
voici le code
Spoiler
Module Module1Sub Main()
 im Lettre As String = ""
 im Nombre As Integer
Randomize()
 im NombreMystere As Integer = CInt(Rnd() * 1000 + 1)
 im NombreDeCoups As Integer = 0
 im Prenom As String
Console.WriteLine("----------------Jeu du Nombre Mystère----------------"
Console.WriteLine("Avant de commencer, je vais vous demander votre prénom."
Prenom = Console.ReadLine()
Console.WriteLine("Bonjour " & Prenom & ", vous allez jouer au jeu du Nombre Mystère réalisé par Matthieu Lepers. Si vous rencontrez un problème avec ce jeu, veuillez le contacté à cette adresse : matthieulepers@hotmail.fr"
Console.WriteLine()
 o
Console.WriteLine("Entrez un nombre entre 1 et 1000"
NombreDeCoups = NombreDeCoups + 1
Lettre = Console.ReadLine()
If Nombre > NombreMystere Then
Console.Beep(1000, 200)
Console.WriteLine("Entrez un nombre plus petit"
Console.WriteLine()
ElseIf Nombre < NombreMystere Then
Console.Beep(500, 200)
Console.WriteLine("Entrez un nombre plus grand"
Console.WriteLine()
ElseIf Nombre = NombreMystere Then
Console.Beep(1000, 200)
Console.Beep(1000, 200)
Console.Beep(1000, 200)
Console.WriteLine("Bravo " & Prenom & ", vous avez trouvé le Nombre Mystère qui était " & NombreMystere & " en " & NombreDeCoups & " coups."
End If
Loop Until IsNumeric(Lettre)
Console.WriteLine("Appuyez sur une touche pour continuer..."
Console.ReadKey()
End Sub
End Module
Merci a ceux qui s'y connaissent en VB.NET
Et a ceux qui ne s'y connaissent pas merci de ne pas poster
boogyfr - 16 avril 2011 à 15:59
Déplacé vers Random.
Aire Ayquaza - 16 avril 2011 à 16:28
Merci de pas avoir prévenu
EDIT:Ne pas lock j'ai un probleme !
Code
La boucle Do ne s'arette pas quand le nombre est trouver
Module Module1
Sub Main()
Dim Rejouer As Integer = 0
Dim Lettre As String = ""
Dim Nombre As Integer
Randomize()
Dim NombreMystere As Integer = CInt(Rnd() * 1000 + 1)
Dim NombreDeCoups As Integer = 0
Dim Prenom As String
Console.WriteLine("----------------Jeu du Nombre Mystère----------------"
Console.WriteLine("Avant de commencer, je vais vous demander votre prénom."
Prenom = Console.ReadLine()
Console.WriteLine("Bonjour " & Prenom & ", vous allez jouer au jeu du Nombre Mystère réalisé par Matthieu Lepers. Si vous rencontrez un problème avec ce jeu, veuillez le contacté à cette adresse : matthieulepers@hotmail.fr"
Console.WriteLine()
Do
Do
Console.WriteLine("Entrez un nombre entre 1 et 1000"
NombreDeCoups = NombreDeCoups + 1
Lettre = Console.ReadLine()
Loop Until IsNumeric(Lettre)
Nombre = Lettre
If Nombre > NombreMystere Then
Console.Beep(1000, 200)
Console.WriteLine("Entrez un nombre plus petit"
Console.WriteLine()
End If
If Nombre < NombreMystere Then
Console.Beep(500, 200)
Console.WriteLine("Entrez un nombre plus grand"
Console.WriteLine()
End If
If Nombre = NombreMystere Then
Console.Beep(1000, 200)
Console.Beep(1000, 200)
Console.Beep(1000, 200)
Console.WriteLine("Bravo " & Prenom & ", vous avez trouvé le Nombre Mystère qui était " & NombreMystere & " en " & NombreDeCoups & " coups."
End If
Loop While IsNumeric(Lettre)
Console.WriteLine("Appuyez sur une touche pour continuer..."
Console.ReadKey()
End Sub
End Module
</details>
---
**Lynx Aenslade** - 17 avril 2011 à 19:20
Tu as testé le débug pour voir si la condition sur Lettre est bien remplie quand le joueur trouve ?
---
**pokastuce** - 17 avril 2011 à 21:43
quand on regarde le code on voit une boucle principale (logique pour le test du nombre à l'itération n) et dedans une boucle.
la deuxième boucle, osef elle sert juste à vérifier qu'on a rentré un nombre :p
la deuxième doit se terminer quand on a terminé donc ... nombre=nombremystere
et pourquoi mettre
Loop While IsNumeric(Lettre)
puisqu'à chaque fois que ce test entre en jeu c'est que Lettre est déjà un numéric (boucle imbriquée qui demande de rentrer un nombre tant qu'il n'est pas un nombre
Donc pour arrêter la boucle, tu peux faire un gros break (mais c'est hyper crade - bien que dans les langages de hauts niveaux comme bas niveaux, on peut se le permettre maintenant)
une facon propre de faire est de déclarer un booléen avant la première boucle (nom de variable : estTrouve) et de l'initialiaser à False.
lorsque le test nombre=nombremystere
en plus d'afficher youp la boum c'est trouvé, met cette variable à True
donc lors de la déclaration des variables :
Dim estTrouve As Boolean = False
puis au lieu de
Loop While IsNumeric(Lettre)
tu auras donc
Loop While estTrouve = False //edit remplacé le == par = x)
---
**Aire Ayquaza** - 18 avril 2011 à 10:26
Merci je vais tester cela
EDIT:Sa a pas fonctionné
M@T m'avais deja corriger sa et sa marché super le probleme c'est que enfaisant le netoyage de mon ordi j'ai supprimer les source ><
J'ai le programme qui fonctionne tres bien mais pas les sources j'aimerai les retrouver sans a avoir a utiliser un décompilateur (trop complexe)
Le probleme c'est que M@T est plus co depuit 5 jours
Je voulais amélioré mon jeu en ajoutant la table des scores qui seront gardé en mémoire un peu comme sa:
- Place Prenom Nombre de coups
- 1er Matthieu(Moi) 7
- 2ème Pokastuce 8
- 3ème Boogy 9
- 4ème
- 5ème
- 6ème
- 7ème
- 8ème
- 9ème
- 10ème
Et que sa s'actualise a chaque nouveau score
PS:comment on met des couleur dans une console ?
EDIT:Ah oui j'oubiler ! La boucle qui fait en sorte que la console ne demande que un nombre est importante sinon le programme plante ou donne une valeur tres incertaine a le lettre donné
---
**pokastuce** - 18 avril 2011 à 14:28
> Merci je vais tester cela
EDIT:Sa a pas fonctionné
quelle est la source avec ta mise en place de ma correction parce qu'elle marche x)
> PS:comment on met des couleur dans une console ?
dans le package Imports Win32.Kernel32.ConsoleColor
tu as SetConsoleColor(fore As Color, back As Color, Attributes (je mets toujours à Attributes.None)
utilise cette fonction avant toute sortie de chaine dans la console
fore & back sont le résultat de Or sur des couleurs primaires (si tu veux faire des couleurs laternatives :p
exemples de valeurs :
Black = 0
Blue = 16
Green = 32
Red = 64
Magenta = Blue Or Red
White = Blue Or Green Or Red
Gray = 128
LightGreen = Gray Or Green
tu peux aussi charger les couleurs avec ForeGroundColors.\{blop\} " laisse faire l'autocomplteur pour avoir le nom exact de la classe contenant les couleur et l'énumération des couleur
> EDIT:Ah oui j'oubiler ! La boucle qui fait en sorte que la console ne demande que un nombre est importante sinon le programme plante ou donne une valeur tres incertaine a le lettre donné
Ba oui quelle est importante, jamais dit le contraire :p
comme en C quand tu fais des prompt de valeurs si tu veux une valeurs sur un integer mais que stdin, un flux etc... obtiens une chaine, ca te foire toute l'entrée standard, donc y a des fonctions prévues, scanf, sscanf, fscanf, et j'en passe
---
**Aire Ayquaza** - 18 avril 2011 à 14:45
Voila le code :
<details><summary>Code</summary>Module Module1
Sub Main()
Dim estTrouve As Boolean = False
Dim Rejouer As Integer = 0
Dim Lettre As String = ""
Dim Nombre As Integer
Randomize()
Dim NombreMystere As Integer = CInt(Rnd() * 1000 + 1)
Dim NombreDeCoups As Integer = 0
Dim Prenom As String
Console.WriteLine("----------------Jeu du Nombre Mystère----------------"
Console.WriteLine("Avant de commencer, je vais vous demander votre prénom."
Prenom = Console.ReadLine()
Console.WriteLine("Bonjour " & Prenom & ", vous allez jouer au jeu du Nombre Mystère réalisé par Matthieu Lepers. Si vous rencontrez un problème avec ce jeu, veuillez le contacté à cette adresse : matthieulepers@hotmail.fr"
Console.WriteLine()
Do
Do
Console.WriteLine("Entrez un nombre entre 1 et 1000"
NombreDeCoups = NombreDeCoups + 1
Lettre = Console.ReadLine()
Loop Until IsNumeric(Lettre)
Nombre = Lettre
If Nombre > NombreMystere Then
Console.Beep(1000, 200)
Console.WriteLine("Entrez un nombre plus petit"
Console.WriteLine()
End If
If Nombre < NombreMystere Then
Console.Beep(500, 200)
Console.WriteLine("Entrez un nombre plus grand"
Console.WriteLine()
End If
If Nombre = NombreMystere Then
Console.Beep(1000, 200)
Console.Beep(1000, 200)
Console.Beep(1000, 200)
Console.WriteLine("Bravo " & Prenom & ", vous avez trouvé le Nombre Mystère qui était " & NombreMystere & " en " & NombreDeCoups & " coups."
End If
Loop While estTrouve = False
Console.WriteLine("Appuyez sur une touche pour continuer..."
Console.ReadKey()
End Sub
End Module</details>
---
**LOL LAME** - 18 avril 2011 à 14:48
Et si tu rajoutais une ligne
estTrouve = True
Après "Console.writeLine(Bravo...)" ?
LOL, LAME.
---
**Aire Ayquaza** - 20 avril 2011 à 10:57
Salut j'ai encore un problème : Comment je fait pour passé des lignes dans l'écriture du texte d'un ComboBox ?
Exemple:ComboBox
A
B
C
et pas ABC (les uns en dessous des autres)
<details><summary>Code</summary> Private Sub CB_ESPECE_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB_ESPECE.SelectedIndexChanged
If Me.CB_ESPECE.Text = "Zarbi" Then
Me.CB_FORME.Enabled = True
Me.CB_FORME.Text = "!" **//Comment je fait pour passé une ligne en sachant que Zarbi a beaucoups de formes ?**
ElseIf Me.CB_ESPECE.Text IsNot "Zarbi" Then
Me.CB_FORME.Enabled = False
End If
End Sub
en français ça donne si Zarbi est selectionné dans la combobox ESPECE alors la combobox FORME est utilisable
Sinon si ce n'est pas Zarbi qui est séléctionné dans la CB_ESPECE alors la CB_FORME n'est pas utilisable (pokémon n'ayant pas de forme)</details>
---
**pokastuce** - 20 avril 2011 à 13:43
ce que tu veux faire ce n'est pas un retour chariot mais carrément choisir le bon item correspondant à ton pokemon
tu peux utiliser la gestion des combobox.items si je me souviens en faisant un clear pour effacer (par exemple) les anciennes formes puis en faisant des cb.items.add(text) pour chaque sous forme
et enfin une fois que tu sais quel forme tu as exactement, tu dis que ton selecteditem est celui a l'indice i ou i est l'indice du cb.items*.text=la forme*
---
**Aire Ayquaza** - 20 avril 2011 à 14:18
Peut tu me donné un exemple car la je seche un peu :(
PS:J'ai créé une ImageListe, j'y est mi des images dedant et je veut mettre ces images dans un ComboBox comment puis-je faire ?
---
**lVl477l-l13Ll** - 21 avril 2011 à 21:31
Images dans une ComboBox... ? :hum:
Tu vas sans doute devoir soit gérer quelques événements qui se produisent lors de l'affichage des Items, ou bien créer un nouveau contrôle qui hérite de ComboBox et qui "Override" l'événement OnDraw (ça a l'avantage d'être réutilisable facilement).
C'est pas tellement difficile mais vu le code de ton "Plus ou moins", je ne suis pas sûr que tu raisonnes vraiment en .NET.
---
**Aire Ayquaza** - 22 avril 2011 à 10:51
Quelqu'un peu m'expliqué comment je peut faire ceci (en jaune)
<details><summary>Screen de PokéGen, Générateur de code, boutons d'activation a coché dans un Combobox (?)</summary></details>
Je voudrai savoir comment il est possible de coché les objet de cette CB
---
**pokastuce** - 22 avril 2011 à 12:09
un exemple de tuto sur l'utilisation de checkbox item dans un combobox en c#
http://www.codeproject.com/KB/combobox/extending_combobox.aspx
en VB.Net c'est la même chose
---
**Aire Ayquaza** - 22 avril 2011 à 12:27
J'arrive pas je marque sa :
Me.CheckBox.Items = CheckBox1
Erreur Item est readOnly
Ya pas AddItem
EDIT:Quand j'ecrit :
Me.CheckBox.Item.Add = CheckBox1 il me fait une erreur
EDIT2:Quand je marque sa "Me.ComboBox1.Items.Add(CheckBox1)" et que je lance l'execusion dans le combobox il est marqué "System.Windows.Forms.CheckBox, CheckState: 0"

