unnamed-platformer/src/main.c

62 lines
1.4 KiB
C

#include <gint/keyboard.h>
#include "draw.h"
#include "collide.h"
#include "levels.h"
void jump_test(char *jump_pressed, char *jump_buffer); //test if jump pressed
int main(void)
{
char level[100];
char *level_ptr;
level_ptr = level;
unsigned char level_id = 0;
char jump_pressed = 0; //avoid holding jump
char jump_buffer = 0; //jump buffer, last 3 frames
double vspd = 0; //player vertical speed
char hspd = 0; //player horizontal speed
char on_ground = 6; //remember if player is on solid
int player_x = 0;
int player_y = 0;
int old_x, old_y;
const double jump_spd = -4; //default jump speed
const double grav = 0.2;
dclear(0); //0 -> black
draw_level(level, &player_x, &player_y);
old_x = player_x + 1; //offset to draw it on first cycle
old_y = player_y;
get_level(level_id, level);
while (1) {
draw_player(old_x, old_y, player_x, player_y);
dupdate();
old_x = player_x;
old_y = player_y;
pollevent();
//horizontal movement
hspd = 0;
if (keydown(KEY_LEFT)) hspd--;
if (keydown(KEY_RIGHT)) hspd++;
if (!collide(player_x + hspd, player_y, level, '0', 10))
{
player_x += hspd;
}
//vertical movement
jump_test(&jump_pressed, &jump_buffer);
if (jump_buffer) {}//if jump is pressed
if (keydown(KEY_EXIT)) return 0; //exit
}
}
void jump_test(char *jump_pressed, char *jump_buffer)
{
if (keydown(KEY_SHIFT))
{
if (!*jump_pressed)
{
*jump_pressed = 1;
*jump_buffer = 3;
}
}
else *jump_pressed = 0;
}