Skip to content
Snippets Groups Projects
Commit 357a54fd authored by belkhiritaha's avatar belkhiritaha
Browse files

ajout du mouvement du joueur

parent 0f8e4f50
No related branches found
No related tags found
No related merge requests found
#include "gest_event.h" #include "gest_event.h"
int Keys[NB_KEYS];
void gestMenu(){ void gestMenu(){
SDL_Event event; SDL_Event event;
while (SDL_PollEvent(&event)){ while (SDL_PollEvent(&event)){
...@@ -45,10 +47,18 @@ void gestGame(){ ...@@ -45,10 +47,18 @@ void gestGame(){
player.angle += 0.01; player.angle += 0.01;
if (player.angle > 2*pi) player.angle -= 2*pi; if (player.angle > 2*pi) player.angle -= 2*pi;
} }
else if (event.motion.xrel < 0){ if (event.motion.xrel < 0){
player.angle -= 0.01; player.angle -= 0.01;
if (player.angle < 0) player.angle += 2*pi; if (player.angle < 0) player.angle += 2*pi;
} }
if (event.motion.yrel > 0){
player.viewAngle -= 1;
}
if (event.motion.yrel < 0){
player.viewAngle += 1;
}
player.deltax = cos(player.angle);
player.deltay = sin(player.angle);
case SDL_KEYUP: case SDL_KEYUP:
switch (event.key.keysym.sym) switch (event.key.keysym.sym)
...@@ -57,15 +67,54 @@ void gestGame(){ ...@@ -57,15 +67,54 @@ void gestGame(){
running = 0; running = 0;
continue; continue;
case SDLK_z:
Keys[2] = 1;
continue;
case SDLK_d:
Keys[3] = 1;
continue;
case SDLK_s:
Keys[0] = 1;
continue;
case SDLK_q:
Keys[1] = 1;
continue;
default: default:
continue; continue;
} }
break;
case SDL_KEYDOWN:
switch (event.key.keysym.sym)
{
case SDLK_z:
Keys[2] = 0;
continue;
case SDLK_d:
Keys[3] = 0;
continue;
case SDLK_s:
Keys[0] = 0;
continue;
case SDLK_q:
Keys[1] = 0;
continue;
}
default: default:
continue; continue;
} }
} }
managePlayer();
SDL_Delay(5); SDL_Delay(5);
} }
......
...@@ -5,6 +5,10 @@ ...@@ -5,6 +5,10 @@
#include "main.h" #include "main.h"
#include "render.h" #include "render.h"
#define NB_KEYS 10
extern int Keys[NB_KEYS];
void *EventLoop(void *arg); void *EventLoop(void *arg);
#endif #endif
\ No newline at end of file
...@@ -3,12 +3,32 @@ ...@@ -3,12 +3,32 @@
player_t player; player_t player;
void initPlayer(){ void initPlayer(){
player.x= 2*BLOCK_SIZE; player.x= 4*BLOCK_SIZE;
player.y= 2*BLOCK_SIZE; player.y= 4*BLOCK_SIZE;
player.speed = 1; player.speed = 1;
player.isMoving = 0; player.isMoving = 0;
player.HPMax = 3; player.HPMax = 3;
player.currentHP = player.HPMax; player.currentHP = player.HPMax;
player.coins = 0; player.coins = 0;
player.angle=0; player.angle=0;
player.deltax = cos(player.angle);
player.deltay = -sin(player.angle);
player.viewAngle = 0;
}
void manageMovement(){
float x_increment = (Keys[0] - Keys[2]) * player.deltax + (Keys[3] - Keys[1]) * sin(player.angle);
float y_increment = (Keys[0] - Keys[2]) * player.deltay + (Keys[1] - Keys[3]) * cos(player.angle);
float newpos_x = (player.x + x_increment)/BLOCK_SIZE;
float newpos_y = (player.y + y_increment)/BLOCK_SIZE;
if (newpos_x >= 0 && newpos_x < MAP_WIDTH && newpos_y >= 0 && newpos_y < MAP_HEIGHT){
if (map[(int)newpos_y][(int)newpos_x] == 0){
player.x += x_increment * MOVEMENT_SPEED;
player.y += y_increment * MOVEMENT_SPEED;
}
}
}
void managePlayer(){
manageMovement();
} }
\ No newline at end of file
...@@ -2,15 +2,17 @@ ...@@ -2,15 +2,17 @@
#define PLAYER_H #define PLAYER_H
#include "map.h" #include "map.h"
#include "render.h"
#define ENTITIES_UP 0 #define ENTITIES_UP 0
#define ENTITIES_DOWN 1 #define ENTITIES_DOWN 1
#define ENTITIES_LEFT 2 #define ENTITIES_LEFT 2
#define ENTITIES_RIGHT 3 #define ENTITIES_RIGHT 3
#define MOVEMENT_SPEED 2
typedef struct player{ typedef struct player{
int x; float x;
int y; float y;
int speed; int speed;
int isMoving; int isMoving;
int direction; int direction;
...@@ -18,10 +20,14 @@ typedef struct player{ ...@@ -18,10 +20,14 @@ typedef struct player{
int currentHP; int currentHP;
int coins; int coins;
float angle; float angle;
float deltax;
float deltay;
float viewAngle;
} player_t; } player_t;
extern player_t player; extern player_t player;
void initPlayer(); void initPlayer();
void managePlayer();
#endif #endif
\ No newline at end of file
...@@ -187,9 +187,9 @@ void drawRays(int map[][MAP_WIDTH]){ ...@@ -187,9 +187,9 @@ void drawRays(int map[][MAP_WIDTH]){
float lineH = (screenDimension.h/2)/distT; float lineH = (screenDimension.h/2)/distT;
rect.x = r; rect.x = r;
rect.y = screenDimension.h/2 - lineH; rect.y = (screenDimension.h/2 + player.viewAngle) - lineH;
rect.w = 1; rect.w = 1;
rect.h = (2 * screenDimension.w * lineH/200); rect.h = (2 * screenDimension.w * lineH/20);
if (disH < disV) { if (disH < disV) {
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#define FPS_TO_GET 60 #define FPS_TO_GET 60
#define CELL_SIZE 10 #define CELL_SIZE 10
#define DOF 8 #define DOF MAP_WIDTH
#define BLOCK_SIZE 64 #define BLOCK_SIZE 64
#define DR 0.0174533 #define DR 0.0174533
#define FOV_ANGLE 60 #define FOV_ANGLE 60
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
extern SDL_Window *window; extern SDL_Window *window;
extern SDL_Renderer *renderer; extern SDL_Renderer *renderer;
extern SDL_DisplayMode screenDimension;
void mainLoop(); void mainLoop();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment