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!!
Version imprimable
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?
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
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.:chin:Code:
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
C'est l'objectif de Qt normalement, d'être portable :) C'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:
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:
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)
Merci beaucoup pour votre aide.
damnit! j'ignorais celà!
bon ben j'ai plus qu'à trouver une alternative... une fonction faisant office de getter surement?
Moi, je crée carrément une structure dédiée à stocker tout ce qui est "environnement programme". On y trouve donc
- la version
- des flags indiquant si on est en mode debug, développement, sécurisé, etc etc
- les paramètres de mon appli
Ensuite ben je passe l'adresse de cette structure à toutes mes fonctions. Ainsi c'est quasiment comme du global mais ça limite les risques...