Accueil > Forum > > > > démineur 5*5
démineur 5*5
dimanche 4 juin 2006 à 15:30:57 |
démineur 5*5

wilmore
|
Bonjour à tous,
Je suis débutant en programmation vb6. J'aimerais faire un démineur 5*5 cases, avec 5 mines au total. Mon 1er pb : je ne sais pas comment choisir 5 cases aléatoirement (en utilisant randomize)sans tomber 2 fois sur la même. J'ai testé : Dim NombreMines As Integer, CasesMines As Integer NombreMines = 5 CasesMines = 25 Dim n As Integer, i As Integer, j As Integer For n = 0 To NombreMines - 1 Randomize i = Int((CasesMines - n) * Rnd) cmdMines(CasesMines - n - 1) = cmdMines(i) cmdMines(i).Caption = " MINE "
Au final, j'aimerais avoir 5 "cmdMines(i).Caption = " MINE "" choisis au hasard.
Merci pour votre aide! 
|
|
dimanche 4 juin 2006 à 21:04:47 |
Re : démineur 5*5

AnteManoclis
|
Réponse acceptée !
Salut,
Essais de le faire recommencer l'affectation de i si le test suivant est positif:
For n = 0 To NombreMines - 1 Etiquette: Randomize i = Int((CasesMines - n) * Rnd) If cmdMines(i).Caption = "MINE" Then Goto Etiquette
Tchô AnteManoclis
|
|
lundi 5 juin 2006 à 17:47:33 |
Re : démineur 5*5

wilmore
|
Salut, Je vais essayer. Merci !
|
|
samedi 10 juin 2006 à 19:10:51 |
Re : démineur 5*5

wilmore
|
Salut,  J'ai finalement réussi à initialiser mon aire de jeu - merci. Quand on clique sur une "Mine" je voudrai afficher le lbl " Vous avez perdu ". Mais, quand on clique sur n'importe quelle case, le lbl s'affiche quand même. Sinon, j'essaie de coder le décompte des mines...
J'ai essayé : Option Explicit Dim NombreMines As Integer, CasesMines As Integer Dim i As Integer Private Sub cmdMines_Click(Index As Integer) If cmdMines(i).Caption = "MINE" Then lblResultat.Visible = True lblResultat.Caption = " Vous avez perdu " End Sub Private Sub Form_Load() alea End Sub
Sub alea() Dim n As Integer NombreMines = 5 CasesMines = 25 For n = 0 To NombreMines - 1 Etiquette: Randomize i = Int(25 * Rnd) If cmdMines(i).Caption = "MINE" Then GoTo Etiquette cmdMines(i).Caption = "MINE" Me.Visible = True Debug.Print i, n Next End Sub
Merci de votre aide. A +
|
|
dimanche 11 juin 2006 à 12:14:53 |
Re : démineur 5*5

AnteManoclis
|
Salut, Dans ton code: Private Sub cmdMines_Click(Index As Integer) If cmdMines(i).Caption = "MINE" Then lblResultat.Visible = True lblResultat.Caption = " Vous avez perdu " End Sub as-tu un End If quelque part ? Je suis surpris que ça puisse marcher comme ça, mais si c'est le cas, c'est peut-être ce qu'il manque... Tchô AnteManoclis
|
|
dimanche 11 juin 2006 à 16:19:49 |
Re : démineur 5*5

wilmore
|
Re - AnteManoclis!
Effecivement, il y avait un End If que j'ai maladroitement supprimé quand j'ai fait copier -coller... Pas de changement, le lbl " Vous avez perdu " s'affiche toujours.
Option Explicit Dim NombreMines As Integer, CasesMines As Integer Dim i As Integer Private Sub cmdMines_Click(Index As Integer) If cmdMines(i).Caption = "MINE" Then lblResultat.Visible = True lblResultat.Caption = " Vous avez perdu " Else lblResultat.Caption = " Vous avez gagné " End If End Sub Private Sub Form_Load() alea End Sub Sub alea() Dim n As Integer NombreMines = 5 CasesMines = 25 For n = 0 To NombreMines - 1 Etiquette: Randomize i = Int(25 * Rnd) If cmdMines(i).Caption = "MINE" Then GoTo Etiquette cmdMines(i).Caption = "MINE" Me.Visible = True Debug.Print i, n Next End Sub
A + !
|
|
dimanche 11 juin 2006 à 18:48:41 |
Re : démineur 5*5

AnteManoclis
|
Réponse acceptée !
Salut, a mon avis, tu devrais essayer un truc comme ça
If cmdMines(Index).Caption = "MINE" Then lblResultat.Visible = True lblResultat.Caption = " Vous avez perdu " Else lblResultat.Caption = " Vous avez gagné " End If End Sub
Tchô AnteManoclis
|
|
dimanche 11 juin 2006 à 19:05:47 |
Re : démineur 5*5

wilmore
|
Merci AnteManoclis  Ca marche maintenant :
Private Sub cmdMines_Click(Index As Integer) If cmdMines(Index).Caption = "MINE" Then lblResultat.Visible = True lblResultat.Caption = " Vous avez perdu " Else lblResultat.Visible = True lblResultat.Caption = " Pas de Mine " End If End Sub
A +
|
|
dimanche 11 juin 2006 à 22:22:35 |
Re : démineur 5*5

wilmore
|
Salut !
Pour le décompte des mines, ç'est bien plus délicat... En exécutant le code suivant, je n'arrive pas à détecter les captions "MINE" à gauche de la case "non minée" sélectionnez. J'ai tenté : 'déclarations Dim Area(4, 4) As Integer Dim X As Integer, Y As Integer Dim C As Integer Dim Index As Integer ............................................................................ Private Sub cmdMines_Click(Index As Integer) If cmdMines(Index).Caption = "MINE" Then lblResultat.Visible = True lblResultat.Caption = " Vous avez perdu " Else lblResultat.Visible = True 'Il n'y a pas de mine C = CompteMines(X, Y) 'appelle la fonction CompteMines End If End Sub ............................................................................. Private Function CompteMines(X As Integer, Y As Integer) As Integer 'compte le nombre de mines à gauche CompteMines = 0 If Mine(X - 1, Y - 1) Then CompteMines = CompteMines + 1 'Debug.Print CompteMines End If If Mine(X - 1, Y) Then CompteMines = CompteMines + 1 'Debug.Print CompteMines End If If Mine(X + 1, Y) Then CompteMines = CompteMines + 1 Debug.Print CompteMines End If End Function ............................................................................... Function Mine(X As Integer, Y As Integer) As Boolean 'Fonction qui indique s'il y a une mine sur la case (X,Y) If cmdMines(Index).Caption = "MINE" Then Mine = True End If End Function ..................................................................................
Toute suggestion est bienvenue Merci d'avance  A bientôt,
|
|
mardi 13 juin 2006 à 19:02:26 |
Re : démineur 5*5

AnteManoclis
|
Salut,
Private Function CompteMines(X As Integer, Y As Integer) As Integer 'compte le nombre de mines à gauche CompteMines = 0 If Mine(X - 1, Y - 1) Then CompteMines = CompteMines + 1 'Debug.Print CompteMines End If If Mine(X - 1, Y) Then CompteMines = CompteMines + 1 'Debug.Print CompteMines End If If Mine(X - 1, Y + 1) Then CompteMines = CompteMines + 1 Debug.Print CompteMines End If End Function
Ca serait pas mieux ?
Tchô AnteManoclis
|
|
Cette discussion est classée dans : integer, démineur, cmdmines, nombremines, casesmines
Répondre à ce message
Sujets en rapport avec ce message
Bouton qui colle [ par Amonbofis ]
Voici le contraire de ce que maw demande:'définir un bouton, appellons "Command3" et on code:'ps: le mien fait 540 * 1200Private Sub Command3_MouseMov
Accès à une DLL [ par olivierG ]
Bonjour, Débutant en programmation et notamment en VB, je souhaiterai savoir comment on déclare un fichier DLL dans visual basic 5. En effet, si je dé
GetLocalTime... [ par Sefo ]
Dans un but informatif j'utilise l'API suivante pour afficher la date et l'heure(tout en sachant qu'il existe des fonctions bcp plus simples)'--------
SendMessage - W2000 [ par Christophe ]
Bonjour,Sous Windows 2000, est-ce la même déclaration ? :Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _ (ByVal hwnd As Intege
Sauter une ligne [ par jejelou ]
J'ai une zone de Texte Multiline avec une scrollbars> Je souhaiterai affecter à la touche Entrée le fait que l'on saute une > ligne : ca fait ca> > P
Identifier à quel type une variable appartient [Help me] [ par vbtom ]
Bonjour, Comment puis-je savoir à quel type une variable appartient? 'J'ai ça dans un modulePublic Type Document BackGroundColor As ColorConstant
pb dans les objets field [ par nicolas ]
je lis ds les msdn que les valeurs associés au type des enregistrements sont :Constant Value Description adVarWChar 202 Null-terminated Unicode charac
HELP! Copie complete vers un fichier texte [ par Spard ]
Bonjour, Je dois copier le contenu d'un datagrid vers un .txt pour pouvoir ensuite l'utiliser dans un tableau excel : voici le code que j'utilise : Pr
bleme de calcul [ par Laulaut ]
j'ai un gros probleme de calcul si quelqu'un peut m'aide urgence ce serais coolvoila j'ai 3 boite de text et je fais un chiffre dans la premier et un
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|