RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Programmer un démineur en c

Forum : C
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2] [3]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
Visiteur MP
Membre du club
Inscrit :
Messages : 1323
Message
#163742
Posté le 09/06/09 à 20:30
Bon,
J'ai travaillé dans ce sens, et le code est beaucoup plus clair
J'ai aussi retravaillé toutes mes fonctions, une par une, pour vérifier qu'elles tournaient bien, j'ai eu quelques surprises et j'ai corrigé
Il me reste la dernière (Jouer).
Je verrais ça demain !

Merci pour le coup de main Rainbow Smiley

Un TP, c'est bien un travail collaboratif non ?

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

Spirit
Superviseur :
- C & C++
Modérateur :
- PHP
- Javascript
- MySQL
Avatar de Spirit
Inscrit : 07/04/2004
Messages : 2167
Message
#163743
Posté le 09/06/09 à 21:03
j'ai toute la page 2 tu topic qui ne s'affiche pas :/
je suis curieux de voir ce que t'as fait :(

edit: j'ai pu la lire c'est bon :)

mon petit conseil pour la fonction qui affiche toutes les cases libres


void afficheCase(int x, int y) { // oublie pas de mettre des délimiteurs (if x < 0 || x > maxX (ici 10) || y < 0 || y > maxY (ici 10)) return; if(JEU[x][y] == 'M') // case minée return; // on ne fait rien int n = compterMinesAutour(x, y); // on compte les mines autour de la case souhaitée if(n == 0) // pas de mines on l'affiche { JEU[x][y] = '0'; // j'affiche 0 dans la case // puis récursivité ! afficheCase(x-1, y-1); // case au dessus à gauche afficheCase(x-1,y); // case à gauche afficheCase(x-1, y+1); // case en dessous à gauche afficheCase(x, y+1); // case en dessous afficheCase(x+1, y+1); // case en dessous à droite afficheCase(x+1, y); // case à droite afficheCase(x+1, y-1); // case au dessus à droite } else // mines autour, on l'affiche { // le code que tu as à recopier, sprintf toussa } }



à adapter p-e selon ton code :)

et pour les codes ASCII, c'est inutile il suffit de faire monchar = '0'; pour qu'il vaille 0 et ne pas se soucier du code ASCII associé (qui peut changer entre les plateformes/os/...)
__________________________
Spirit - modérateur casu ^-^'

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Superviseur :
- C & C++
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 1476
Message
#163762
Posté le 10/06/09 à 17:13
il vaut mieux mettre les testes d'existence des cases dans la fonction CompterMineAutour() et avant la récursivité car là sinon il bloque tout dès qu'il est à un bord au lieu d'ignorer le/les côtés problématiques uniquement.
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

How to ask Questions ou Comment poser une question
TPE Rayons X et Scoliose

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Spirit
Superviseur :
- C & C++
Modérateur :
- PHP
- Javascript
- MySQL
Avatar de Spirit
Inscrit : 07/04/2004
Messages : 2167
Message
#163769
Posté le 10/06/09 à 18:29
d'où il bloque ?
la fonction teste si la case que l'on demande existe, sinon elle s'arrête
elle ne fait rien d'autre, puis elle se propage aux 8 côtés
je n'ai pas parlé et écrit compterMinesAutour, il l'a déjà faîte et elle marche sûrement, oui il faut aussi y faire des tests d'existence de chaque case, mais ça n'intervient en aucun cas dans cette fonction de devoilerCase qui y fait uniquement appel
tu peux très bien être placé sur un rebord pour le premier appel, ça changera à peu près strictement rien, pas plus que si tu choisis de partir du milieu du plateau de jeu
bien sûr tu ne peux pas partir d'une case non existante, sinon là ça bloque... mais autoriser le joueur à jouer hors plateau est juste... impensable.
__________________________
Spirit - modérateur casu ^-^'

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C



    PAGES : [1] [2] [3]



.: Site Web développé par Yann Pingot et l'équipe MPWG avec www.evolvia-web.com :.