Démineur utilisant une tdrawgrid et avec lequel on peut tricher

Description

On peut voir le fonctionnement du jeu en toute transparence, si on le désire bien sûr.
Une question sur le forum concernant l'initialisation d'un tableau bidimensionnel et le choix aléatoire d'un certain nombre de cases de ce tableau m'a entraîné vers la réalisation de ce démineur.
Comme je voulais faire simple (c'est raté), j'ai choisi d'utiliser une DrawGrid.
De fil en aiguille, mon projet s'est un peu alourdi.
Il faut dire que j'étais tiraillé entre le désir de faire simple et celui de cloner le WinMine de Microsoft, bien que l'utilisation de la DrawGrid s'y prête mal.
Avant de poster, j'ai fait une recherche sur le site, et j'ai trouvé 6 jeux de démineurs ou apparentés. J'en ai ressenti une grande frustration, mais plutôt que de me défenestrer depuis le rez-de-chaussée de chez moi (risquant tout au plus une entorse), je me suis dit que l'approche différente de mon démineur méritait peut-être que je le poste.
Voici à mon avis ce qui fait son originalité :
- le fait de voir se dérouler le jeu en toute transparence, très intéressant pour en étudier la logique,
- la démonstration d'utilisation d'un TDrawGrid dans laquelle on peut utiliser les propriétés du Canvas pour écrire du texte ou pour dessiner dans chaque cellule.
Je me suis un peu cassé la tête sur la fonction récursive qui balaye le jeu pour dégager les cases, et sur ce coup là, j'ai certainement réinventé la roue.
Enfin, tout fonctionne, et j'ai passé beaucoup plus de temps sur le débogage de l'interface que sur le code relatif au fonctionnement du jeu, et ça je ne m'y attendais pas.
A noter les fonctions d'enregistrement des scores par niveau dans un fichier de type ini, plus d'autres informations (niveau, position de la fiche avant fermeture du jeu).
J'ajouterai que j'ai très abondament commenté mon code, ce qui pourrait presque déboucher sur un didactitiel qui s'intitulerait : "comment créer pas à pas une petite application de jeu fonctionnelle et complète". En fait pour être complet, il aurait fallu rajouter un fichier d'aide.
J'ai découvert dans les commentaires des sources de démineur du site qu'il existait la possibilité d'appuyer simultanément les deux touches de la souris pour dégager plus rapidement une zone dont on a défini avec justesse l'emplacement des mines avec des drapeaux. Comme je ne connaissais pas cette possibilité dans le jeu original, je n'ai pas développé cette option.
Voilà, j'aurais pu incorporer les sons dans un fichier .res, mais ça aurait compliqué le code (déjà que...). J'avais également envisagé de charger l'image de la DrawGrid depuis une ImageList, mais vu la lenteur du processus j'ai abandonné l'idée.
Je me réserve de toute manière la possibilité d'améliorer mon Mine Clone, mais là je commence à l'avoir assez vu, je sature.
N'hésitez pas à l'essayer, il est pleinement fonctionnel.

PRECISIONS CONCERNANT LES CASES A COCHER :

Ca ne tombe pas forcément sous le sens, donc une petite explication au sujet des différentes options :

- "voir indices" signifie voir (ou dissimuler) les chiffres indiquant combien de mines touchent la cellule,
- "voir mines" signifie montrer (ou cacher) les mines,
- "indications sous mines" montre (ou cache) les chiffres indicatifs qui se trouvent sous la mine (pas très utile),
- "tricher" permet d'enlever tous les caches qui dissimulent la grille et de voir ce qu'il y a dessous, donc.

Donc, premier impératif, il faut que la checkbox "tricher" soit cochée, pour pouvoir visualiser une action sur les autres checkboxes.
Si elle n'est pas cochée, le jeu reprend son aspect normal.

Après, il suffit de jouer avec les checkboxes pour voir l'effet produit.

A l'exception notable de "voir indications sous mines", dont on ne pourra juger l'effet que si l'option "voir mines" est décochée, puisque les mines dissimulent le chiffre qui se trouve dessous.

Le mieux c'est d'essayer pendant le jeu, on comprend vite la logique.

Source / Exemple :


Dans le zip.

Conclusion :


Compilable à partir de Delphi4

Codes Sources

A voir également

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.