bonsoir tout le monde , je cherche un peu d'aide içi , si svp quelq'un entre vous peut m'aider . je vais connaitre l'algorithme de jeu Démineur (tout qui concerne les procédures et les fonctions possibles svp) . Merci bien tt le monde!!
bonsoir tout le monde , je cherche un peu d'aide içi , si svp quelq'un entre vous peut m'aider . je vais connaitre l'algorithme de jeu Démineur (tout qui concerne les procédures et les fonctions possibles svp) . Merci bien tt le monde!!
Tu cherches à créer un jeu démineur (ce qui implique de connaître génération aléatoire, propagation de cases révélées quand on clique sur une case "vide", etc.) ou une IA qui joue au démineur?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
http://www.linux-france.org/article/...stions-fr.html
En gros, montre nous que tu as cherché un minimum si tu veux des réponses...
http://lmgtfy.com/?q=algorithme+d%C3%A9mineur
Bonjour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 ouvrir_case(case) si case = mine => boum afficher mines situées autour case si nb mines autour = mines déjà positionnées par joueur faire pour chaque case "x" située autour et pas encore ouverte faire ouvrir_case(x) fin pour fin si fin fonction
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
J'avais fait une réplique de Démineur avec Qt, si ça t'intéresse les sources sont en GPL ici : https://github.com/Bktero/UnMineMe
Joli. En plus il compile parfaitement avec mingw sous XP.
Qq petits bémols à la compilation
Mais ça n'empêche pas la compil et la création du jeu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 sources\myboard.cpp: In member function 'void myBoard::mineMyBoard()': sources\myboard.cpp:145: warning: comparison between signed and unsigned integer expressions sources\myboard.cpp:156: warning: comparison between signed and unsigned integer expressions sources\myboard.cpp:164: warning: comparison between signed and unsigned integer expressions sources\myboard.cpp: In member function 'void myBoard::winningGameOrNot()': sources\myboard.cpp:339: warning: comparison between signed and unsigned integer expressions![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
C'est l'objectif de Qt normalement, d'être portableC'est quand même bien de savoir que ça marche niquel ailleurs, car j'ai codé le truc sous Mac OS X, l'ai mis sur mon GitHub et ne l'ai pas retouché depuis. D'ailleurs, je m'aperçois que ça fait un peu plus d'un an !!! Il y a encore des choses à terminer, quelques commentaires TODO et autres (j'ai relu une bonne partie du code après mon précédent post). Je note tes commit dans le bugtracker de GitHub pour si au cas je faisais une prochaine version ^^
D'ailleurs, je me demande si je ne t'avais pas déjà passé les sources de cet UnMineMe, Sve@r![]()
Bonjour,
j'ai très récemment réalisé un jeu du démineur (il y a une semaine),
a m'a pris environ 5 heures (je 'lai réalisé sous excel en VBA car je suis un flemmard ^^)
Voici le déroulement basique d'une partie:
1 - Clic sur commencer (ou sur recommencer)
Implique:
-Effacer le jeu précédent (sous excel c'est facile, mais là en C, je sais pas comment tu procède pour générer ta grille)
-Générer une grille de la taille spécifiée par le joueur( 3 types de grilles + grille personnalisable? c'est toi qui choisis) (idem, aucune idée de ta façon de faire)
-Implanter un nombre définit de mine dans un nombre définit de cases:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Procédure PoserMines(Entier : NbMines, Entier : NbCases) //tu définit ici le % de chance de poser une mine sur une seule case Entier: Chance, ResteAPoser ResteAPoser = NbMines Chance = (NbMines / NbCases)*100 Tant Que : ResteAPoser != 0 faire: Pour Chaque Celulle de ta grille faire: Si APoser faire Si(ResteAPoser != 0) faire //Ici ton posage de mine, à toi de décider de quelle façon les répérer ResteAPoser = ResteAPoser - 1 Sinon Sortir de la boucle Pour //(en C, c'est "break" si je me souviens bien) finSi FinSi FinPour FinTantQue FinProcédure Fonction APoser (Entier: Chance) //doit renvoyer un booléen, je ne me souviens plus comment faire sa en C Rnd = //Initialisation d'une variable aléatoire Si (100 * Rnd) < Chance Faire: Retourner Vrai Sinon Retourner Faux FinSi FinFonction
-Inscrire les nombres de mines adjacentes (aucune idée de la façon de faire, tout dépend de la façon que tu utilise pour réaliser ta grille, voici un algo : )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Procédure MettreNums Pour chaque cellule de grille //si cellule minée: ne rien faire //si cellule vide : //cellule.valeur = NbMinesAdjacentes(cellule) //FinSi FinProcédure Fonction NbMinesAdjacentes(cellule ) //renvoie un entier //là je n'ai aucune idée de comment tu vas pouvoir t'y prendre... comme je l'ai dit dès le début, vieux maux faire en fonction de ta grille FinFonction
Voilà qui devrais déjà t'aider, quelques petites choses utiles à savoir:
*Déclare ta grille comme un paramètre global (on à besoin d'y avoir accès quasiment partout)
*Définit un type de cellule astucieux
(un minimum serait de faire contenir :
un entier (nb de mines adjacentes); (éventuellement réserve un nombre inutilisé pour indiquer une mine, exemple: 10)
un booléen (révélé ou non);
et éventuellement un booléen supplémentaire (pour indiquer si cette case possède une mine)
Partager