diff --git a/display.c b/display.c index 0ef9822..eac78fc 100644 --- a/display.c +++ b/display.c @@ -3,11 +3,12 @@ void screenDisplay( unsigned short int **tab,int size) { + char element[7] ={' ','#','S','.','*','@','+'} ; for(int i=0;ix+direction.x][playerPos->y+direction.y]; + short int valueOfNPlusOneCase=tab[playerPos->x+direction.x*2][playerPos->y+direction.y*2]; short int returnValue = canIGoDirection(valueOfNCase,valueOfNPlusOneCase); - short int playerState =tab[playerPos.x][playerPos.y]; + short int playerState =tab[playerPos->x][playerPos->y]; switch(returnValue) { case 0: + break; case 1: //move player - if(playerState==PLAYER_ON_TARGET){tab[playerPos.x][playerPos.y] = TARGET;} - else{ tab[playerPos.x][playerPos.y] = EMPTY;} - tab[playerPos.x+direction.x][playerPos.y+direction.y] = PLAYER; + if(playerState==PLAYER_ON_TARGET){tab[playerPos->x][playerPos->y] = TARGET;} + else{ tab[playerPos->x][playerPos->y] = EMPTY;} + tab[playerPos->x+direction.x][playerPos->y+direction.y] = PLAYER; break; case 2: //move player and the box - if(playerState==PLAYER_ON_TARGET){tab[playerPos.x][playerPos.y] = TARGET;} - else{ tab[playerPos.x][playerPos.y] = EMPTY;} - tab[playerPos.x+direction.x][playerPos.y+direction.y] = PLAYER; - tab[playerPos.x+direction.x*2][playerPos.y+direction.y*2] = BOX; + if(playerState==PLAYER_ON_TARGET){tab[playerPos->x][playerPos->y] = TARGET;} + else{ tab[playerPos->x][playerPos->y] = EMPTY;} + tab[playerPos->x+direction.x][playerPos->y+direction.y] = PLAYER; + tab[playerPos->x+direction.x*2][playerPos->y+direction.y*2] = BOX; break; case 3: //move player and the box is well-placed - if(playerState==PLAYER_ON_TARGET){tab[playerPos.x][playerPos.y] = TARGET;} - else{ tab[playerPos.x][playerPos.y] = EMPTY;} - tab[playerPos.x+direction.x][playerPos.y+direction.y] = PLAYER; - tab[playerPos.x+direction.x*2][playerPos.y+direction.y*2] = BOX_ON_TARGET; + if(playerState==PLAYER_ON_TARGET){tab[playerPos->x][playerPos->y] = TARGET;} + else{ tab[playerPos->x][playerPos->y] = EMPTY;} + tab[playerPos->x+direction.x][playerPos->y+direction.y] = PLAYER; + tab[playerPos->x+direction.x*2][playerPos->y+direction.y*2] = BOX_ON_TARGET; break; case 4: //move player on a target - if(playerState==PLAYER_ON_TARGET){tab[playerPos.x][playerPos.y] = TARGET;} - else{ tab[playerPos.x][playerPos.y] = EMPTY;} - tab[playerPos.x+direction.x][playerPos.y+direction.y] = PLAYER_ON_TARGET; + if(playerState==PLAYER_ON_TARGET){tab[playerPos->x][playerPos->y] = TARGET;} + else{ tab[playerPos->x][playerPos->y] = EMPTY;} + tab[playerPos->x+direction.x][playerPos->y+direction.y] = PLAYER_ON_TARGET; break; case 5: //move box and player on a target - if(playerState==PLAYER_ON_TARGET){tab[playerPos.x][playerPos.y] = TARGET;} - else{ tab[playerPos.x][playerPos.y] = EMPTY;} - tab[playerPos.x+direction.x*2][playerPos.y+direction.y*2] = BOX; - tab[playerPos.x+direction.x][playerPos.y+direction.y] = PLAYER_ON_TARGET; + if(playerState==PLAYER_ON_TARGET){tab[playerPos->x][playerPos->y] = TARGET;} + else{ tab[playerPos->x][playerPos->y] = EMPTY;} + tab[playerPos->x+direction.x*2][playerPos->y+direction.y*2] = BOX; + tab[playerPos->x+direction.x][playerPos->y+direction.y] = PLAYER_ON_TARGET; break; case 6: //move player on a target and box on a target - if(playerState==PLAYER_ON_TARGET){tab[playerPos.x][playerPos.y] = TARGET;} - else{ tab[playerPos.x][playerPos.y] = EMPTY;} - tab[playerPos.x+direction.x*2][playerPos.y+direction.y*2] = BOX_ON_TARGET; - tab[playerPos.x+direction.x][playerPos.y+direction.y] = PLAYER_ON_TARGET; + if(playerState==PLAYER_ON_TARGET){tab[playerPos->x][playerPos->y] = TARGET;} + else{ tab[playerPos->x][playerPos->y] = EMPTY;} + tab[playerPos->x+direction.x*2][playerPos->y+direction.y*2] = BOX_ON_TARGET; + tab[playerPos->x+direction.x][playerPos->y+direction.y] = PLAYER_ON_TARGET; break; + default: + printf("Commande inconnue !\n"); } if(returnValue!=0) { - playerPos.x = playerPos.x+direction.x; - playerPos.y = playerPos.y+direction.y; + + playerPos->x = playerPos->x+direction.x; + playerPos->y = playerPos->y+direction.y; + } + direction.x = 0; + direction.y = 0; } + +void getStartPlayerPos(unsigned short int **tab2d, short int size, vect *playerPos ) +{ + for(int i=0;ix=i; + playerPos->y=j; + } + } + } +} + + + +void inGameLoop(unsigned short int **tab2d,vect *playerPos ) +{ + vect direction={0,0}; + char input; + + while (1) { + + + printf("Utilisez Z/Q/S/D pour bouger, X pour quitter : "); + + input = getchar(); + + if (input == 'x') { + break; // Quitter le jeu + } + + + + + switch (input) { + case 'd': + direction.y=1; + direction.x=0; + move(tab2d,playerPos, direction); + break; + case 'q': + direction.y=-1; + direction.x=0; + move(tab2d,playerPos, direction); + break; + case 'z': + direction.x=-1; + direction.y=0; + move(tab2d,playerPos, direction); + break; + case 's': + direction.x=1; + direction.y=0; + move(tab2d,playerPos, direction); + break; + default: + direction.x=0; + direction.y=0; + + } + + + printf("\n"); + screenDisplay(tab2d, 32); + + + } +} + diff --git a/function.h b/function.h index 66a5e8d..847d3e6 100644 --- a/function.h +++ b/function.h @@ -12,12 +12,15 @@ #define PLAYER_ON_TARGET 6 typedef struct Vecteur { - short int x; - short int y; + int x; + int y; } vect; unsigned short int **creatArea2D(const unsigned int N); +void screenDisplay( unsigned short int **tab,int size); +void getStartPlayerPos(unsigned short int **tab2d, short int size, vect *playerPos ); +void inGameLoop(unsigned short int **tab2d,vect *playerPos ); #endif // FONCTION_H diff --git a/main.c b/main.c index c0b8fb9..24b43bb 100644 --- a/main.c +++ b/main.c @@ -9,5 +9,9 @@ int main() fileToTab2D("test.txt", tab2d, 32); screenDisplay(tab2d, 32); printf("main\n"); + vect *playerPos = (vect *)malloc(sizeof(vect)); + getStartPlayerPos(tab2d,32,playerPos); + inGameLoop(tab2d,playerPos); + free(playerPos); return 0; }