X-Git-Url: https://gitweb.ps.run/npengine/blobdiff_plain/e1f391822f6d5c036c688fb17c60f66eab253ae1..c47a4ede7263d01732182b3393b6a20163b8e2eb:/src/main.cpp diff --git a/src/main.cpp b/src/main.cpp index 5b98797..c0272ac 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -209,29 +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) { +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(); if (keys[0] && - x > 0 && + x > x_min && get_block(x - 1, y) != 'x') move(-1, 0); if (keys[1] && - x < WIDTH - 1 && + x < x_max && get_block(x + 1, y) != 'x') move(+1, 0); } - // bool left = false; - // bool right = false; - // bool up = false; - // bool down = false; - if (keys[2] && !keys_old[2] && jumping == 0 && can_jump) { jumping = 1; move(0, -1); @@ -253,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); @@ -281,17 +260,40 @@ 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 GS_INTRO2: + 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 4: + update_play(); + break; + } +} + +void update_game() { + switch (lvl) { + case 0: + intro(); break; } }