init
This commit is contained in:
commit
65582dddb0
|
@ -0,0 +1 @@
|
|||
kevin-la-bouteille
|
|
@ -0,0 +1,5 @@
|
|||
all:
|
||||
gcc main.c libraylib.a -o kevin-la-bouteille -lm
|
||||
|
||||
run: all
|
||||
./kevin-la-bouteille
|
Binary file not shown.
|
@ -0,0 +1,94 @@
|
|||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include "raylib.h"
|
||||
#include "raymath.h"
|
||||
|
||||
#define WINDOW_WIDTH 800
|
||||
#define WINDOW_HEIGHT 600
|
||||
#define PLAYER_WIDTH 60
|
||||
#define PLAYER_HEIGHT 80
|
||||
|
||||
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define CLAMP(var, min, max) (MIN(MAX((var), (min)), (max)))
|
||||
|
||||
typedef struct Player {
|
||||
Rectangle pos;
|
||||
float angle;
|
||||
} Player;
|
||||
|
||||
int main()
|
||||
{
|
||||
InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "kevin la bouteille");
|
||||
SetTargetFPS(60);
|
||||
|
||||
Player player = {
|
||||
.pos = {
|
||||
WINDOW_WIDTH/2,
|
||||
WINDOW_HEIGHT/2,
|
||||
PLAYER_WIDTH, PLAYER_HEIGHT
|
||||
},
|
||||
.angle = 0.0f,
|
||||
};
|
||||
|
||||
while (!WindowShouldClose()) {
|
||||
static float engine_force_left = 0.0f;
|
||||
static float engine_force_right = 0.0f;
|
||||
const float engine_force_loss = 0.25f;
|
||||
const float engine_force_speed = 0.4f;
|
||||
const float engine_speed_max = 10.0f;
|
||||
|
||||
if (IsKeyDown(KEY_D)) {
|
||||
engine_force_right += engine_force_speed;
|
||||
} else {
|
||||
engine_force_right -= engine_force_loss;
|
||||
}
|
||||
engine_force_right = CLAMP(engine_force_right, 0, engine_speed_max);
|
||||
if (IsKeyDown(KEY_A)) {
|
||||
engine_force_left += engine_force_speed;
|
||||
} else {
|
||||
engine_force_left -= engine_force_loss;
|
||||
}
|
||||
engine_force_left = CLAMP(engine_force_left, 0, engine_speed_max);
|
||||
player.angle += engine_force_right;
|
||||
player.angle -= engine_force_left;
|
||||
|
||||
Vector2 player_direction = {
|
||||
cos((player.angle - 90) * PI/180),
|
||||
sin((player.angle - 90) * PI/180),
|
||||
};
|
||||
player_direction = Vector2Scale(player_direction, MAX(engine_force_left, engine_force_right));
|
||||
player.pos.x += player_direction.x;
|
||||
player.pos.y += player_direction.y;
|
||||
|
||||
// printf("el: %f, er: %f, a: %f\n", engine_force_left, engine_force_right, player.angle);
|
||||
|
||||
// TODO: ne pas augmenter la velociter pendant le boost de l'engine
|
||||
// mais pouvoir qu'en meme avoir la gravité pendant la bouteille
|
||||
// vers le bas ou vers les coté
|
||||
static float gravity_velocity = 0.0f;
|
||||
const float gravity_force = 1.5f;
|
||||
// gravity_velocity += gravity_force;
|
||||
gravity_velocity = gravity_force;
|
||||
player.pos.y += gravity_velocity;
|
||||
|
||||
// TODO: prendre en consideration l'angle pour la collision,
|
||||
if (player.pos.y >= WINDOW_HEIGHT - player.pos.height/2) {
|
||||
player.pos.y = WINDOW_HEIGHT - player.pos.height/2;
|
||||
gravity_velocity = 0.0f;
|
||||
}
|
||||
|
||||
BeginDrawing();
|
||||
{
|
||||
ClearBackground(RAYWHITE);
|
||||
DrawRectanglePro(
|
||||
player.pos,
|
||||
(Vector2){player.pos.width/2, player.pos.height/2},
|
||||
player.angle, RED
|
||||
);
|
||||
DrawFPS(0, 0);
|
||||
}
|
||||
EndDrawing();
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue