#include #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; }