DÉMINEUR

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 5 août 2007 à 08:38
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008 - 12 janv. 2008 à 14:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43662-demineur

dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
12 janv. 2008 à 14:24
Tiens maintenant que j'y pense, faudrait aussi revoir la visibilité des attributs de certaine class (privé/public) parce que pour MainWIndow par exemple c'est un peu n'importe quoi je trouve.
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
12 janv. 2008 à 14:22
Pour éclater la classe MainWindow, c'est discutable. Je suis pas sûr que ce soit réellement justifiable. Pour les commentaires, j'aurais pu faire une javadoc ça aurait été encore mieux.

En tout cas merci pour ton commentaire.
Mausinator Messages postés 2 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
12 janv. 2008 à 12:28
Une remarque après avoir modifié ce code :
la classe principale était effectivement bien chargée...
J'ai pu diviser le MainWindows en au moins 4 classes différentes.

Je maintiens mon compliment sur les commentaires qui m'ont bien facilité la tâche.
Mausinator Messages postés 2 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
20 déc. 2007 à 18:39
>Je crois qu'il se produit quelques erreurs lorsque l'utilisateur ne saisit pas
>des chiffres dans le dialogue de personnalisation du type partie. Ce serait donc >une chose à améliorer.
>Et si on souhaite vraiment s'approcher du classique démineur de Windows,
>on pourra souhaiter ajouter les compteurs de mine et de temps sur l'affichage.

Super bien documenté comme programme et donc facile à reprendre et modifier !
Chapeau !
Même si les classes sont longues, c'est un mal nécessaire.
J'ai vu bien des programmes ici non commentés ce qui n'est pas vraiment très pratique pour une compréhension rapide =/

Moi je dis bravo !
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
21 oct. 2007 à 19:31
Il me semble avoir déjà dit qu'il ne s'agissait pas de la copie conforme du démineur de Windows. Et j'ai conclu la dessus :
> Et si on souhaite vraiment s'approcher du classique démineur de Windows,
> on pourra souhaiter ajouter les compteurs de mine et de temps sur l'affichage

Mais merci pour ton commentaire.
IMENBA Messages postés 2 Date d'inscription dimanche 29 juillet 2007 Statut Membre Dernière intervention 5 août 2007
20 oct. 2007 à 21:41
SANS DOUTE C'EST UNE BONNE SOURCE .
MAIS ELLE SERA MIEU SI T AS AJOUTE UNE HORLOGE .
EN TOUT CAS T ES GENIAL,BONNE CONTUNIATION.
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
7 août 2007 à 15:06
;o) pas vraiment ;o) crédible ;o) comme idée car de toute facon c est un jeu lié à la chance... ;o) attendu qu au début de toute facon les premiers click doivent etre fait au hazard ;o)... de plus de la capacité de décider sur les dernier coup depende reelement les score les meilleurs ;o) ... cela fait partie du jeu ... enfin ;o) aprés c est de la philo ... ;o)

Les package sont tres utile à l organisation de tes class il existe plusieurs facon de les nommer et de les organiser le plus simple etant de se calquer sur les outils que tu utilise déja ;o) comme le java lui meme ou eclipse apr example ;o) ...
évidement pour 6 ou 7 class cela peu parraitre superflu ;o) mais dans un projet ;o) il n est pas rare d avoir plusieurs centaines de class à gerrer ;o)...

je ne me rapelle pas avoir vu l equivalent en C++ mais à l époque je struturai mes sources dans plusieurs répertoire qd meme ;o) ...

GL et bonne prog...
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
7 août 2007 à 10:57
J'ai lut quelque part que certaines versions du démineur proposent également de résoudre automatiquement les cas solvable uniquement par chances. C'est certainement pas simple à détecter automatiquement mais si ya des sources pour ces versions ça peut être intéressant de voir ce que ça donne niveau algo.
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
7 août 2007 à 10:51
Le cheat code pour le demineur de windows est en effet rigolo, mais je ne pense pas qu'on puisse vraiment faire un bon temps en l'utilisant :o)

Cependant, ca me rappelle une idee que j'ai eu sur le demineur, mais que j'ai laisse tombe (parce que ca doit pas etre facile :o) ):
Le truc enervant, surtout avec des grosses maps est que des fois, il faut y aller au pif (par exemple qunad il reste 4 cases dans un coin).
Mon idee etait de bannir l'effet chance. Je veux dire que quand il est impossible de savoir si une case a une bombe ou pas, il faudrait qu'on ne perde jamais, quite a deplacer dynamiquement la bombe quand on clique dessus (si la bombe a une chance sur deux d'etre sur deux cases, si on clique sur l'une, la bombe est automatiquement placee sur la deuxieme).
Evidemment, c'est plutot galere a implementer, mais on peut rever :o)

La seule chose que j'ai fait qui s'en rapproche jusque la est d'empecher de perdre sur le premier coup (en fait si ca explose au premier clic, je relance le calcul de la position des bombes jusqu'a ce que la case soit vide, et je traite le clic. comme ca le joueur de voit rien).

A+,
Eric
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
7 août 2007 à 10:21
>Pour ce qui est des class !! et oui c est évident les class locale devrai etre externes seul la
>class timer et la class listener ont un reel interret à se trouver en local. Pour ce qui est de la
>communication entre les class!! Es ce vraiment un probleme!! Le java est orienté Object il faut
>donc ;o) faire de la POO .... sinon ben faut rester au C ..

Bon et bien voilà, finalement j'ai éclaté ma source en différentes class suivant tes conseils.
En passant, je n'ai jamais dit que la communication entre class était un problème, j'ai simplement dit que je n'avais pas le courage de le faire. Je n'en suis pas à mes première heures en POO (dans d'autres langages) et ce genre de choses n'est pas un problème.

>;o) pour ce qui est du jeu lui meme bien que la source soit propre il manque un peu de finition
>;o) je trouve le feedback souris plus que moyen (ma reference etant l original sous windows)
>plusieurs option comme le click droit et gauche sont simpatique...

La je t'arrête tout de suite, d'une part j'ai clairement indiqué que mon projet était inspirée du démineur de windows mais je n'ai jamais dit qu'il en était la copie conforme. En ce sens, je suis bien libre d'y intégrer les fonctionnalités de mon choix. D'autre part, ceci est une source et c'est donc modifiable à souhait. Si quelqu'un y voit quelque chose qui manque, il peut très bien l'y ajouter.

>Prend tout de mem l habitude de faire plusieurs fichier voir meme package meme pour quelque ligne
>de code surtout si tu continu en JAVA;o) ... C est une discipline toujour payante à la longue...

J'en prend note.
Ceci-dit, j'avoue ne pas encore avoir bien saisit à quoi servait un package. Mais je vais relire mes doc. Trouve-t-on un équivalent du package en C++? Ca m'aidrait à comprendre ce que c'est...
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
7 août 2007 à 07:59
Le code est richement commenté ;o) et c est trés bien (il n y en a jamais trop) ceci dit dommage qu il n y ai pas de javadoc.

Pour ce qui est des class !! et oui c est évident les class locale devrai etre externes seul la class timer et la class listener ont un reel interret à se trouver en local. Pour ce qui est de la communication entre les class!! Es ce vraiment un probleme!! Le java est orienté Object il faut donc ;o) faire de la POO .... sinon ben faut rester au C ...

;o) pour ce qui est du jeu lui meme bien que la source soit propre il manque un peu de finition ;o) je trouve le feedback souris plus que moyen (ma reference etant l original sous windows) plusieurs option comme le click droit et gauche sont simpatique...
Enfin! le projet etant fini à quoi bon!! ;o)

Prend tout de mem l habitude de faire plusieurs fichier voir meme package meme pour quelque ligne de code surtout si tu continu en JAVA;o) ... C est une discipline toujour payante à la longue...

Trés bonne idée de source
sankasssss Messages postés 12 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 28 janvier 2008
6 août 2007 à 21:20
et il manque une lettre dans le code xyzzyx (ca fait longtemps)
mais bon on s'en fous en faite...
sankasssss Messages postés 12 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 28 janvier 2008
6 août 2007 à 21:11
excuse c'est le coin gauche ^^
dur we... bye
sankasssss Messages postés 12 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 28 janvier 2008
6 août 2007 à 21:10
Oui c'est rien de bien exeptionnelle, mais ca m'a tjs étonner pour un jeux qui ce trouve dans windows...
il suffit de rentrer xyzzy enter puis maj et un point blanc apparaitra dans le coin supérieur droit de l'écran (faut voir le papier paint du bureau pour cela)

aller bonne fin de journée et thanks pour cette source compréhensible
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
6 août 2007 à 20:48
Ouai il existe en effet un code, faisant apparaître un pixel en haut à gauche de l'écran. Noir ou blanc en fonction du contenu de la case survollée. Mais j'ai jamais réussi à le faire fonctionner.
sankasssss Messages postés 12 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 28 janvier 2008
6 août 2007 à 18:02
lol oui c'est possible, chacun ses méthodes ^^
mes sur de grand jeux je trouve la technique des drapeaux plus visuelle et avec moins de droit a l'erreur une fois placé...
Mais bon ce n'est pas sur la technique que nous en avons hein ;)
juste sur le fait d'imité notre bon vieux démineur, jeux qui restera culte.
Tien au fait, savez-vous qu'il y a un code pour tricher dans le démineur de windows lol
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
6 août 2007 à 17:52
>Ca fait un peux plus rapide que de cliquer sur chacune des case...

J'utilisais ca avant (tu peux meme cliquer sur le bouton du milieu pour le meme resultat ce qui est encore plus rapide ;o) ), mais comme indique plus haut, c'est extremement lent compare a l'option qui consiste a ne pas mettre de drapeaux du tout :o)

Eric
sankasssss Messages postés 12 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 28 janvier 2008
6 août 2007 à 17:50
P.S. : c'est sur le chiffre qu'il faut cliquer avec les 2 bouton ^^
sankasssss Messages postés 12 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 28 janvier 2008
6 août 2007 à 17:49
Prenon un exemple tu as le chiffre 2 sur une casse,
tu as 2 drapeau à l'entour de cette case,
tu clique avec le bouton gauche et droit de la souris en meme temp et si les drapeau étais bien placer ca decouvre toute les cases avoisinante.
Ca fait un peux plus rapide que de cliquer sur chacune des case...
bonne continuation ;)
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
6 août 2007 à 17:44
Merci.

>j'ai bien aimer en faire une partie meme si la petite fonction du clique sur les 2 bouton, du jeux
>d'origine...

Les deux boutons? Lesquel?
sankasssss Messages postés 12 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 28 janvier 2008
6 août 2007 à 17:18
très bonne source,
j'ai bien aimer tout les commentaires qui m'on permit de faire une tres bonne révision en vue de mes future examen de repeche :'(

j'ai bien aimer en faire une partie meme si la petite fonction du clique sur les 2 bouton, du jeux d'origine, m'on un peux manquée pour pouvoir atteindre mes performance habituelle ^^

bonne continuation
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
6 août 2007 à 15:13
>Les flag c'est optionnel à mon gout.

Exactement ! :o)

>Sinon amusante ta version en JS.

Merci :o) mais j'ai fait ca en 2000, et c'etait vraiment mon premier prog en Javascript :o)

>Mais le support du second bouton ça me parait un peu hasardeux...
>Sous IE ca peu passer mais sous FF, par exemple, il me semble que tu ne peux pas lui
>interdire d'afficher le menu contextuel.

C'est possible... Et en plus, les differents navigateurs ne renvoient pas les memes valeurs pour le code du bouton droit...
C'est ce genre de problemes qui m'ont arrete, en plus du fait que je deteste quand un webmaster se croit malin en empechant le clic droit sur ses page (comme si ca empechait quelqu'un de motive de regarder ses images/sources... lol).

Enfin, vu la frequentation de mon demineur ces derniers mois, ca ne vaut peut-etre pas la peine que je me prenne la tete :o)

A+,
Eric
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
6 août 2007 à 15:01
>Ce que je veux dire c'est que sauf erreur de ma part, tu consideres la partie finie (et gagnee)
>quand le nombre de cases enlevees est egal au nombre total de cases moins le nombre de bombes.

A oui ok.
En effet je vérifie si la partie est terminée de cette manière, ça me paraissait de loin la méthode la plus logique. Les flag c'est optionnel à mon gout.

Sinon amusante ta version en JS. Mais le support du second bouton ça me parait un peu hasardeux... Sous IE ca peu passer mais sous FF, par exemple, il me semble que tu ne peux pas lui interdire d'afficher le menu contextuel.
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
6 août 2007 à 14:50
>>Sinon je n'ai pas essaye ton jeu (je suis au boulot) mais il a l'air bien.
>>(J'ai surtout apprecie que tu permettes de jouer "avec un seul bouton", ce qui est indispensable
>>pour faire de bons scores ;o) ).
>
>J'ai pas vraiment compirs...
>Avec un seul bouton?

Ce que je veux dire c'est que sauf erreur de ma part, tu consideres la partie finie (et gagnee) quand le nombre de cases enlevees est egal au nombre total de cases moins le nombre de bombes.

Il n'est pas obligatoire de placer les drapeaux au demineur. Tu peux juste oter toutes les cases sauf celles ou il y a des bombes, et a la fin tu as gagne. C'est bien plus rapide (bien que ca demande un temps d'adaptation) mais la plupart des clones du demineurs ne supportent pas cette option.

Par contre, est-ce que tu affiches les bombes quand le joueur gagne de cette facon ? (ok, j'ai la flemme de replonger dans le source ;o) ).

Pour les amateurs de demineur "a un bouton", j'ai fait une version en ligne il y a quelques annees (ce fut mon premier programme en Java...script (lol)). Le principal avantage est de pouvoir se mesurer aux autres visiteur (J'ai toujours trouve terne l'ecran highscores du demineur de base avec invariablement le meme nom repete 3 fois...).
Avec IE et XP SP2 ca rale un peu quand je fais un prompt pour demander le nom a la fin de la partie, mais sinon il marche toujours...
C'est ici:
http://www.fantasy-lands.net/Games/Mines/

Eric

NB: Si vous etes assez a raler, il n'est pas impossible que je rajoute le support du deuxieme bouton un de ces jours (et pourquoi pas celui du milieu ;o) ) mais comme je l'ai deja dit, ce n'est pas la peine d'esperer battre un record en jouant avec les drapeaux :oD
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
6 août 2007 à 14:27
>Personne n'a dit que ce serait facile, mais c'est une bonne habitude a prendre, alors quite a
>ecrire des petits codes experimentaux pour ameliorer ton niveau, pourquoi ne pas essayer.

D'accord pour dire que c'est une bonne habitude, mais pas forcément dans tout les cas.
Ici on a un fichier qui atteint les 1000 lignes surtout parce qu'il est très aéré et très (peut être trop) commenté. Il pourrait certainement prendre la moitié voir moins si ce n'était pas le cas.

Je ne ressent donc vraiment pas le besoin d'éclater la source ici. En revanche, je travail actuellement sur un plus gros projet, pour lequelle j'ai commencé à éclater ma source. Surtout que la plupart des classes sont codées de façon à être réutilisables et donc indépendantes des autres.

Sinon je ne dis pas que ce serait difficile, mais "chiant". Ca impose de mettre en place différents mécanismes de communication entre mes objets/classe et comme je considère ce projet comme terminé je n'ai pas tellement le courage de m'y remettre.

>Sinon je n'ai pas essaye ton jeu (je suis au boulot) mais il a l'air bien.
>(J'ai surtout apprecie que tu permettes de jouer "avec un seul bouton", ce qui est indispensable
>pour faire de bons scores ;o) ).

J'ai pas vraiment compirs...
Avec un seul bouton?
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
6 août 2007 à 11:41
>Et désolé mais je ne vais pas éclater la source, je la trouve tout de même suffisament
>clair et puis si je commence à l'éclater ça va me poser quelques problème niveau visibilité
>des déclarations et partage des données. Pas que ce soit infaisable, bien au contraire, mais
>un peu... chiant!

Personne n'a dit que ce serait facile, mais c'est une bonne habitude a prendre, alors quite a ecrire des petits codes experimentaux pour ameliorer ton niveau, pourquoi ne pas essayer.

Tous les problemes de visibilite peuvent se resoudre avec une bonne architecture, et ca me semble un bon exercice de conception objet.

Enfin, tu fais comme tu veux bien sur :o)

Sinon je n'ai pas essaye ton jeu (je suis au boulot) mais il a l'air bien.
(J'ai surtout apprecie que tu permettes de jouer "avec un seul bouton", ce qui est indispensable pour faire de bons scores ;o) ).

A+,
Eric
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
5 août 2007 à 18:54
Merci.
Et désolé mais je ne vais pas éclater la source, je la trouve tout de même suffisament clair et puis si je commence à l'éclater ça va me poser quelques problème niveau visibilité des déclarations et partage des données. Pas que ce soit infaisable, bien au contraire, mais un peu... chiant!
randriano Messages postés 54 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 26 juillet 2011
5 août 2007 à 14:47
Bonjour !

Je n'ai qu'un mot à dire : génial !!!!

Mais suis aussi le conseil de DARKSIDIOUS.
Bonne continuation !
dwogsi Messages postés 12 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 12 janvier 2008
5 août 2007 à 14:44
Franchement c'est surtout parce qu'il y a beaucoup de commentaires que ça prend pas mal de lignes.
Mais je vais essayer d'éclater ça.
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 août 2007 à 08:38
Tu devrais essayer d'eclater ton programme en plusieurs classes, car là, lire une classe d'un peu plus d'un milier de ligne, c'est indigeste...
Rejoignez-nous