X-Git-Url: https://gitweb.ps.run/npengine/blobdiff_plain/e456e009de8d20dfc3dc743f82dbcbcb194a899c..c47a4ede7263d01732182b3393b6a20163b8e2eb:/src/main.cpp diff --git a/src/main.cpp b/src/main.cpp index 13778d5..c0272ac 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,19 +16,20 @@ const int WIDTH = 43, HEIGHT = 25; int x = 0, y = 0; bool right = true; +clock_t update_clock = clock(); +double update_time = 40; + bool keys[4] = { false, false, false, false }; bool keys_old[4] = { false, false, false, false }; int jumping = 0; clock_t jump_clock = clock(); -double jump_time1 = 0.01; -double jump_time2 = 0.05; +double jump_time1 = 50; +double jump_time2 = 100; int jump_height = 3; -DWORD wait_time = 50; - - +DWORD wait_time = 10; void press_down(WORD vk) { INPUT ip; @@ -208,33 +209,20 @@ void print_text(int text_x, int text_y, const char *text, int delay) { Sleep(100); } -enum GameState { - GS_START, GS_INTRO1, GS_INTRO2 -}; +void update_play(bool can_jump = true, int x_min = 0, int x_max = WIDTH - 1) { + if (get_dur(update_clock) >= update_time) { + update_clock = clock(); -clock_t update_clock = clock(); -double update_time = 30; + if (keys[0] && + x > x_min && + get_block(x - 1, y) != 'x') + move(-1, 0); + if (keys[1] && + x < x_max && + get_block(x + 1, y) != 'x') + move(+1, 0); + } -void update_play(bool can_jump = true) { - if (get_dur(update_clock) >= update_time) - update_clock = clock(); - else - return; - - // bool left = false; - // bool right = false; - // bool up = false; - // bool down = false; - - if (keys[0] && - x > 0 && - get_block(x - 1, y) != 'x') - move(-1, 0); - if (keys[1] && - x < WIDTH - 1 && - get_block(x + 1, y) != 'x') - move(+1, 0); - // else if (keys[2] && !keys_old[2] && jumping == 0 && can_jump) { jumping = 1; move(0, -1); @@ -256,26 +244,14 @@ void update_play(bool can_jump = true) { } if (!jumping && get_block(x, y + 1) != 'x' && y < HEIGHT - 1) move(0, +1); - - char block = get_block(x, y); - switch (block) { - case '/': - case '\\': - move_to(0, 24); - break; - case '?': - puts("?"); - break; - case 'O': - puts("O"); - break; - } } -enum GameState game_state = GS_START; -void update_game() { - switch (game_state) { - case GS_START: +int lvl = 0; + +void intro() { + static int progress = 0; + switch (progress) { + case 0: press(VK_DOWN); press(VK_RIGHT); press(VK_RIGHT); @@ -284,21 +260,44 @@ void update_game() { print_text(4, 2, "Move with left/right.", 30); - game_state = GS_INTRO1; + progress++; break; - case GS_INTRO1: + case 1: update_play(false); if (x == 5) { print_text(4, 4, "Jump with up.", 30); - game_state = GS_INTRO2; + print_text(4, 6, "Stand on x.", 30); + progress++; + } + break; + case 2: + update_play(); + if (x == 8) { + print_text(4, 8, "Collect ? for ???.", 30); + progress++; + } + break; + case 3: + update_play(true, 0, 22); + if (get_block(x, y) == '?') { + print_text(4, 10, "Avoid /\\.", 30); + progress++; } break; - case GS_INTRO2: + case 4: update_play(); break; } } +void update_game() { + switch (lvl) { + case 0: + intro(); + break; + } +} + /* Todo: - Restart @@ -369,7 +368,7 @@ int main(int argc, char **argv) { keys_old[2] = keys[2]; keys_old[3] = keys[3]; - WaitForSingleObject( pi.hProcess, 10); + WaitForSingleObject( pi.hProcess, wait_time); SetWindowPos(hwnd, HWND_TOPMOST, 100, 100, 750, 750, SWP_SHOWWINDOW); }