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
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
A voir également:
- GCC et execution pour un snake
- Erreur d'execution 1004 ✓ - Forum VB / VBA
- Le service sans fil windows n'est pas en cours d'exécution sur cet ordinateur - Forum WiFi
- Gcc n'est pas reconnu en tant que commande interne - Forum C
- Erreur d'execution 6 dépassement de capacité ✓ - Forum Excel
- Erreur d'exécution 13 incompatibilité de type ✓ - Forum Programmation
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
4 mai 2014 à 13:31
hello
l'option -o attend le nom du futur exécutable, donc
l'option -o attend le nom du futur exécutable, donc
gcc -Wall -o monsnake monsnake.c
./monsnake
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
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 !
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 !
4 mai 2014 à 13:51