Salut mon pote et moi on a creer un progrmme lorsque on le compile ca nous marque aucune erreur mais quant on l'execute ca nous mais buse error
voici le programe
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define N 10
#define M 11
int T=2;
void inittab(int *** tab)
{
int i,j;
*tab = malloc(N * sizeof (*tab)[0]);
assert(*tab);
for(i=0;i < N;i++)
{
(*tab)[i] = malloc(N * sizeof (*tab)[0][0]);
assert((*tab)[i]);
for(j=0;j < M;j++)
(*tab)[i][j] = N*i+j;
}
}
void printtab(int ** tab)
{
int i,j;
printf("********************** Init Affichage ********************\n\n" );
printf("F :Foret C :Chateau M :Montagne $
ersonnage O
bjet\n\n\n" );
for(i=0;i < N;i++)
{
for(j=0;j < M;j++)
{
if((i == 0) || (i == 1))
printf("%5c",70);
else
if((j == 0) || (j == 1))
printf("%5c",77);
else
if((j == 9) || (j == 10))
printf("%5c",67);
else
if((tab[i][j] == 22) || (tab[i][j] == 88))
printf("%5c",79);
else
if(tab[i][j] == 65)
printf("%5c",36);
else
printf("%5c",35);
}
printf("\n" );
}
}
/* void freetab(int ** tab)
{
int i,j;
for(i = (N - 1);i > 0;i--)
{
for(j = (M - 1);j > 0;j--)
free(tab[i][j]);
}
free(tab);
}
*/
void swapH(int ** tab)
{
int i,j,tmp;
printf("***** Action : Monter *****\n\n\n" );
for(i = 0;i < N;i++)
for(j = 0;j < M;j++)
{
if(tab[i][j] == 65)
{
if((i - 1) < 2)
printf("Vous ne pouvez monter puisqu'il y a la Foret\n" );
else
if((tab[i - 1][j] == 22) || (tab[i - 1][j] == 88))
printf("Vous ne pouvez monter puisqu'il ya un objet qui vous gene\n" );
else
{
tmp = tab[i][j];
tab[i][j] = tab[i - 1][j];
tab[i - 1][j] = tmp;
}
}
}
}
void swapB(int ** tab)
{
int i,j,tmp;
printf("***** Action : Descendre *****\n\n\n" );
for(i = (N - 1);i > 0;i--)
for(j = (M - 1);j > 0;j--)
{
if(tab[i][j] == 65)
{
if((i + 1) > (N - 1))
printf("Vous ne pouvez descendre sinon vous sortez de la MAP\n" );
else
if((tab[i + 1][j] == 22) || (tab[i + 1][j] == 88))
printf("Vous ne pouvez descendre puisqu'il y a un objet qui vous gene\n" );
else
{
tmp = tab[i][j];
tab[i][j] = tab[i + 1][j];
tab[i + 1][j] = tmp;
}
}
}
}
void swapG(int ** tab)
{
int i,j,tmp;
printf("***** Action : Gauche *****\n\n\n" );
for(i = 0;i < N;i++)
for(j = 0;j < M;j++)
{
if(tab[i][j] == 65)
{
if((j - 1) < 2)
printf("Vous ne pouvez aller vers la gauche puisqu'il y a la Montagne\n" );
else
if((tab[i][j - 1] == 22) || (tab[i][j - 1] == 88))
printf("Vous ne pouvez aller vers la gauche puisqu'il y a un objet qui vous gene\n" );
else
{
tmp = tab[i][j];
tab[i][j] = tab[i][j - 1];
tab[i][j - 1] = tmp;
}
}
}
}
void swapD(int ** tab)
{
int i,j,tmp;
printf("***** Action : Droite *****\n\n\n" );
for(i = (N - 1);i > 0;i--)
for(j = (M - 1);j > 0;j--)
{
if(tab[i][j] == 65)
{
if((j + 1) > 8)
printf("Vous ne pouvez aller vers la droite puisqu'il y a le Chateau\n" );
else
if((tab[i][j + 1] == 22) || (tab[i][j + 1] == 88))
printf("Vous ne pouvez aller vers la droite puisqu'il y a un objet qui vous gene\n" );
else
{
tmp = tab[i][j];
tab[i][j] = tab[i][j + 1];
tab[i][j + 1] = tmp;
}
}
}
}
void take(int ** tab)
{
int i,j;
printf("***** Action : Prendre un Objet\n\n\n" );
for(i = 0;i < N;i++)
for(j = 0;j < M;j++)
{
if(tab[i][j] == 65)
{
if((tab[i - 1][j] == 22) || (tab[i - 1][j] == 88))
{
tab[i - 1][j]=-1;
T=T - 1;
}
else
if
((tab[i + 1][j] == 22) || (tab[i + 1][j] == 88))
{
tab[i + 1][j]=-1;
T=T - 1;
}
else
if((tab[i][j - 1] == 22) || (tab[i][j - 1] == 88))
{
tab[i][j - 1]=-1;
T=T - 1;
}
else
if((tab[i][j + 1] == 22) || (tab[i][j + 1] == 88))
{
tab[i][j + 1]=-1;
T=T - 1;
}
else
printf("Vous ne pouvez prendre d'objet puisqu'il y en a pas a proximite de vous\n" );
}
}
}
void poser(int ** tab)
{
int i,j;
char c,reste;
printf("***** Action : Deposer un Objet\n\n\n" );
for(i = 0;i < N;i++)
for(j = 0;j < M;j++)
{
if(tab[i][j] == 65)
{
if(T == 2)
{
printf("Vous ne pouvez pas deposer un Objet puisque vous n'en avez pas pris\n" );
}
else
{
printf("cmd : " );
reste = c = getchar();
while(reste == '\n')
{
switch(c)
{
case 'h':
tab[i -1][j] = 88;
T=T + 1;
break;
case 'b':
tab[i + 1][j] = 88;
T=T + 1;
break;
case 'g':
tab[i][j - 1] = 88;
T=T + 1;
break;
case 'd':
tab[i][j - 1] = 88;
T=T + 1;
break;
default:
printf("h : au-dessus -- b : en-dessous -- g: a gauche -- d : a droite\n" );
break;
}
printf("cmd : " );
reste = getchar();
}
}
}
}
}
int main(void)
{
char c,reste;
int ** tab = NULL;
inittab(&tab);
while(1)
{
printtab(tab);
printf("cmd : " );
reste = c = getchar();
while(reste != '\n')
reste = getchar();
switch(c)
{
case 'h':
swapH(tab);
break;
case 'b':
swapB(tab);
break;
case 'g':
swapG(tab);
break;
case 'd':
swapD(tab);
break;
case 't' :
take(tab);
break;
case 'p':
poser(tab);
break;
case 'm':
printf("h : monter le curseur\n" );
printf("b : descendre le curseur\n" );
printf("g : deplacer le curseur vers la gauche\n" );
printf("d : deplacer le curseur vers la droite\n" );
printf("t : prendre -- p: poser un objet\n" );
printf("m : afficher l'aide\n" );
printf("q : quitter le programme\n\n" );
break;
case 'q':
/*freetab(tab);*/
exit(0);
default:
printf("La commande 'm' permet d'obtenir l'aide\n\n\n" );
break;
}
}
return 0;
}
pouvez vous nous aider merci