begin process at 2012 02 15 05:01:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

démineur 5*5


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

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

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

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