From d0842af039893f65fe886997622834ea32e0027c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Patrick=20Sch=C3=B6nberger?= Date: Sat, 26 Sep 2020 16:14:46 +0200 Subject: [PATCH] key repeat, zoom --- lvl/0.txt | 31 ++++++++++++++++ lvl/1.txt | 40 ++++++++++---------- src/main.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 147 insertions(+), 27 deletions(-) create mode 100644 lvl/0.txt diff --git a/lvl/0.txt b/lvl/0.txt new file mode 100644 index 0000000..0245359 --- /dev/null +++ b/lvl/0.txt @@ -0,0 +1,31 @@ ++--------------------------------------------------------+ +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| | +| ? | +| | +| | +| XXX O | +| XXXXX| +| XXXXXXXXXXX| +| XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX| +| S XXXXXXXXXXXXXXXX/\/\XXXXXXXXXXXXXXXXXX| ++--------------------------------------------------------+ \ No newline at end of file diff --git a/lvl/1.txt b/lvl/1.txt index bc556f6..d84bddc 100644 --- a/lvl/1.txt +++ b/lvl/1.txt @@ -8,24 +8,24 @@ | | | | | S | -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- -XXXXXXXXXXXXXXXXXXXXXXXXX| -|XXXXXXXXXXXXXXXXXXXXXXXXXX- O -XXXXXXXXXXXXXXXXXXXXXXXXX| +|XXXXXXXXXXXXXXXXXXXXXXXXXX> O ') move_to(spawn_x, spawn_y); } @@ -334,6 +342,15 @@ void load_level(int l, bool terminate = true) { sprintf(title, "%d.txt - Editor", lvl); hwnd = FindWindowA(NULL, title); + SetWindowPos(hwnd, HWND_TOP, 100, 100, 960, 905, SWP_SHOWWINDOW); + SetFocus(hwnd); + + for (int i = 0; i < 10; i++) { + press_down(VK_CONTROL); + press(VK_OEM_PLUS); + press_up(VK_CONTROL); + } + setup(); } @@ -347,7 +364,7 @@ void intro() { break; case 1: update_play(false); - if (x == 5) { + if (x == 17) { print_text(4, 4, "Jump with up.", text_speed); print_text(4, 6, "Stand on x.", text_speed); progress++; @@ -355,13 +372,13 @@ void intro() { break; case 2: update_play(); - if (x == 8) { + if (x == 22) { print_text(4, 8, "Collect ? for ???.", text_speed); progress++; } break; case 3: - update_play(true, 0, 22); + update_play(true, 0, 33); if (get_block(x, y) == '?') { print_text(4, 10, "Avoid /\\.", text_speed); progress++; @@ -383,7 +400,18 @@ void intro() { } } -void lvl1() { update_play(); } +void lvl1() { + static int progress = 0; + switch (progress) { + case 0: + print_text(4, 2, "Also avoid > and <.", text_speed); + progress++; + break; + case 1: + update_play(); + break; + } +} void update_game() { switch (lvl) { @@ -396,14 +424,75 @@ void update_game() { } } +void enter_keys(std::string input, int delay) { + for (int i = 0; i < input.size(); i++) { + if (input[i] == 't') { + press(VK_TAB); + Sleep(delay); + } + else if (input[i] == 's') { + press(VK_SPACE); + Sleep(delay); + } + else if (input[i] == '~') { + press_down(VK_LSHIFT); + enter_keys(input.substr(i+1, 1), delay); + press_up(VK_LSHIFT); + i++; + } + else { + int n = 0; + int len = 0; + while (input[i+len] >= '0' && input[i+len] <= '9') { + n *= 10; + n += input[i+len] - '0'; + len++; + } + for (int j = 0; j < n; j++) { + if (input[i+len] == '~') { + enter_keys(input.substr(i+len, 2), delay); + } + else { + enter_keys(input.substr(i+len, 1), delay); + } + } + if (input[i+len] == '~') + i++; + i += len; + } + } +} + +void toggle_key_repeat() { + WinExec("c:\\windows\\system32\\control.exe /name Microsoft.EaseOfAccessCenter /page pageKeyboardEasierToUse", SW_NORMAL); + Sleep(500); + + enter_keys("6ts9ts7~ts13ts5~tss6ts", 10); + + Sleep(100); + + press_down(VK_CONTROL); + press('W'); + press_up(VK_CONTROL); + + Sleep(1000); +} + /* Todo: - Msg Box Intro - Multi Jump - more blocks/lvls - Set Accessibility + - Lua? + - Scrolling? */ +#ifdef CONSOLE int main(int argc, char **argv) { +#else +int WinMain(HINSTANCE a0, HINSTANCE a1, LPSTR a2, int a3) { +#endif + toggle_key_repeat(); // Dies zu programmieren mit der reduzierten Inputrate. // Ist nicht angenehm. Ich werde es ändern....... @@ -452,10 +541,10 @@ int main(int argc, char **argv) { keys_old[3] = keys[3]; WaitForSingleObject(pi.hProcess, wait_time); - - SetWindowPos(hwnd, HWND_TOPMOST, 100, 100, 500, 500, SWP_SHOWWINDOW); } + toggle_key_repeat(); + destroydikeyboard(); // Close process and thread handles. -- 2.50.1