Demineur sous excel

Soyez le premier à donner votre avis sur cette source.

Vue 9 317 fois - Téléchargée 1 596 fois

Description

C'est une autre version du jeu Démineur sous excel. J'ai mis de petites fonctions pour gérer et afficher le temps d'exécution de la partie. Le point clé du programme est la fonction récursive "ZeroSelected" qui est appelée quand l'utilisateur clique sur une case.

Source / Exemple :


'Dans le zip

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jjDai
Messages postés
291
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
13 mars 2015
-
Bonjour
Quelques remarques en vrac
------------------------------------------------------------------
Masquer les autre feuilles serait un +
feuil2.Visible=xlSheetVeryHidden
feuil3.Visible=xlSheetVeryHidden

------------------------------------------------------------------
renommer "feuil2" dans l'interface en "shJeu" par exemple permet
d'utiliser directement shJeu comme ojet feuille
shjeu.cells(1.1)= 99
c'est plus pratique que
Worksheets("JEU").cells(1.1)= 99

Il est possible de saisir des caractères dans les cellules, et surtout dans les cellules externes à la zone;
L'utilisation de la protection des cellules pourrait être mise à profit.
voir la restriction de la zone d'utilisation et la suppression des barres de défilement.

------------------------------------------------------------------
Pour effacer une zone il y a plus efficace qu'une double boucle:
Worksheets("MINES").Range("A1:Z50").ClearContents
ou
feuil2.Range("A1:Z50").ClearContents

------------------------------------------------------------------
quand un autre classeur est ouvert, impossible de basculer dessus.

--------------------------------------------------------------------

Pour le timer, une boucle sans fin n'est pas une bonne idée
l"utilisation de onTime est plus approprié
exemple

Sub testTimer()
Static h As Long

Application.OnTime Now + TimeValue("00:00:01"), "testTimer"
h = h + 1
Debug.Print "action-" & h
End Sub

L'exécution de cette fonction affichera le compteur h dans la fenêtre d'exécution toutes les seconde
Ça évite l'utilisation de doevents, et il n'y a pas de calcul de temps a faire.

ce qui pourrait être adapté comme ça pour le miner

Sub DemarrerTemps_start()
dateDebut = Now
Application.OnTime Now + TimeValue("00:00:01"), "DemarrerTemps"
TimerEnabled = True
End Sub

Sub DemarrerTemps()

Tps_Str = Format(Now - dateDebut, "mm:ss")
Worksheets("JEU").Shapes(4).TextFrame.Characters.Text = Tps_Str
End If
If TimerEnabled Then
Application.OnTime Now + TimeValue("00:00:01"), "DemarrerTemps"
End If
End Sub

--------------------------------------------------------------------
L'ajout de "Option Explicit" au début de chaque module permet de s'assurer que toutes les variable sont déclarées

--------------------------------------------------------------------
Y a pas mal de petites choses à améliorer, mais c'est un bon début
JJDAI
cs_ShayW
Messages postés
3248
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
30 août 2019
46 -
Salut
ajoute une petite aide
comment je marque une mine ?
Si je marche sur une mine le jeu s'arretent alors dévoile toutes les mines
bonne prog
medjahedScript
Messages postés
14
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
7 mars 2011
-
Bon programmation
rtoukkys
Messages postés
11
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
23 mai 2011
-
JJDAI> Merci pour toutes tes remarques. Dès que j'aurai le temps, je ferai les rectification et l'amélioration du code.
SHAYW> Marquer la mine... J'y ai pensé aussi mais pas j'ai pas pu trouver comment gérer le Clic-droit de la souris. Pour montrer toutes les mines, ce n'est pas difficile à intégrer dans le code, ... dans la prochaine mise à jour peut-être. Sinon, je te remercie aussi!
medjahedScript> Merci pour le compliment
rtoukkys
Messages postés
11
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
23 mai 2011
-
JJDAI>Mmmmh, j'ai pas su qu'il y a l'évènement OnTime avec l'objet Application... C'est plus pratique, merci!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.