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

  FORUM HardWare.fr
  Programmation

  Démineur en basic

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Démineur en basic

n°34251
p87
Posté le 24-05-2001 à 18:55:26  profilanswer
 

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

mood
Publicité
Posté le 24-05-2001 à 18:55:26  profilanswer
 

n°34255
tgrx
My heart is pumping for love
Posté le 24-05-2001 à 19:01:00  profilanswer
 

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]

n°34258
p87
Posté le 24-05-2001 à 19:03:10  profilanswer
 

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.

n°34264
tgrx
My heart is pumping for love
Posté le 24-05-2001 à 19:08:14  profilanswer
 

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

n°34267
p87
Posté le 24-05-2001 à 19:17:16  profilanswer
 

J'en suis pas encore la mais si t'as une petite idée...

n°34268
tgrx
My heart is pumping for love
Posté le 24-05-2001 à 19:21:35  profilanswer
 

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...

n°34273
p87
Posté le 24-05-2001 à 19:34:37  profilanswer
 

Merci c'est sympa

n°34309
darkoli
Le Petit Dinosaure Bleu
Posté le 24-05-2001 à 21:22:39  profilanswer
 

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

n°34545
p87
Posté le 26-05-2001 à 19:03:01  profilanswer
 

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 ?

n°34647
p87
Posté le 27-05-2001 à 21:55:59  profilanswer
 

???

mood
Publicité
Posté le 27-05-2001 à 21:55:59  profilanswer
 

n°34729
trictrac
Posté le 28-05-2001 à 11:19:30  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Démineur en basic

 

Sujets relatifs
[VB6] rafraichir une fenetre iexplore a partir de visual basic !!![Visual Basic] probleme avec DriveListBox
tres simpple en visual basicAcces 2000 et Visual Basic
[visual basic] encore un truc tout con que je trouve pas[visual basic] a priori tres simple....sof pour moi!
C'est facile de passer du VBA au Visual Basic ?VISUAL BASIC 6 ??????
Problème avec Visual Basic 6Visual Basic
Plus de sujets relatifs à : Démineur en basic


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR