Select case C

Fermé
DEANETEHEI Messages postés 7 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 3 mars 2015 - Modifié par crapoulou le 1/03/2015 à 18:53
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 mars 2015 à 16:48
Bonjour à tous,
J'arrive au bout de mon projet, j'aimerais juste que l'on m'apporte une derniere rectification qui apparement n'a pas l'air de fonctionner. Voilà j'ai donc du faire une condition dans un switch de direction dans un labyrinthe qui dit si 0 avance, si 1 arrête, le souci c'est que le pion ne respecte pas la condition si 1 arrête en fait il m'efface tous le labyrinthe que j'ai construit quelqu'un pourrai me dire si il y a un probleme quelque part, j'ai essayé plusieur facon mais rien a faire, s'il vous paît pour mettre un terme amon programme merci.



case haut:  PositionneCurseur(x,y);
                    if(Lab[xM-5][yM-4]==0)
                    printf(" ");
                    x--;
                    break;
                        if(Lab[xM-1][yM]==1)
                        break;

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 mars 2015 à 18:51
Sans le code en entier, ce n'est pas évident de t'aider.
Et n'oublie pas d'utiliser la balise <code c>.
Exemple :
<code c>ici tu mets ton code</code>
if(Lab[xM-1][yM]==1)
break;

A quoi se rapporte le break ? Si c'est pour sortir du "switch", il ne sert à rien puisqu'il y a un break; juste avant le switch...
0
DEANETEHEI Messages postés 7 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 3 mars 2015
Modifié par DEANETEHEI le 1/03/2015 à 21:54
Salut fiddy,
Merci pour ton attention je t'anvance déjà je ne suis qu'1 tout petit joueur en programmation et je suis qu'on 1ere annee, donc je dois remetrre mon projet pour fin mars du coup pour mon projet il ne me reste plus qu'a faire le deplacement dans le labyrinthe, alors j'ai fait comme tu as dit et la le pion reste figé c'est bizzare pourras tu m'aider? je t'affiche le contenu de mon code et j'aimerais savoir ce que je dois faire pour mettre on marche.

void avance()
{
direction=getch();

switch (direction)
{
case haut: PositionneCurseur(x,y);
if(Lab[xM-5][yM-4]==0)
printf(" ");
x--;

if(Lab[xM-1][yM]==1)


case bas: PositionneCurseur(x,y);
if(Lab[xM-4][yM-3]==0)
printf(" ");
x++;
break;
if(Lab[xM+1][yM]==1)
break;

// if(Lab[x+1][y]==1)
case gauche: PositionneCurseur(x,y);
if(Lab[xM-5][yM-4]==0)
printf(" ");
y--;
break;
if(Lab[xM][yM-1]==1)
break;

case droite: PositionneCurseur(x,y);
if(Lab[xM-3][yM-4]==0)
printf(" ");
y++;
break;
if(Lab[xM][yM+1]==1)
break;
}

}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
2 mars 2015 à 16:33
Tu n'as pas utilisé les balises "code c" comme je t'ai demandé. Du coup, ton code n'est pas lisible...

Sinon pour le code, je ne comprends pas la logique.
if(Lab[xM-5][yM-4]==0)
A quoi ça sert ?

if(Lab[xM-5][yM-4]==0)
printf(" ");
x--;

if(Lab[xM-1][yM]==1)

Plutôt :
<code c>if (pasMur) {
printf(" ");
x--;
}
Il ne faut pas oublier qu'en C, il faut mettre des accolades autour des blocs situés après le if (sauf s'il n'y a qu'une instruction à exécuter).

if(Lab[xM-1][yM]==1)
A quoi ça sert ? De plus, tu ne mets pas de code à exécuter derrière.

Cdlt,
0
DEANETEHEI Messages postés 7 Date d'inscription vendredi 20 février 2015 Statut Membre Dernière intervention 3 mars 2015 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
3 mars 2015 à 09:15
salut fiddy,
en fait, je comme ça c pour donner les coordonées des point x et y de la ou il se situe dans le labyrinthe,puis il teste la condition si [x-5][y-4]==0 cela veut je pense qu'il n'ya pas mur donc x-- ,il avance, je ne t pas mis tous le code de peur de me le faire prendre par d'autre,
if(Lab[xM-5][yM-4]==0)
printf(" ");
x--;
est ce ke ça se fait if (pas mur) avance il faut mettre une condition de coordonné non?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mars 2015 à 16:48
est ce ke ça se fait if (pas mur) avance il faut mettre une condition de coordonné non?
Quand je dis : if (pas mur), je parle de la condition relative aux coordonnées. Ce qui était important dans ma réponse était les accolades.
if (condition) {
     printf(" ");
     x--;
}

est différent de :
if (condition) 
     printf(" ");
     x--;

En effet dans la première, tu exécutes x--; si condition est vraie. Dans la seconde, tu exécutes x--; dans tous les cas (même si condition est faux). Voilà pourquoi l'indentation est importante.
En écrivant correctement, le deuxième code, c'est plus clair :
if (condition)
     printf(" ");
x--; 

Donc, je répète. Si tu postes ton code, merci d'utiliser la balise "code c"...
0