Accueil > Forum > > > > Réalisation en C d'un Démineur
Réalisation en C d'un Démineur
lundi 21 janvier 2008 à 21:21:40 |
Réalisation en C d'un Démineur

axjaw
|
voilà dans le cadre de mes études, je dois réaliser un demineur version rlogic en C... le principe de base est le meme sauf que dans ce rlogic, il faut parcourir le terrain en partant du coin en haut à gauche jusqu'au coin en bas à droite. j'utiliserais donc 2 tableaux l'un servant à conserver l'état du terrain et l'autre contenant les informations d'affichage. Donc voilà je souhaite avoir de l'aide pour ce qui est de l'algorithme... je dois générer un terrain miner, puis me lancer dans les situations pour lesquelles je suis pres d'une mine etc... les 1,2,3,4 que je place autour des mines je les gerent comment étant donné la pose aléatoire du terrain miné... merci d'avances pour vos réponses...
|
|
mardi 22 janvier 2008 à 10:13:18 |
Re : Réalisation en C d'un Démineur

kts_system
|
c'est simple un fois le terain miné generer, pour chaque case non miné tu compte combien de case sont miné autour . Ex : Sur un tableau Tab[X][Y] (on considère que une case miné est a -1)
pour i de 0 a X-1 pour j de 0 a Y-1 Si (Tab[i][j] != -1) //case non miné iNbMine = 0
Si (Tab[i-1][j] = = -1) iNbMine++
Si (Tab[i][j-1] == -1) iNbMine++
Si (Tab[i+1][j] == -1) iNbMine++
Si (Tab[i][j+1] == -1) iNbMine++
Tab[i][j] = iNbMine; FinSi FinPour FinPour
Voila apres je ne sais plus si tu doit aussi verfier les cases en diagonales ds le demineur
|
|
mardi 22 janvier 2008 à 10:33:45 |
Re : Réalisation en C d'un Démineur

Pistol_Pete
|
Salut, Pour le demineur, les cases en diagonales doivent etre prise en compte. ( sinon c'est impossible pour jouer) La vrai seule difficultee pour le demineur, c'est de devoiler les cases "0", mais si tu maitrises la recursivitee ou les piles, il n'y a plus aucun probleme. A+ Mon site internet : [ Lien ]
|
|
mardi 22 janvier 2008 à 17:17:12 |
Re : Réalisation en C d'un Démineur

axjaw
|
merci pour vos réponses... mais comment réaliser le terrain en positionant les mines aléatoirement... j'ai entendu parler de la fonction:
srand((unsigned)time(NULL));
avec laquelle j'utilise:
int mine=rand()%nbMine;
mais je ne vois pas comment cela genere le "nbMine" prédéfini dans tout le tableau[nbColonne][nbLigne]. il faut pas faire une boucle for imbriquée dans une autre pour parcourir chaque case et mettre la fonction aléatoire à l'interieur? si vous pouvez m'éclairer la dessus merci...
|
|
mardi 22 janvier 2008 à 17:35:58 |
Re : Réalisation en C d'un Démineur

kts_system
|
Une solution serait (pour expliquer on suppose que tu doit generer 10 bombes et que tu a un tableau tab de 10*10 "Tab[10][10] "
pour i de 0 a 9 //on passe 10 fois donc 10 bombes X = Generer un nb aleatoire entre 0 et 9 //Puisque tu a 10 case en longeur Y = Generer un nb aleatoire entre 0 et 9 //Puisque tu a 10 case en largeur
si (Tab[X][Y] != -1)//Si la case n'est pas deja marquer (ca peut arriver) Tab[X][Y] = -1 // marque la case sinon i = i -1 //Sinon il te manquera une bombe FinSi FinPour
Voila de cette façon tu n'a qu'une boucle
Pour generer un nb aléatoire tu doit initializer le compteur avec srand((unsigned)time(NULL)); Puis a chaque apel de "rand() % (10)" tu aura un nb different compris entre 0 et 9
pour plus de detail sur rand va sur
[ Lien ]
|
|
mardi 22 janvier 2008 à 17:59:44 |
Re : Réalisation en C d'un Démineur

axjaw
|
j'ai pas encore essayé ta facon...
voilà le code d'essai pour l'utilisation de la fonction aléatoire:
[code]#include <stdio.h> #include<stdlib.h>
int main (void){ int i,j; char tab[9][9]; int mine=0; for(i=0;i<9;i++) { for(j=0;j<9;j++) { tab[i][j]=rand()%2; if ((tab[i][j]>0.5) && (mine<10)) { tab[i][j]='*'; mine++; } else tab[i][j]=0; printf("%c ",tab[i][j]); } printf("\n"); } return 0; }[/code]
Le probleme est que la répartition aléatoire n'est valable qu'une seule fois, car lorsque je refais une nouvelle l'execution du programme, j'obtiens le meme resultat: les mines sont représentées avec '*'
c'est possible de cette maniere ou il faut que je fasse de la tienne?
|
|
mardi 22 janvier 2008 à 18:08:14 |
Re : Réalisation en C d'un Démineur

kts_system
|
il faut initialiser le compteur avec l'heure courante pour que tes nb soit aleatoire a chaque demarage avec la fct srand((unsigned)time(NULL)) a mettre en debut de programme
oui ta methode devrait marcher mais je comprend pas trop ton > 0.5 (tu risque d'avoir beaucoup de mine au debut du tab et pas du tout a la fin, essaye en tous cas)
de plus 2 boucle for sa veut dire que le temps d'execution et le carré du temps si il n'y en a qu'une.
|
|
mardi 22 janvier 2008 à 19:41:07 |
Re : Réalisation en C d'un Démineur

axjaw
|
ok merci je continue dans mon prog... je risque d'avoir encore quelque question...
|
|
mardi 22 janvier 2008 à 20:37:36 |
Re : Réalisation en C d'un Démineur

axjaw
|
j'ai une autre question: il faut que j'utilise les touches h,d,b,g du
clavier pour me deplacer des cases en haut à gauche aux cases en bas à
droite de mon demineur... on nous a parlé succintement de sequence
d'échappement... pour faire correspondre une action à une touche au
clavier... mais il faut faire quoi pour que le simple deplacement du
curseur face apparaitre ce qui se cache sous la case? je vais utiliser un deuxieme tableau pour "jouer" cad modifier mon premier tableau qui est le terrain de base ou il y a eu le tirage aléatoire...
|
|
mercredi 23 janvier 2008 à 09:31:10 |
Re : Réalisation en C d'un Démineur

Pistol_Pete
|
Salut Axjaw, tu devrais suivre la methode de kts__system pour la generation aleatoire du terrain car ta facon de faire n'est pas du tout aleatoire. Tu testes toutes les cases, et tu dis qu'il y a une 1 chance sur 2 pour qu'il y ai une mine la. Tu n'as aucun control sur le nombre de mine present sur ton tableau a la fin de ta generation. Ben oui imagine que rand()%2 te donne a chaque fois 0 !! (peut probable mais ya une chance), tu n'aurai alors aucune mines sur ton tableau alors que tu pensais en avoir 10! Et en l'occurence, comme tu as un gros tableau, et peu de mines, toutes tes mines seront sur les premieres colonnes. En conclusion, tu as aucun controle sur le nombre de mines et leurs emplacements n'est pas aleatoire=> oublie cette methode A+ Mon site internet : [ Lien ]
|
|
Cette discussion est classée dans : voil, réalisation, terrain, démineur, rlogic
Répondre à ce message
Sujets en rapport avec ce message
Problème démineur [ par pitidragon ]
Bonjour !Alors voilà, je dois créer un démineur en C pour mes études. Bon j'ai bien avancé, mais je bloque sur un truc débile !Je ne vois pas comment
Système expert pour démineur [ par mohdaef ]
Bonjour à tous,Je réalise actuelle un petit projet de démeur en API Windows, je cherche à créer un S.E. (Système Expert) pour le mode multijoueur.En u
Créationn d'un editeur de resource comment faire? [ par babyboo1107 ]
Bonjour à tous, voilà , dans le cadre d'un projet de fin d'étude j'aimerais créer un éditeur de ressource, mais voilà je n
Tableau et fichier txt [ par cleloa ]
Salut tout le monde !Alors voilà, je suis en plein combat ac le langage c pour reussir à :Importer des données d'un fichier txt dans un tableau de st
tableau 2D de RECT winapi [ par dyroj ]
Bonsoir a tous,je suis en train de créer un snack et j'aurai besoin d'un tableau 2D de la structure RECT pour y placer la position de la nouritur pour
ecriture dans fichier C [ par green mamba ]
Bonjour à tous!voilà, j'ai refait un code de tri (je me suis légèrement inspiré d'un cs présent ici, je code plutôt mal en général), et je voudrais ré
se servir de real spy [ par vincedu67 ]
Bonjour à tous,voilà mon problème:je debute en informatique et j 'ai telechargé real spy seulement voilà que dois je faire pour pouvoir m'en servir?Po
réalisation d'un Hub usb 7 ports [ par Kronanberg ]
Bonjour, Voila je suis sur un projet ou je dois créer un HUB USB qui sera associé plus tard à des liaisons RS232. Je pense faire ce HUB avec le compos
étape de réalisation de système d'exploitation [ par laopatrick ]
salut à tous, Commment conçoit-on un systeme d'exploitation graphique ?
Executer un fichier .cmd [ par Anthrax77 ]
Bonjour,voilà je me présente je m'appel Fred et c'est mon tout premier post sur ce site.Alors voilà je suis débutant et je fais en ce moment un petit
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|