Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2769 connectés 

 


Dernière réponse
Sujet : Démineur en basic
trictrac tu es sous VB, tu aurais plutot du faire un tablo de bouton, parceque gerer les evenements de 64 boutons, je te dis pas le bordel... ou la gestion du click de souris sur une image ou un otre composant..
mais bon, je n'ai pas bossée la kestion

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
trictrac tu es sous VB, tu aurais plutot du faire un tablo de bouton, parceque gerer les evenements de 64 boutons, je te dis pas le bordel... ou la gestion du click de souris sur une image ou un otre composant..
mais bon, je n'ai pas bossée la kestion
p87 ???
p87

tgrx a écrit a écrit :

Tu as ton tableau :
 
tab[8][8]
 
ben si tu es a la case (i,j), tu regardes les cases (i-1,j),(i-1,j-1),(i-1,j+1),(i,j+1),(i,j-1),(i+1,j+1),(i+1,j-1),(i+1,j), et si tu trouves une mine dans chacune de ces cases tu ajoutes 1.
 
Attention aux debordements quand tu fais i-1,i+1,j-1,j+1, i et j doivent rester dans l'intervalle [0,7]




J'ai fait ca :
Private Sub Case54_Click()
If bombes54 = 1 Then
    MsgBox "Dommage T'as perdu"
Else
End If
Dim v54 As Integer
v54 = 0
If bombes61 = 1 Then
    v54 = v54 + 1
Else
End If
If bombes47 = 1 Then
    v54 = v54 + 1
Else
End If
If bombes53 = 1 Then
    v54 = v54 + 1
Else
End If
Case54.Caption = v54
End Sub
 
Case 54 est la case en haut à gauche
bombes54 est la variable qui définit s'il y a une mine ou pas
Est-ce que c'est bon car ca peut paraitre un peu con mais je sais pas augmenter une variable de 1 ?

darkoli moi pour que les cases se decouvrent je n'ai pas utilisé d'algos récursifs mais plutot un tableau de 64 dans ton cas. avec un nombre qui indique la position courante et un autre nombre qui indique la derniere case.  
 
exemple :
 t = 15,0,0,0,0,0,...
 p = 0  
 f = 0
 
 pour une iteration :
  1° on decouvre la case en position p : t[p]
     => on invremente p : p=p+1
  2° si elle a zero mines autour, il faut decouvrir les cases autour : on les mets dans le tableau
     => p-9
     => p-8
     => p-7
     => p-1
     => p+1
     => p+7
     => p+8
     => p+9
   a chaque fois on augmente f de 1 : f=f+1, mais l faut verifier que la case exise bien (bordure)
 
  si f<=p : fin      
 
en gros c'est ca et ca evite de faire des iterations.
 
pour le probleme des bordures, tu peux utiliser un tableau plus grand que la taille de jeu. Moi j'ai fait comme ca.

Code :
  1. * * * * * * * * * *
  2. * 0 0 0 0 0 0 0 1 *
  3. * 0 1 0 0 0 0 0 0 *
  4. * 0 0 0 0 0 1 0 0 *
  5. * 0 0 0 0 0 0 0 0 *
  6. * 0 1 1 0 0 1 0 0 *
  7. * 0 0 0 0 0 0 0 1 *
  8. * 0 0 0 1 1 0 0 0 *
  9. * 0 0 0 0 0 0 0 1 *
  10. * * * * * * * * * *
  11. tableau avec le compte des mines
  12. * * * * * * * * * *
  13. * 1 1 1 0 0 0 1 0 *
  14. * 1 0 1 0 1 1 2 1 *
  15. * 1 1 1 0 1 0 1 0 *
  16. * 1 2 2 1 1 2 1 0 *
  17. * 1 1 1 1 1 0 2 1 *
  18. * 1 2 3 3 3 2 1 0 *
  19. * 0 0 1 1 1 1 2 2 *
  20. * 0 0 1 2 2 1 1 0 *
  21. * * * * * * * * * *


à la place des * je mets des -1 ou 0 ca depend

p87 Merci c'est sympa
tgrx C'est un truc du style :
 
fonction decouvrir_cases_0 (i,j)
  si nb_de_mines(case(i,j)) different de 0
    retour
 
  decouvrir_cases_0 (i-1,j)
  ...
  a repeter pour les 8 cases que j'ai cite au dessus
  (en faisant attention a ne pas deborder du tableau)
 
finfonction
 
Mais le probleme c'est que tous les basics n'acceptent pas les fonctions recursives (la fonction s'appelle elle-meme).
Sous VB je pense que ca passe, mais pour d'autre, je suis pas sur...
p87 J'en suis pas encore la mais si t'as une petite idée...
tgrx Ah mon avis, la plus grosse difficulte, c'est de faire se decouvrir les cases quand tu cliques sur une case '0', sans mines autour. Faut faire un algo recursif, et ca passe pas forcement avec tous les basics
p87 Merci ça m'aide bien comme je suis débutant et que j'y connais pas grand chose. je solliciterai peut-être encore votre aide pour ce démineur.
tgrx Tu as ton tableau :
 
tab[8][8]
 
ben si tu es a la case (i,j), tu regardes les cases (i-1,j),(i-1,j-1),(i-1,j+1),(i,j+1),(i,j-1),(i+1,j+1),(i+1,j-1),(i+1,j), et si tu trouves une mine dans chacune de ces cases tu ajoutes 1.
 
Attention aux debordements quand tu fais i-1,i+1,j-1,j+1, i et j doivent rester dans l'intervalle [0,7]
p87 Comment puis-je faire pour qu'il indique le nombre de mines dans les cases adjacentes ?
Merci.
P.S : Mon démineur fait 8 case / 8 il y a donc 64 boutons de commande et 64 variables dont 10 sont égales à 1 (mines) tirées aléatoirement

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)