GCC et execution pour un snake

Résolu/Fermé
laurnaduj Messages postés 3 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 4 mai 2014 - 3 mai 2014 à 22:10
laurnaduj Messages postés 3 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 4 mai 2014 - 4 mai 2014 à 13:51
Bonjour,

Voila je débute et j'essaie de coder un snake.
Donc j'ai fais mon code et dans le terminal j'ai taper : gcc -Wall -o monsnake.c
il m'indique que ma compilation à reussi mais quand je veux l'éxécuter je note ./monsnake.c et il m'indique ./monsnake.c: Permission non accordée

Quelqu'un pourrait t-il m'aider ?



2 réponses

dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
4 mai 2014 à 13:31
hello
l'option -o attend le nom du futur exécutable, donc
gcc -Wall -o monsnake monsnake.c
./monsnake
1
laurnaduj Messages postés 3 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 4 mai 2014
4 mai 2014 à 13:51
merci
0
laurnaduj Messages postés 3 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 4 mai 2014
3 mai 2014 à 22:37
En fait j'ai réussi en changeant les droits en utilisant la commande chmod a+rwxX monsnake.c
mais maintenant un autre problème apparaît : quand j'exécute il me met :

./monsnake.c: ligne 7: typedef : commande introuvable
./monsnake.c: ligne 9: typedef : commande introuvable
./monsnake.c: ligne 10: struct : commande introuvable
./monsnake.c: ligne 11: struct : commande introuvable
./monsnake.c: ligne 12: int : commande introuvable
./monsnake.c: ligne 13: int : commande introuvable
./monsnake.c: ligne 14: ORDRE : commande introuvable
./monsnake.c: ligne 15: Erreur de syntaxe près du symbole inattendu « } »
./monsnake.c: ligne 15: '} ELT ;'

et je ne comprends pas pourquoi !!

mon code
->

#include <stdio.h>
#include <sys/select.h>
#define SIZEX 40
#define SIZEY 10

typedef enum { HAUT , BAS, GAUCHE, DROITE, SANS , EXIT, PAUSE } ORDRE ;

typedef struct elt{
struct elt *next ;
struct elt *prev ;
int posx;
int posy;
ORDRE dir;
} ELT ;

ELT *snake;
ELT *snakeQ;

// ------- GETCH ----------
#include <termios.h>
#include <unistd.h>

int kbhit (void)
{
struct timeval tv;
fd_set rdfs;

tv.tv_sec = 0;
tv.tv_usec = 0;

FD_ZERO(&rdfs);
FD_SET (STDIN_FILENO, &rdfs);

select(STDIN_FILENO+1, &rdfs, NULL, NULL, &tv);
return FD_ISSET(STDIN_FILENO, &rdfs);
}

int mygetch(void) // TODO non bloquant
{
struct termios oldt, newt;
int ch = -1;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
if( kbhit() > 0 )
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}




ORDRE getOrder(){
ORDRE ret = SANS;
int ch;

ch = mygetch() ;


// printf("%x --> \n", ch);


if (ch < 0)
ret = SANS ;

if ( ch == 0x1B )
ret = EXIT ;

if ( ch == 0x20 )
ret = PAUSE ;

if ( ch == 'y')
ret = HAUT ;

if ( ch == 'h')
ret = BAS ;

if ( ch == 'g')
ret = GAUCHE ;

if ( ch == 'j')
ret = DROITE ;

return ret;
}


// ------- GOTOXY ----------
#include <unistd.h>

void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}


// -------------------------
void drawBorders(){
int i, j;
for(i = 0; i < SIZEY; i++){
for( j = 0 ; j < SIZEX ; j++){
if(( i == 0 ) || (i == SIZEY-1))
printf("-");
else {
if(( j == 0 ) || (j == SIZEX-1))
printf("|");
else
printf(" ");
};
}
printf("\n");
}
}

//TODO init ELT en HORIZONTAL au milieu Tete a gauche
void createSnake(){
// tête
snake = (ELT*)malloc(sizeof(ELT));
snake->posx = size x/2 ; //Au milieu du plan de jeu en x
snake->posy = size y/2 ; //Au milieu du plan de jeu en y
snake->dir = GAUCHE ; //oriente vers gauche
snake->prev = NULL ; //pas de d'element avant

// corps
snake->next = (ELT*)malloc(sizeof(ELT));
snake-> = snake->next->posx=SIZEX/2+1 ; //Au milieu du plan de jeu en x + 1
snake-> = snake->next->posy=SIZEY/2 ; //Au milieu du plan de jeu en y
snake-> = snake->next->dir=GAUCHE ;
snake->next->prev=snake ; //corps pointe sur la tete

// queue
snakeQ = (ELT*)malloc(sizeof(ELT));

snakeQ->posx = SIZEX/2-1 ;
snakeQ->posy = SIZEY/2-1 ;
snakeQ->dir = DROITE ;
snakeQ->prev = snake->next; // Avant la Queue, on a le corps du serpent !!!
snakeQ->next = NULL ; //pas element derriere
}


int moveSnake(int dir){

if(dir == EXIT)
return -1 ;

// affiche ordre en bas à gauche
gotoxy(0,31);
if(dir == HAUT)
printf("HAUT ");
if(dir == BAS)
printf("BAS ");
if(dir == GAUCHE)
printf("GAUCHE");
if(dir == DROITE)
printf("DROITE");
fflush(stdout);



return 0;
}


int main(){
int result = 0 ;
int direction = 0 ;
int delayVal = 100000; // Latence de la boucle de jeu
drawBorders(); // Trace du cadre de jeu
// TO DO createSnake(); // Initialisation de la liste chainée
do
{
direction = getOrder(); // Recherche de la direction (clavier)
printf("direction %x\n",direction);
result = moveSnake(direction); // Déplacer le serpent dans la direction.
usleep(delayVal);
} while (result == 0); // Tant qu'on a pas perdu.
return 0 ;
}

Si quelqu'un pouvait m'aider ce serait vraiment sympa !
0