Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/05/2006, à 17:11

fred____89

message d'erreur indescriptible

voici le message d'erreur bizarre que jobtient

jeu1.c: In function 'menu':
jeu1.c:43: erreur: incompatible implicit declaration of function 'jeu'
jeu1.c:16: erreur: previous implicit declaration of ‘jeu’ was here
jeu1.c: In function 'jeu':
jeu1.c:53: erreur: incompatible implicit declaration of function 'creachambre'
jeu1.c:18: erreur: previous implicit declaration of 'creachambre' was here
jeu1.c:54: erreur: incompatible implicit declaration of function 'chambre'
jeu1.c:19: erreur: previous implicit declaration of 'chambre' was here

en compilant avec gcc le programme suivant

#include<stdio.h>
/* Programme principal */ 
main()
{ 
void menu();//fonction affichage du menu 
void jeu();//fonction "moteur" du jeu 
void options();//fonction options 
void creachambre(int*);//fonction creation des pieces 
void chambre(int*,int*);//fonction au sein d'une piece 
menu();
} 

/*fin du programme principal*/ 

/*fonction affichage du menu*/ 

void menu() 
{ 
//déclaration de variables locales 
int choix,test; 
test=0; 
/*affichage*/ 
printf("|*************************************|\n"); 
printf("| le labyrinthe du |\n"); 
printf("| sorcier |\n"); 
printf("|*************************************|\n"); 
printf("\n"); 
printf("que voulez vous faire?\n"); 
printf("j:jouer\n"); 
printf("q:quitter\n"); 
scanf("%c",&choix); 
if(choix=='j'); 
	jeu();


} 

/*fonction jeu, moteur principal du jeu*/ 
void jeu() 
{ 
int Tchambre[150]; 
int Tmystere[150]; 
creachambre(&Tchambre[0]); 
chambre(&Tchambre[0],&Tmystere[0]); 
} 
/*fonction création des pieces*/ 
void creachambre(int *T) 
{ 
int i,j,alea,alea1,alea2; 
unsigned int t; 
t=time(); 
srand(t); 
for( i=0 ; i<50 ;i++) 


do 
{ 
alea=(rand()%3+1); 
alea1=(rand()%3+1); 
alea2=(rand()%3+1); 
T[3*i]=alea; 
T[3*i+1]=alea1; 
T[3*i+2]=alea2; 
} 
while((alea==alea1) || (alea==alea2) || (alea1==alea2)); 



/*fonction au sein d'une piece*/ 
void chambre(int*T,int*T2) 
{ 

int i,alea,alea1,alea2,choix,ch,k,temp,j,a,nbr,m; 
unsigned int t; 
t=time(); 
srand(t); 
for( i=0 ; i<50 ;i++) 


do 
{ 
alea=rand()%3+1; 
alea1=rand()%3+1; 
alea2=rand()%3+1; 
T[3*i]=alea; 
T[3*i+1]=alea1; 
T[3*i+2]=alea2; 
} 
while((alea==alea1) || (alea==alea2) || (alea1==alea2)); 

i=1; 
ch=1; 
k=1; 
temp=0; 
nbr=50; 
do 
{ 
printf("vous êtes dans la pièce n° %d ",i); 
printf("il y a 3 leviers, un choix s'offre à  vous\n"); 
printf("il vous reste %d marqueurs\n",nbr); 
for(m=0 ; m<=2 ; m++); 
{ 
if(T2[3*i+m]==1); 
printf("A\n"); 
} 
do 
{ 
printf("quel levier voulez vous tirez?"); 
scanf("%d",&choix); 
} 
while(choix>3 || choix<0); 
if((T[3*i+choix]==1) && (i<=1)) 
{ 
printf("vous avez gagné la partie ! ! !\n"); 
return; 
} 
if((T[3*i+choix]==1) && (i!=1)) 
{ 
printf("le levier vous téléporte dans la piece précedente\n"); 
if(nbr>=1) 
{ 
printf("voulez vous marquer ce levier?(oui:1)"); 
scanf("%d",&a); 
if(a==1) 
{ 
nbr=nbr-1; 
T2[3*i+choix]=1; 


} 
temp=i; 
i=k; 
k=temp;

Dernière modification par fred____89 (Le 07/05/2006, à 17:15)

Hors ligne

#2 Le 07/05/2006, à 17:19

Bobbybionic

Re : message d'erreur indescriptible

Les balises "Code" elles sont cool je trouve...

big_smile


Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.

http://bobbybionic.wordpress.com

Hors ligne

#3 Le 07/05/2006, à 17:20

fred____89

Re : message d'erreur indescriptible

Bobbybionic a écrit :

Les balises "Code" elles sont cool je trouve...

big_smile

comment ca

Hors ligne

#4 Le 07/05/2006, à 17:28

Desintegr

Re : message d'erreur indescriptible

Tu dois d'abord déclarer tes fonctions avant de les utiliser.

Deux solutions.
Soit tu mets ton main à la fin.
Soit tu utilises un fichier .h avec la déclaration de chaque fonction dedans.


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#5 Le 07/05/2006, à 17:33

fred____89

Re : message d'erreur indescriptible

j'essai et je te redit ca tu sera encore la enfin j'espere

Hors ligne

#6 Le 07/05/2006, à 17:38

pabix

Re : message d'erreur indescriptible

déplace les lignes de void menu (); à void chambre (int*, int*); hors de ta fonction main, au début

Benoit


Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D

Hors ligne

#7 Le 07/05/2006, à 17:55

fred____89

Re : message d'erreur indescriptible

pabix a écrit :

déplace les lignes de void menu (); à void chambre (int*, int*); hors de ta fonction main, au début

Benoit

j'ai fait ce que tu ma dit mais je me retrouve avec un code qui est le suivant


/tmp/cc7hUpkr.o:dans la fonction jeu
jeu1.c:(.text+0xf5):reference indefinie vers chambre
collect 2:ld a retourne 1 code d'"etat d'execution

si vous savait ce qu'il faut faire dite le moi vous serait cool

Dernière modification par fred____89 (Le 07/05/2006, à 17:57)

Hors ligne

#8 Le 07/05/2006, à 17:58

pabix

Re : message d'erreur indescriptible

Quelle commande utilises-tu pour compiler ?

Fais-tu un

gcc -o fichier fichier.c

?


Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D

Hors ligne

#9 Le 07/05/2006, à 17:59

fred____89

Re : message d'erreur indescriptible

j'utilise deja cette commande pour compiler

Hors ligne

#10 Le 07/05/2006, à 18:45

Riicooo

Re : message d'erreur indescriptible

pourrais-tu reposter ton code modifié ?
le premier post ne contient pas la fin du fichier

Dernière modification par Riicooo (Le 07/05/2006, à 18:46)

Hors ligne

#11 Le 07/05/2006, à 19:03

fred____89

Re : message d'erreur indescriptible

le voila

#include<stdio.h>
void menu();//fonction affichage du menu 
void jeu();//fonction "moteur" du jeu 
void options();//fonction options 
void creachambre(int*);//fonction creation des pieces 
void chambre(int*,int*);//fonction au sein d'une piece 
main()
{
menu();
} 
void menu()
{ 
int choix,test; 
test=0; 
printf("|*************************************|\n"); 
printf("| le labyrinthe du |\n"); 
printf("| sorcier |\n"); 
printf("|*************************************|\n"); 
printf("\n"); 
printf("que voulez vous faire?\n"); 
printf("j:jouer\n"); 
printf("q:quitter\n"); 
scanf("%c",&choix); 
if(choix=='j'); 
	jeu();
}  
void jeu() 
{ 
int Tchambre[150]; 
int Tmystere[150]; 
creachambre(&Tchambre[0]); 
chambre(&Tchambre[0],&Tmystere[0]); 
} 
void creachambre(int *T) 
{ 
int i,j,alea,alea1,alea2; 
unsigned int t; 
t=time(); 
srand(t); 
for( i=0 ; i<50 ;i++) 


do 
{ 
alea=(rand()%3+1); 
alea1=(rand()%3+1); 
alea2=(rand()%3+1); 
T[3*i]=alea; 
T[3*i+1]=alea1; 
T[3*i+2]=alea2; 
} 
while((alea==alea1) || (alea==alea2) || (alea1==alea2)); 
void chambre(int*T,int*T2) 
{ 
int i,alea,alea1,alea2,choix,ch,k,temp,j,a,nbr,m; 
unsigned int t; 
t=time(); 
srand(t); 
for( i=0 ; i<50 ;i++) 
do 
{ 
alea=rand()%3+1; 
alea1=rand()%3+1; 
alea2=rand()%3+1; 
T[3*i]=alea; 
T[3*i+1]=alea1; 
T[3*i+2]=alea2; 
} 
while((alea==alea1) || (alea==alea2) || (alea1==alea2)); 
i=1; 
ch=1; 
k=1; 
temp=0; 
nbr=50; 
do 
{ 
printf("vous etes dans la piece n° %d ",i); 
printf("il y a 3 leviers, un choix s'offre a vous\n"); 
printf("il vous reste %d marqueurs\n",nbr); 
for(m=0 ; m<=2 ; m++); 
{ 
if(T2[3*i+m]==1); 
printf("A\n"); 
} 
do 
{ 
printf("quel levier voulez vous tirez?"); 
scanf("%d",&choix); 
} 
while(choix>3 || choix<0); 
if((T[3*i+choix]==1) && (i<=1)) 
{ 
printf("vous avez gagné la partie ! ! !\n"); 
return; 
} 
if((T[3*i+choix]==1) && (i!=1)) 
{ 
printf("le levier vous téléporte dans la piece précedente\n"); 
if(nbr>=1) 
{ 
printf("voulez vous marquer ce levier?(oui:1)"); 
scanf("%d",&a); 
if(a==1) 
{ 
nbr=nbr-1; 
T2[3*i+choix]=1; 
} 
temp=i; 
i=k; 
k=temp; 
} 
} 
if((T[3*i+choix]==2) && (i==1)) 
{ 
printf("Vous restez dans la même pièce\n"); 
if(nbr>=1) 
{ 
printf("voulez vous marquer ce levier?(oui:1)"); 
scanf("%d",&a); 
if(a==1) 
{ 
nbr=nbr-1; 
T2[3*i+choix]=2; 
} 
temp=i; 
i=k; 
k=temp; 
} 
} 
if((T[3*i+choix]==2) && (i!=1)) 
{ 
printf("le levier vous teleporte au hasard dans une piece que vous avez deja  visiter...\n"); 
if(nbr>=1) 
{ 
printf("voulez vous marquer ce levier?(oui:1)"); 
scanf("%d",&a); 
if(a==1) 
{ 
nbr=nbr-1; 
T2[3*i+choix]=2; 

} 
temp=i; 
i=k; 
k=temp; 
} 
k=i; 
do 
{ 
j=rand()%ch+1; 
} 
while(j==i); 
i=j; 
} 
if(T[3*i+choix]==3) 
{ 
printf("le levier vous téléporte dans une nouvelle pièce,identique à  celle ci...\n"); 
if(nbr>=1) 
{ 
printf("voulez vous marquer ce levier?(oui:1)"); 
scanf("%d",&a); 
if(a==1) 
{ 
nbr=nbr-1; 
T2[3*i+choix]=3; 
} 
temp=i; 
i=k; 
k=temp; 
} 
k=i; 
ch=ch+1; 
i=ch; 
} 
} 
while(i<50); 
printf("vous avez perdu la partie"); 
} 
}

Hors ligne

#12 Le 07/05/2006, à 19:28

Riicooo

Re : message d'erreur indescriptible

Oula !!
déjà, comme te le demandais Bobbybionic plus haut, tu devrais éditer ton post pour rajouter les balises Code
[ code ] et [ /code ]

enleve la derniere acolade du fichier et rajoute la avant la fonction chambre, comme ça (au passage, j'utilise ici les balises Code) :

#include<stdio.h>
void menu();//fonction affichage du menu
void jeu();//fonction "moteur" du jeu
void options();//fonction options
void creachambre(int*);//fonction creation des pieces
void chambre(int*,int*);//fonction au sein d'une piece
main()
{
menu();
}

void menu()
{
int choix,test;
test=0;
printf("|*************************************|\n");
printf("| le labyrinthe du |\n");
printf("| sorcier |\n");
printf("|*************************************|\n");
printf("\n");
printf("que voulez vous faire?\n");
printf("j:jouer\n");
printf("q:quitter\n");
scanf("%c",&choix);
if(choix=='j');
    jeu();
} 

void jeu()
{
int Tchambre[150];
int Tmystere[150];
creachambre(&Tchambre[0]);
chambre(Tchambre,Tmystere);
}

void creachambre(int *T)
{
int i,j,alea,alea1,alea2;
unsigned int t;
t=time();
srand(t);
for( i=0 ; i<50 ;i++)

do
{
alea=(rand()%3+1);
alea1=(rand()%3+1);
alea2=(rand()%3+1);
T[3*i]=alea;
T[3*i+1]=alea1;
T[3*i+2]=alea2;
}
while((alea==alea1) || (alea==alea2) || (alea1==alea2));
}


void chambre(int*T,int*T2)
{
int i,alea,alea1,alea2,choix,ch,k,temp,j,a,nbr,m;
unsigned int t;
t=time();
srand(t);
for( i=0 ; i<50 ;i++)
do
{
alea=rand()%3+1;
alea1=rand()%3+1;
alea2=rand()%3+1;
T[3*i]=alea;
T[3*i+1]=alea1;
T[3*i+2]=alea2;
}
while((alea==alea1) || (alea==alea2) || (alea1==alea2));
i=1;
ch=1;
k=1;
temp=0;
nbr=50;
do
{
printf("vous etes dans la piece n° %d ",i);
printf("il y a 3 leviers, un choix s'offre a vous\n");
printf("il vous reste %d marqueurs\n",nbr);
for(m=0 ; m<=2 ; m++);
{
if(T2[3*i+m]==1);
printf("A\n");
}
do
{
printf("quel levier voulez vous tirez?");
scanf("%d",&choix);
}
while(choix>3 || choix<0);
if((T[3*i+choix]==1) && (i<=1))
{
printf("vous avez gagné la partie ! ! !\n");
return;
}
if((T[3*i+choix]==1) && (i!=1))
{
printf("le levier vous téléporte dans la piece précedente\n");
if(nbr>=1)
{
printf("voulez vous marquer ce levier?(oui:1)");
scanf("%d",&a);
if(a==1)
{
nbr=nbr-1;
T2[3*i+choix]=1;
}
temp=i;
i=k;
k=temp;
}
}
if((T[3*i+choix]==2) && (i==1))
{
printf("Vous restez dans la même pièce\n");
if(nbr>=1)
{
printf("voulez vous marquer ce levier?(oui:1)");
scanf("%d",&a);
if(a==1)
{
nbr=nbr-1;
T2[3*i+choix]=2;
}
temp=i;
i=k;
k=temp;
}
}
if((T[3*i+choix]==2) && (i!=1))
{
printf("le levier vous teleporte au hasard dans une piece que vous avez deja  visiter...\n");
if(nbr>=1)
{
printf("voulez vous marquer ce levier?(oui:1)");
scanf("%d",&a);
if(a==1)
{
nbr=nbr-1;
T2[3*i+choix]=2;

}
temp=i;
i=k;
k=temp;
}
k=i;
do
{
j=rand()%ch+1;
}
while(j==i);
i=j;
}
if(T[3*i+choix]==3)
{
printf("le levier vous téléporte dans une nouvelle pièce,identique à  celle ci...\n");
if(nbr>=1)
{
printf("voulez vous marquer ce levier?(oui:1)");
scanf("%d",&a);
if(a==1)
{
nbr=nbr-1;
T2[3*i+choix]=3;
}
temp=i;
i=k;
k=temp;
}
k=i;
ch=ch+1;
i=ch;
}
}
while(i<50);
printf("vous avez perdu la partie");
}

ça compile chez moi

Dernière modification par Riicooo (Le 07/05/2006, à 19:29)

Hors ligne

#13 Le 07/05/2006, à 19:54

fred____89

Re : message d'erreur indescriptible

oui je ve bien le faire mais a quoi ca va servir explique toi

Hors ligne

#14 Le 07/05/2006, à 20:00

Riicooo

Re : message d'erreur indescriptible

bin ça va compiler...

voir :

...
while((alea==alea1) || (alea==alea2) || (alea1==alea2));
void chambre(int*T,int*T2)
...

ça me choque !!

tu déclare une fonction dans une autre !
je sais qu'on peut le faire en Pascal, mais en C, je crois pas, ou alors, si t'as le droit, elle n'est "visible" (tu ne peux pas l'appeler ailleurs) que dans le groupe d'acolades où elle est écrite...

Dernière modification par Riicooo (Le 07/05/2006, à 20:03)

Hors ligne

#15 Le 07/05/2006, à 20:12

fred____89

Re : message d'erreur indescriptible

en fait j'ai trouver mais g un autre soucit je voudrait si tusait comment on pourrait faire pour incorporer des marqueur au jeu
merci de vos suggestion

Hors ligne

#16 Le 07/05/2006, à 20:19

Riicooo

Re : message d'erreur indescriptible

Des marqueurs ??
explique toi

Dernière modification par Riicooo (Le 07/05/2006, à 20:20)

Hors ligne

#17 Le 07/05/2006, à 20:29

fred____89

Re : message d'erreur indescriptible

enfaite il faudrait qu'a chaque fois que le joueur appui sur un levier qu'il ait la possibiliter de pouvoir soit afficher un seul marqueur dans la piece soit de ne pas en indiquer merci de vos suggestions

Hors ligne

#18 Le 07/05/2006, à 20:53

Riicooo

Re : message d'erreur indescriptible

J'ai pas essayé de comprendre le code, j'ai juste essayé de le compiler...

Dernière modification par Riicooo (Le 07/05/2006, à 20:53)

Hors ligne

#19 Le 07/05/2006, à 21:58

fred____89

Re : message d'erreur indescriptible

est que tu as reussi si non place une accolade de fin entre
Code:
...
while((alea==alea1) || (alea==alea2) || (alea1==alea2));
}
void chambre(int*T,int*T2)
...
et il se compilera donc apres tu verra peut etre comment le modifier pour que les marqueurs fonctionne d'avance merci beaucoup

Hors ligne

#20 Le 07/05/2006, à 22:26

Riicooo

Re : message d'erreur indescriptible

tu m'expliques ce que je t'ai dit juste avant ?

Je ne vais pas te macher le travaille désolé...

en plus ça n'a rien à voir avec Ubuntu là, et tu n'est pas sur un forum d'aide à la prog !

Tu pourrais faire un effort pour écrire correctement ! (chui pas un exemple vu le nombre de fautes que je fais mais bon, quand même !)

Dernière modification par Riicooo (Le 07/05/2006, à 22:29)

Hors ligne

#21 Le 07/05/2006, à 23:27

fred____89

Re : message d'erreur indescriptible

non je sais ke ce né pas a toi de le faire mais ca serait si tu pouvait juste m'aiguille histoire que je ne soit pas bloque pour finir mon jeu et que je puisse attaquer les graphisme

Hors ligne

#22 Le 07/05/2006, à 23:35

Riicooo

Re : message d'erreur indescriptible

Bin si tu n'arrives pas à faire des choses simples comme celles que tu demandes, la suite va pas être drole ! surtout si tu comptes faire du graphique...
PS : s'il te plait, arrêtes le langage SMS et utilises un peu des signes de ponctuation !

Hors ligne

#23 Le 07/05/2006, à 23:43

fred____89

Re : message d'erreur indescriptible

ok, mais je suis plus fort en graphisme qu'en programmation.
donc , tu ne vois vraiment pas comment je pourrait faire?
merci

Hors ligne

#24 Le 07/05/2006, à 23:57

Riicooo

Re : message d'erreur indescriptible

t'es ptetre bon en graphisme, mais la tu parle de programmation graphique...

et désolé, je n'ai ni le courrage, ni l'envie de regarder ton code (en plus il n'est ni indenté, ni commenté !)...

un autre peut etre ? pour le relai...

PS : j'apprécie l'effort d'écriture du dernier post ! merci wink

Dernière modification par Riicooo (Le 07/05/2006, à 23:59)

Hors ligne

#25 Le 08/05/2006, à 15:56

fred____89

Re : message d'erreur indescriptible

autre petit souci je voudrait savoir si cet syntaxe et correct car je n'ai pas le resultat attendu.

val=rand()%3+1;
t[i][1]=val;

en faite, ce que je veux faire, c'est d'affecter dans un tableau une valeur,mais ca ne marche. pourquoi?
merci.

Dernière modification par fred____89 (Le 08/05/2006, à 15:59)

Hors ligne