From 9923581f1b4966da3abdfef883203570b37fda2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E4=BC=A6N?= <1308964967@qq.com> Date: Mon, 22 Mar 2021 21:28:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80UTF-8=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\346\210\217\346\272\220\347\240\201.txt" | 168 ++-- ...\345\276\205\347\274\251\345\207\217).cpp" | 122 +-- ...\345\276\205\347\274\251\345\207\217).exe" | Bin 0 -> 152204 bytes .../BilibiliDemo.cpp" | 530 +++++----- .../BilibiliDemo.exe" | Bin 0 -> 527849 bytes ...7\347\211\251\347\220\206\347\211\210.txt" | 425 ++++---- ...6\212\233\347\211\251\347\272\277demo.txt" | 172 ++-- .../garvity.txt" | 918 ++++++++--------- ...6\350\257\221\345\215\263\345\217\257.txt" | 578 +++++------ ...2\350\241\214\347\274\226\350\257\221.txt" | 492 ++++----- ...213\345\272\217\346\226\207\344\273\266.c" | 272 ++--- .../helloworld.cpp" | 7 + ...23\346\236\204\344\275\223\347\211\210).c" | 262 ++--- ...6\345\272\231\351\200\203\344\272\241.txt" | 114 +-- .../Tips.txt" | 26 +- ...2\350\241\214\347\274\226\350\257\221.txt" | 90 +- .../Mario.cpp" | 942 ++++++++++++++++++ ...3\344\270\275\346\211\223\345\214\205.rar" | Bin 309432 -> 309596 bytes 18 files changed, 3033 insertions(+), 2085 deletions(-) create mode 100644 "\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\347\273\217\345\205\270\347\211\210demo(600\350\241\214\345\276\205\347\274\251\345\207\217).exe" create mode 100644 "\345\223\224\345\223\251\345\223\224\345\223\251\347\247\273\345\212\250\347\253\257/BilibiliDemo.exe" create mode 100644 "\346\265\213\350\257\225\346\226\207\344\273\266\345\244\271/helloworld.cpp" create mode 100644 "\350\266\205\347\272\247\347\216\233\344\270\275/Mario.cpp" diff --git "a/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\346\270\270\346\210\217\346\272\220\347\240\201.txt" "b/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\346\270\270\346\210\217\346\272\220\347\240\201.txt" index e3240e7..48b8727 100644 --- "a/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\346\270\270\346\210\217\346\272\220\347\240\201.txt" +++ "b/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\346\270\270\346\210\217\346\272\220\347\240\201.txt" @@ -1,25 +1,25 @@ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include #include -#include //用于rand +#include //鐢ㄤ簬rand #include #include #include -//■□ +//鈻犫枴 /*------------------------- -程序名: 俄罗斯方块Tetris Plus -程序作者: 404name -日志: -·人物移动格外算时间,有下降加快更新,上升同样,这时候不算随机数,平常走动随机数 -·win画面更新。开头介绍,胜利。下降时间控制 +绋嬪簭鍚嶏細 淇勭綏鏂柟鍧桾etris Plus +绋嬪簭浣滆咃細 404name +鏃ュ織锛 +路浜虹墿绉诲姩鏍煎绠楁椂闂达紝鏈変笅闄嶅姞蹇洿鏂帮紝涓婂崌鍚屾牱锛岃繖鏃跺欎笉绠楅殢鏈烘暟锛屽钩甯歌蛋鍔ㄩ殢鏈烘暟 +路win鐢婚潰鏇存柊銆傚紑澶翠粙缁嶏紝鑳滃埄銆備笅闄嶆椂闂存帶鍒 -----------------------*/ int map[500][500] = {0}; int color_map[500][500] = {0}; int check_sum[500][2] = {0}; int if_full; -//下标按顺序为 总分 应该下降的层数 -//逻辑顺序是谁 check_sun储存对应map层数的和,当满的时候,他向上的有值的层数就要增加相应的该降层数。 +//涓嬫爣鎸夐『搴忎负 鎬诲垎 搴旇涓嬮檷鐨勫眰鏁 +//閫昏緫椤哄簭鏄皝 check_sun鍌ㄥ瓨瀵瑰簲map灞傛暟鐨勫拰锛屽綋婊$殑鏃跺欙紝浠栧悜涓婄殑鏈夊肩殑灞傛暟灏辫澧炲姞鐩稿簲鐨勮闄嶅眰鏁般 int height, width, top; int start_x, start_y, tx, ty, x, y, times, cnt_time, old_index0, index0; int if_change, if_death, reduce_time; @@ -29,24 +29,24 @@ int now_color, next_color, next_next_color; int man_x, man_y, v, man_up_down; char man_top_right[3], man_buttom_left[3], man_top_left[3], man_buttom_right[3]; -char commom_man[5][3] = { // 0ω0 - {"Θ"}, //老头 - {"Θ"}, - {"老"}, - {"头"}}; +char commom_man[5][3] = { // 0蠅0 + {"螛"}, //鑰佸ご + {"螛"}, + {"鑰"}, + {"澶"}}; char going_to_die_man[5][3] = { // - {"凉"}, // - {"凉"}, - {"老"}, - {"头"}}; + {"鍑"}, // + {"鍑"}, + {"鑰"}, + {"澶"}}; int death_line = 8; char message[7][20] = { {"[][][][][]"}, {"[Tetris ]"}, {"[ plus]"}, - {"[俄罗斯 ]"}, - {"[方块plus]"}, + {"[淇勭綏鏂 ]"}, + {"[鏂瑰潡plus]"}, {"[][][][][]"}}; struct Pass { @@ -197,13 +197,13 @@ struct Pass {"0101010101"}}}}; int now_pass; -int T[30][4] = { //7种4*4状态,对应的数据是4位数对应4种情况(有效数前面不能为零不然会认为其他进制) +int T[30][4] = { //7绉4*4鐘舵侊紝瀵瑰簲鐨勬暟鎹槸4浣嶆暟瀵瑰簲4绉嶆儏鍐碉紙鏈夋晥鏁板墠闈笉鑳戒负闆朵笉鐒朵細璁や负鍏朵粬杩涘埗锛 {0000, 1011, 0000, 0000}, //T {1101, 1111, 111, 0000}, {0000, 1110, 0000, 0000}, {0000, 0000, 0000, 0000}, - {0000, 0000, 0000, 0000}, //田 + {0000, 0000, 0000, 0000}, //鐢 {0000, 1111, 1111, 0000}, {0000, 1111, 1111, 0000}, {0000, 0000, 0000, 0000}, @@ -213,22 +213,22 @@ int T[30][4] = { //7 {101, 0000, 0000, 0000}, {101, 0000, 0000, 0000}, - {1000, 1010, 1, 0000}, //右L + {1000, 1010, 1, 0000}, //鍙矻 {101, 1111, 101, 0000}, {100, 1010, 10, 0000}, {0000, 0000, 0000, 0000}, - {0001, 1010, 10, 0000}, //左L + {0001, 1010, 10, 0000}, //宸 {101, 1111, 101, 0000}, {1000, 1010, 100, 0000}, {0000, 0000, 0000, 0000}, - {0000, 1111, 101, 0000}, //右与 + {0000, 1111, 101, 0000}, //鍙充笌 {101, 1111, 1010, 0000}, {0000, 0000, 1010, 0000}, {0000, 0000, 0000, 0000}, - {101, 1111, 0000, 0000}, //左与 + {101, 1111, 0000, 0000}, //宸︿笌 {1010, 1111, 101, 0000}, {1010, 0000, 0000, 0000}, {0000, 0000, 0000, 0000}}; @@ -239,13 +239,13 @@ void init_brick(); void death_line_drop(int turn); void man_move(); void check(); -void HideCursor() //光标隐藏 +void HideCursor() //鍏夋爣闅愯棌 { - CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见 + CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -268,10 +268,10 @@ void init_brick() next_turn = next_next_turn; next_next_turn = rand() % 7; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), next_color); - show_next = 1; //打印下下个 + show_next = 1; //鎵撳嵃涓嬩笅涓 show(1, 1, 1, 1); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), next_next_color); - show_next = 2; //打印下个 + show_next = 2; //鎵撳嵃涓嬩釜 show(1, 1, 1, 1); show_next = 0; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), now_color); @@ -283,7 +283,7 @@ void init_brick() void init(int pass0) { int i, j; - HideCursor(); //隐藏光标 + HideCursor(); //闅愯棌鍏夋爣 system("cls"); times = 500; cnt_time = 0; @@ -305,7 +305,7 @@ void init(int pass0) strcpy(man_top_right, commom_man[1]); strcpy(man_buttom_left, commom_man[2]); strcpy(man_buttom_right, commom_man[3]); - //游戏开始样式 + //娓告垙寮濮嬫牱寮 for (i = 0; i <= height; i++) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), rand() % 8 + 1); @@ -313,9 +313,9 @@ void init(int pass0) { gotoxy(j, i); if (i == 0 || i == height || j == 0 || j == width - 1) - printf("■"); + printf("鈻"); else - printf("□"); + printf("鈻"); } } gotoxy(6, height / 2 - 2); @@ -323,9 +323,9 @@ void init(int pass0) gotoxy(6, height / 2); printf("[Start game]"); getchar(); - //点击开始 + //鐐瑰嚮寮濮 gotoxy(0, 0); - //构建地图 + //鏋勫缓鍦板浘 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); for (i = 0; i <= height; i++) { @@ -350,14 +350,14 @@ void init(int pass0) { printf("[]"); } - //这里是从17行开始打印8行关卡。 + //杩欓噷鏄粠17琛屽紑濮嬫墦鍗8琛屽叧鍗° else if (i >= (height - 8) && pass[pass0 - 1].ss[i - (height - 8)][j / 2 - 1] != '0' && pass0 != 0) { if (pass[pass0 - 1].ss[i - (height - 8)][j / 2 - 1] == '1') { map[i][j] = 2; check_sum[i][0] += 2; - printf("■"); + printf("鈻"); } else if (pass[pass0 - 1].ss[i - (height - 8)][j / 2 - 1] == '2') { @@ -422,10 +422,10 @@ void end() gotoxy(j, i); if (i == 0 || i == height || j == 0 || j == width - 1) { - printf("■"); + printf("鈻"); } else - printf("□"); + printf("鈻"); } Sleep(50); } @@ -451,38 +451,38 @@ void gameover() gotoxy(j, i); if (i == 0 || i == height || j == 0 || j == width - 1) { - printf("■"); + printf("鈻"); } else - printf("□"); + printf("鈻"); } Sleep(50); } gotoxy(2, height / 2 - 6); - printf(" !!!恭喜!!! "); + printf(" 锛侊紒锛佹伃鍠滐紒锛侊紒 "); getchar(); gotoxy(2, height / 2 - 4); - printf(" !!!恭喜!!! "); + printf(" 锛侊紒锛佹伃鍠滐紒锛侊紒 "); getchar(); gotoxy(2, height / 2 - 2); - printf(" 神奇!居然通关了 "); + printf(" 绁炲锛佸眳鐒堕氬叧浜 "); getchar(); gotoxy(2, height / 2); - printf(" 想要解锁更多关卡 "); + printf(" 鎯宠瑙i攣鏇村鍏冲崱 "); getchar(); gotoxy(2, height / 2 + 2); - printf(" 可以期待后续更新 "); + printf(" 鍙互鏈熷緟鍚庣画鏇存柊 "); getchar(); gotoxy(2, height / 2 + 4); - printf(" 也可以自己去魔改 "); + printf(" 涔熷彲浠ヨ嚜宸卞幓榄旀敼 "); getchar(); gotoxy(2, height / 2 + 6); - printf(" 游戏到此结束 "); + printf(" 娓告垙鍒版缁撴潫 "); getchar(); system("cls"); exit(0); } -void death_line_drop(int turn) //0对应下降 1对应打印 +void death_line_drop(int turn) //0瀵瑰簲涓嬮檷 1瀵瑰簲鎵撳嵃 { int i; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); @@ -521,7 +521,7 @@ void death_line_drop(int turn) //0 void delete_line() { int i, j, temp = 0; - HideCursor(); //隐藏光标 + HideCursor(); //闅愯棌鍏夋爣 for (i = height - 1; i >= death_line; i--) { if (check_sum[i][0] == 20) @@ -539,7 +539,7 @@ void delete_line() } } man_x += temp; - //下降 + //涓嬮檷 for (i = height - 1; i >= death_line; i--) { if (check_sum[i][1]) @@ -550,7 +550,7 @@ void delete_line() for (j = 2; j <= width - 2; j = j + 2) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color_map[i][j]); - map[i][j] == 2 ? printf("■") : printf(" "); + map[i][j] == 2 ? printf("鈻") : printf(" "); map[i + check_sum[i][1]][j] = map[i][j]; } gotoxy(2, i); @@ -703,7 +703,7 @@ void man_move() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), now_color); } -int show(int out, int in, int if_auto, int class0) //是否清除 是否加载 是否自动下落 赋值类型(1在移动 2定位的) +int show(int out, int in, int if_auto, int class0) //鏄惁娓呴櫎 鏄惁鍔犺浇 鏄惁鑷姩涓嬭惤 璧嬪肩被鍨嬶紙1鍦ㄧЩ鍔 2瀹氫綅鐨勶級 { int i, j; int temp_x; @@ -723,7 +723,7 @@ int show(int out, int in, int if_auto, int class0) // now_turn = (show_next == 2 ? next_next_turn : next_turn); tx = x, ty = y; } - if (out == 1) //清除 + if (out == 1) //娓呴櫎 { for (i = tx; i < tx + 4; i++) { @@ -746,9 +746,9 @@ int show(int out, int in, int if_auto, int class0) // } } } - if (in == 1) //打印 + if (in == 1) //鎵撳嵃 { - int now_turn_index = now_turn * 4, ttx, tty; //对应到的初始下标 + int now_turn_index = now_turn * 4, ttx, tty; //瀵瑰簲鍒扮殑鍒濆涓嬫爣 for (i = x; i < x + 4; i++) { for (j = y; j < y + 4; j++) @@ -768,9 +768,9 @@ int show(int out, int in, int if_auto, int class0) // color_map[i][2 * j - y] = now_color; } if (!(class0 == 2 && i <= death_line)) - printf("■"); + printf("鈻"); } - else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2 && if_auto == 1) //失败则回退 + else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2 && if_auto == 1) //澶辫触鍒欏洖閫 { if (show_first) { @@ -785,7 +785,7 @@ int show(int out, int in, int if_auto, int class0) // show(1, 1, 1, 1); return 0; } - else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2) //失败则回退 + else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2) //澶辫触鍒欏洖閫 { ttx = tx; tty = ty; @@ -838,7 +838,7 @@ void check() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), now_color); } -void manchange() //人为输入更新 +void manchange() //浜轰负杈撳叆鏇存柊 { char ch, ch1, ch2; if (kbhit()) @@ -847,7 +847,7 @@ void manchange() // if (ch != ' ' && ch != 'w' && ch != 's' && ch != 'a' && ch != 'd' && ch != -32 && ch != 'p' && ch != 'b') return; if (ch == -32) - { //同时启用wasd 和上下左右键 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 ch1 = getch(); switch (ch1) { @@ -893,13 +893,13 @@ void manchange() // } } } -void autochange() //自动更新 +void autochange() //鑷姩鏇存柊 { times--; if (times == 0) { cnt_time++; - if (rand() % 2 == 0 || man_up_down == 1) //正常走路随机走,上升/下降/死亡线接近时加速 + if (rand() % 2 == 0 || man_up_down == 1) //姝e父璧拌矾闅忔満璧帮紝涓婂崌/涓嬮檷/姝讳骸绾挎帴杩戞椂鍔犻 if (now_pass != 0) man_move(); times = 15000; @@ -928,39 +928,39 @@ int main() system("mode con cols=50 lines=28"); HideCursor(); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); - printf("****** 游戏名: 俄罗斯方块Tetris Plus ******\n"); + printf("****** 娓告垙鍚嶏細 淇勭綏鏂柟鍧桾etris Plus ******\n"); printf("****** ******\n"); - printf("****** 程序作者: 404name ******\n"); + printf("****** 绋嬪簭浣滆咃細 404name ******\n"); printf("****** ******\n"); - printf("****** 操作方式: ←左移动 ******\n"); - printf("****** 操作方式: →右移动 ******\n"); - printf("****** 操作方式: ↑上旋转 ******\n"); - printf("****** 操作方式: ↓加速下降 ******\n"); - printf("****** 操作方式: 回车确认键 ******\n"); - printf("****** 建议游戏字号大小为26号 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫愬乏绉诲姩 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫掑彸绉诲姩 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫戜笂鏃嬭浆 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫撳姞閫熶笅闄 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鍥炶溅纭閿 ******\n"); + printf("****** 寤鸿娓告垙瀛楀彿澶у皬涓26鍙 ******\n"); getchar(); gotoxy(0, 0); - printf("********************游戏介绍*********************\n"); + printf("********************娓告垙浠嬬粛*********************\n"); printf("****** ******\n"); - printf("****** 一共15关,解救老人即可进入下一关 ******\n"); + printf("****** 涓鍏15鍏筹紝瑙f晳鑰佷汉鍗冲彲杩涘叆涓嬩竴鍏 ******\n"); printf("****** ******\n"); - printf("****** ( 老人降落到第一层即为成功) ******\n"); + printf("****** 锛 鑰佷汉闄嶈惤鍒扮涓灞傚嵆涓烘垚鍔燂級 ******\n"); printf("****** ******\n"); - printf("****** 正常启动:按两下回车 ******\n"); - printf("****** 跳关启动:按T再回车 ******\n"); - printf("****** (选择0关对应的是无尽模式) ******\n"); - printf("********************游戏介绍*********************\n"); + printf("****** 姝e父鍚姩锛氭寜涓や笅鍥炶溅 ******\n"); + printf("****** 璺冲叧鍚姩锛氭寜T鍐嶅洖杞 ******\n"); + printf("****** (閫夋嫨0鍏冲搴旂殑鏄棤灏芥ā寮) ******\n"); + printf("********************娓告垙浠嬬粛*********************\n"); now_pass = 1; choose = getchar(); getchar(); if (choose == 'T' || choose == 't') { - printf("请输入开始关卡"); + printf("璇疯緭鍏ュ紑濮嬪叧鍗"); scanf("%d", &temp_pass); if (temp_pass > 15 || temp_pass < 0) { - temp_pass = 16; //彩蛋关卡 - printf("即将进入彩蛋关卡"); + temp_pass = 16; //褰╄泲鍏冲崱 + printf("鍗冲皢杩涘叆褰╄泲鍏冲崱"); Sleep(1000); } now_pass = temp_pass; diff --git "a/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\347\273\217\345\205\270\347\211\210demo(600\350\241\214\345\276\205\347\274\251\345\207\217).cpp" "b/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\347\273\217\345\205\270\347\211\210demo(600\350\241\214\345\276\205\347\274\251\345\207\217).cpp" index 8fb567a..7f0f452 100644 --- "a/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\347\273\217\345\205\270\347\211\210demo(600\350\241\214\345\276\205\347\274\251\345\207\217).cpp" +++ "b/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\347\273\217\345\205\270\347\211\210demo(600\350\241\214\345\276\205\347\274\251\345\207\217).cpp" @@ -1,15 +1,15 @@ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include #include -#include //用于rand +#include //鐢ㄤ簬rand #include #include #include -//■□ +//鈻犫枴 /*----- -日志: -·人物移动格外算时间,有下降加快更新,上升同样,这时候不算随机数,平常走动随机数 -·win画面更新。开头介绍,胜利。下降时间控制 +鏃ュ織锛 +路浜虹墿绉诲姩鏍煎绠楁椂闂达紝鏈変笅闄嶅姞蹇洿鏂帮紝涓婂崌鍚屾牱锛岃繖鏃跺欎笉绠楅殢鏈烘暟锛屽钩甯歌蛋鍔ㄩ殢鏈烘暟 +路win鐢婚潰鏇存柊銆傚紑澶翠粙缁嶏紝鑳滃埄銆備笅闄嶆椂闂存帶鍒 @@ -19,8 +19,8 @@ int map[500][500] = {0}; int color_map[500][500] = {0}; int check_sum[500][2] = {0}; int if_full = 0; -//下标按顺序为 总分 应该下降的层数 -//逻辑顺序是谁 check_sun储存对应map层数的和,当满的时候,他向上的有值的层数就要增加相应的该降层数。 +//涓嬫爣鎸夐『搴忎负 鎬诲垎 搴旇涓嬮檷鐨勫眰鏁 +//閫昏緫椤哄簭鏄皝 check_sun鍌ㄥ瓨瀵瑰簲map灞傛暟鐨勫拰锛屽綋婊$殑鏃跺欙紝浠栧悜涓婄殑鏈夊肩殑灞傛暟灏辫澧炲姞鐩稿簲鐨勮闄嶅眰鏁般 int height, width, top; int start_x = 6, start_y = 10, tx, ty, x, y, times, cnt_time, old_index0, index0, cnt = 0; int if_change = 0, if_death = 0, reduce_time = 0; @@ -29,18 +29,18 @@ int next_position_x[2] = {1, 1}, next_position_y[2] = {10, 2}, show_next = 0, sh int now_color = 3, next_color = 2, next_next_color = 3; int death_line = 8; -char message[7][20] = { //自定义logo +char message[7][20] = { //鑷畾涔塴ogo {"[][][][][]"}, {"[Tetris ]"}, {"[ plus]"}, - {"[俄罗斯 ]"}, - {"[方块plus]"}, + {"[淇勭綏鏂 ]"}, + {"[鏂瑰潡plus]"}, {"[][][][][]"}}; struct Pass { char ss[10][11]; } pass[20] = { - {{{"0000000000"}, //1可以自己设置基础关卡 0空气 1砖块 + {{{"0000000000"}, //1鍙互鑷繁璁剧疆鍩虹鍏冲崱 0绌烘皵 1鐮栧潡 {"0000000000"}, {"0000000000"}, {"0000000000"}, @@ -48,15 +48,15 @@ struct Pass {"0000000000"}, {"0000000000"}, {"0000000000"}}}}; -int now_pass = 1; //多关卡,现在默认第一关 +int now_pass = 1; //澶氬叧鍗★紝鐜板湪榛樿绗竴鍏 -int T[30][4] = { //7种4*4状态,对应的数据是4位数对应4种情况(有效数前面不能为零不然会认为其他进制) +int T[30][4] = { //7绉4*4鐘舵侊紝瀵瑰簲鐨勬暟鎹槸4浣嶆暟瀵瑰簲4绉嶆儏鍐碉紙鏈夋晥鏁板墠闈笉鑳戒负闆朵笉鐒朵細璁や负鍏朵粬杩涘埗锛 {0000, 1011, 0000, 0000}, //T {1101, 1111, 111, 0000}, {0000, 1110, 0000, 0000}, {0000, 0000, 0000, 0000}, - {0000, 0000, 0000, 0000}, //田 + {0000, 0000, 0000, 0000}, //鐢 {0000, 1111, 1111, 0000}, {0000, 1111, 1111, 0000}, {0000, 0000, 0000, 0000}, @@ -66,22 +66,22 @@ struct Pass {101, 0000, 0000, 0000}, {101, 0000, 0000, 0000}, - {1000, 1010, 1, 0000}, //右L + {1000, 1010, 1, 0000}, //鍙矻 {101, 1111, 101, 0000}, {100, 1010, 10, 0000}, {0000, 0000, 0000, 0000}, - {0001, 1010, 10, 0000}, //左L + {0001, 1010, 10, 0000}, //宸 {101, 1111, 101, 0000}, {1000, 1010, 100, 0000}, {0000, 0000, 0000, 0000}, - {0000, 1111, 101, 0000}, //右与 + {0000, 1111, 101, 0000}, //鍙充笌 {101, 1111, 1010, 0000}, {0000, 0000, 1010, 0000}, {0000, 0000, 0000, 0000}, - {101, 1111, 0000, 0000}, //左与 + {101, 1111, 0000, 0000}, //宸︿笌 {1010, 1111, 101, 0000}, {1010, 0000, 0000, 0000}, {0000, 0000, 0000, 0000}}; @@ -91,13 +91,13 @@ int show(int out, int in, int if_auto, int class0); void init_brick(); void death_line_drop(int turn); void check(); -void HideCursor() //光标隐藏 +void HideCursor() //鍏夋爣闅愯棌 { - CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见 + CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -120,10 +120,10 @@ void init_brick() next_turn = next_next_turn; next_next_turn = rand() % 7; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), next_color); - show_next = 1; //打印下下个 + show_next = 1; //鎵撳嵃涓嬩笅涓 show(1, 1, 1, 1); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), next_next_color); - show_next = 2; //打印下个 + show_next = 2; //鎵撳嵃涓嬩釜 show(1, 1, 1, 1); show_next = 0; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), now_color); @@ -134,7 +134,7 @@ void init_brick() void init(int pass0) { - HideCursor(); //隐藏光标 + HideCursor(); //闅愯棌鍏夋爣 int i, j; system("cls"); times = 500; @@ -146,7 +146,7 @@ void init(int pass0) death_line = 8; height = 26; width = 23; - //游戏开始样式 + //娓告垙寮濮嬫牱寮 for (i = 0; i <= height; i++) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), rand() % 8 + 1); @@ -154,9 +154,9 @@ void init(int pass0) { gotoxy(j, i); if (i == 0 || i == height || j == 0 || j == width - 1) - printf("■"); + printf("鈻"); else - printf("□"); + printf("鈻"); } } gotoxy(6, height / 2 - 2); @@ -164,9 +164,9 @@ void init(int pass0) gotoxy(6, height / 2); printf("[Start game]"); getchar(); - //点击开始 + //鐐瑰嚮寮濮 gotoxy(0, 0); - //构建地图 + //鏋勫缓鍦板浘 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); for (i = 0; i <= height; i++) { @@ -191,14 +191,14 @@ void init(int pass0) { printf("[]"); } - //这里是从17行开始打印8行关卡。 + //杩欓噷鏄粠17琛屽紑濮嬫墦鍗8琛屽叧鍗° else if (i >= (height - 8) && pass[pass0 - 1].ss[i - (height - 8)][j / 2 - 1] != '0' && pass0 != 0) { if (pass[pass0 - 1].ss[i - (height - 8)][j / 2 - 1] == '1') { map[i][j] = 2; check_sum[i][0] += 2; - printf("■"); + printf("鈻"); } else printf(" "); @@ -243,9 +243,9 @@ void init(int pass0) getch(); } -void death_line_drop(int turn) //0对应打印 1对应下降 +void death_line_drop(int turn) //0瀵瑰簲鎵撳嵃 1瀵瑰簲涓嬮檷 { - //清空死亡线 + //娓呯┖姝讳骸绾 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); gotoxy(0, death_line); printf("[]"); @@ -257,9 +257,9 @@ void init(int pass0) if (map[death_line][i] != 1) printf(" "); } - if (turn == 1) //是否下降 + if (turn == 1) //鏄惁涓嬮檷 death_line++; - //打印新的死亡线 + //鎵撳嵃鏂扮殑姝讳骸绾 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4); gotoxy(0, death_line); printf("{}"); @@ -282,7 +282,7 @@ void init(int pass0) void delete_line() { - HideCursor(); //隐藏光标 + HideCursor(); //闅愯棌鍏夋爣 int i, j, temp = 0; for (i = height - 1; i >= death_line; i--) { @@ -296,7 +296,7 @@ void delete_line() } } } - //下降 + //涓嬮檷 for (i = height - 1; i >= death_line; i--) { if (check_sum[i][1]) @@ -307,7 +307,7 @@ void delete_line() for (j = 2; j <= width - 2; j = j + 2) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color_map[i][j]); - map[i][j] == 2 ? printf("■") : printf(" "); + map[i][j] == 2 ? printf("鈻") : printf(" "); map[i + check_sum[i][1]][j] = map[i][j]; } gotoxy(2, i); @@ -321,7 +321,7 @@ void delete_line() } check(); Sleep(50); - //刷新死亡线 + //鍒锋柊姝讳骸绾 death_line_drop(0); } @@ -339,7 +339,7 @@ int get_index0_num(int res, int index0) return ans; } -int show(int out, int in, int if_auto, int class0) //是否清除 是否加载 是否自动下落 赋值类型(1在移动 2定位的) +int show(int out, int in, int if_auto, int class0) //鏄惁娓呴櫎 鏄惁鍔犺浇 鏄惁鑷姩涓嬭惤 璧嬪肩被鍨嬶紙1鍦ㄧЩ鍔 2瀹氫綅鐨勶級 { int i, j; int temp_x; @@ -359,7 +359,7 @@ int get_index0_num(int res, int index0) now_turn = (show_next == 2 ? next_next_turn : next_turn); tx = x, ty = y; } - if (out == 1) //清除 + if (out == 1) //娓呴櫎 { for (i = tx; i < tx + 4; i++) { @@ -382,9 +382,9 @@ int get_index0_num(int res, int index0) } } } - if (in == 1) //打印 + if (in == 1) //鎵撳嵃 { - int now_turn_index = now_turn * 4; //对应到的初始下标 + int now_turn_index = now_turn * 4; //瀵瑰簲鍒扮殑鍒濆涓嬫爣 for (i = x; i < x + 4; i++) { for (j = y; j < y + 4; j++) @@ -404,9 +404,9 @@ int get_index0_num(int res, int index0) color_map[i][2 * j - y] = now_color; } if (!(class0 == 2 && i <= death_line)) - printf("■"); + printf("鈻"); } - else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2 && if_auto == 1) //失败则回退 + else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2 && if_auto == 1) //澶辫触鍒欏洖閫 { if (show_first) { @@ -420,7 +420,7 @@ int get_index0_num(int res, int index0) show(1, 1, 1, 1); return 0; } - else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2) //失败则回退 + else if (i <= height && 2 * j - y <= width && get_index0_num(T[i - x + now_turn_index][j - y], index0) == 1 && map[i][2 * j - y] == 2) //澶辫触鍒欏洖閫 { int ttx = tx; int tty = ty; @@ -460,7 +460,7 @@ int get_index0_num(int res, int index0) return 1; } -void check() //统计每层的得分情况 +void check() //缁熻姣忓眰鐨勫緱鍒嗘儏鍐 { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); for (int i = 6; i < height; i++) @@ -472,7 +472,7 @@ int get_index0_num(int res, int index0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), now_color); } -void manchange() //人为输入更新 +void manchange() //浜轰负杈撳叆鏇存柊 { char ch, ch1, ch2; if (kbhit()) @@ -481,7 +481,7 @@ int get_index0_num(int res, int index0) if (ch != ' ' && ch != 'w' && ch != 's' && ch != 'a' && ch != 'd' && ch != -32 && ch != 'p' && ch != 'b') return; if (ch == -32) - { //同时启用wasd 和上下左右键 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 ch1 = getch(); switch (ch1) { @@ -527,9 +527,9 @@ int get_index0_num(int res, int index0) } } } -void autochange() //自动更新 +void autochange() //鑷姩鏇存柊 { - times--; //模拟sleep函数 + times--; //妯℃嫙sleep鍑芥暟 if (times == 0) { cnt_time++; @@ -548,7 +548,7 @@ int get_index0_num(int res, int index0) if (cnt_time == 20 && now_pass != 0) { cnt_time = 0; - //是否开启死亡线下降: 0否 1是 + //鏄惁寮鍚浜$嚎涓嬮檷锛 0鍚 1鏄 death_line_drop(0); } } @@ -559,16 +559,16 @@ int main() system("mode con cols=50 lines=28"); HideCursor(); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 3); - printf("****** 游戏名: 俄罗斯方块Tetris Plus ******\n"); + printf("****** 娓告垙鍚嶏細 淇勭綏鏂柟鍧桾etris Plus ******\n"); printf("****** ******\n"); - printf("****** 程序作者: 404name ******\n"); + printf("****** 绋嬪簭浣滆咃細 404name ******\n"); printf("****** ******\n"); - printf("****** 操作方式: ←左移动 ******\n"); - printf("****** 操作方式: →右移动 ******\n"); - printf("****** 操作方式: ↑上旋转 ******\n"); - printf("****** 操作方式: ↓加速下降 ******\n"); - printf("****** 操作方式: 回车确认键 ******\n"); - printf("****** 建议游戏字号大小为26号 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫愬乏绉诲姩 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫掑彸绉诲姩 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫戜笂鏃嬭浆 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鈫撳姞閫熶笅闄 ******\n"); + printf("****** 鎿嶄綔鏂瑰紡锛 鍥炶溅纭閿 ******\n"); + printf("****** 寤鸿娓告垙瀛楀彿澶у皬涓26鍙 ******\n"); getchar(); gotoxy(0, 0); system("mode con cols=28 lines=28"); diff --git "a/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\347\273\217\345\205\270\347\211\210demo(600\350\241\214\345\276\205\347\274\251\345\207\217).exe" "b/\344\277\204\347\275\227\346\226\257\346\226\271\345\235\227Plus/\347\273\217\345\205\270\347\211\210demo(600\350\241\214\345\276\205\347\274\251\345\207\217).exe" new file mode 100644 index 0000000000000000000000000000000000000000..731a2eddf8971de92cde01e251e4cf4834b9de9a GIT binary patch literal 152204 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 A0%=6@y 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 //getch() #include #include -#define Is_Active_Color 115 //当前所在状态栏的颜色 浅蓝色灰底 -#define Is_Selected1_Color 128 //被选中的颜色1 蓝色深灰底 -#define Is_Selected2_Color 62 //被选中的颜色2 白色蓝底 +#define Is_Active_Color 115 //褰撳墠鎵鍦ㄧ姸鎬佹爮鐨勯鑹 娴呰摑鑹茬伆搴 +#define Is_Selected1_Color 128 //琚変腑鐨勯鑹1 钃濊壊娣辩伆搴 +#define Is_Selected2_Color 62 //琚変腑鐨勯鑹2 鐧借壊钃濆簳 #define Is_Selected3_Color \ - 369 //被选中的颜色3 深蓝色灰色(解决一些字符不显示背景用) -#define Video_Color 3 //视频颜色 蓝色黑底 -#define Normal_Color 112 //正常的颜色 灰底 -#define Boder_Color 391 //边框的颜色 深灰底 -const int WIDTH = 53; //单位宽度 -const int HEIGHT = 47; //单位高度 -const int L = 4; //用户头像长宽 -const int LL = 20; //视频封面长度 -const int N = 50; //标题、用户名等最长长度 -const int M = 1000000; //视频收藏,发布,粉丝等上限 -/*appMap是内容映射,取到内容数值对应下面的具体信息 -0边界 1:头像(点击登录) 2搜索框 3信息 -4 5 6 7 8 直播/推荐/热门/追番/影视 -9-14 6个视频块 -15-19 首页/推荐/动态/会员购/我的 -20 404页面 */ -/*全局变量 -nowPage 0 1 2 3 404页面/首页/热搜/我的/搜索页面/待更新 + 369 //琚変腑鐨勯鑹3 娣辫摑鑹茬伆鑹(瑙e喅涓浜涘瓧绗︿笉鏄剧ず鑳屾櫙鐢) +#define Video_Color 3 //瑙嗛棰滆壊 钃濊壊榛戝簳 +#define Normal_Color 112 //姝e父鐨勯鑹 鐏板簳 +#define Boder_Color 391 //杈规鐨勯鑹 娣辩伆搴 +const int WIDTH = 53; //鍗曚綅瀹藉害 +const int HEIGHT = 47; //鍗曚綅楂樺害 +const int L = 4; //鐢ㄦ埛澶村儚闀垮 +const int LL = 20; //瑙嗛灏侀潰闀垮害 +const int N = 50; //鏍囬銆佺敤鎴峰悕绛夋渶闀块暱搴 +const int M = 1000000; //瑙嗛鏀惰棌锛屽彂甯冿紝绮変笣绛変笂闄 +/*appMap鏄唴瀹规槧灏勶紝鍙栧埌鍐呭鏁板煎搴斾笅闈㈢殑鍏蜂綋淇℃伅 +0杈圭晫 1锛氬ご鍍(鐐瑰嚮鐧诲綍) 2鎼滅储妗 3淇℃伅 +4 5 6 7 8 鐩存挱/鎺ㄨ崘/鐑棬/杩界暘/褰辫 +9-14 6涓棰戝潡 +15-19 棣栭〉/鎺ㄨ崘/鍔ㄦ/浼氬憳璐/鎴戠殑 +20 404椤甸潰 */ +/*鍏ㄥ眬鍙橀噺 +nowPage 0 1 2 3 404椤甸潰/棣栭〉/鐑悳/鎴戠殑/鎼滅储椤甸潰/寰呮洿鏂 */ int nowPage = 1; -bool onPlay = false; //关闭则是杀死 -bool stopPlay = true; //开启则是停止 -int activeIndexBottom = 15; //当前响应的页面(顶部 -int activeIndexTop = 5; //当前响应的页面(底部 -char bacground[48][55] = { +bool onPlay = false; //鍏抽棴鍒欐槸鏉姝 +bool stopPlay = true; //寮鍚垯鏄仠姝 +int activeIndexBottom = 15; //褰撳墠鍝嶅簲鐨勯〉闈(椤堕儴 +int activeIndexTop = 5; //褰撳墠鍝嶅簲鐨勯〉闈(搴曢儴 +char bacground[48][56] = { " ", " ", - " 你 感 兴 趣 的 视 频 ", + " 浣 鎰 鍏 瓒 鐨 瑙 棰 ", " ", - " 都 在 B 站 ", + " 閮 鍦 B 绔 ", " r. ", " vPvi ", " Qq ", @@ -102,14 +102,14 @@ char bacground[48][55] = { " |____/|_|_|_|_.__/|_|_|_| ", " ", }; -//三维依次是 哪个界面 界面哪行 某行第几个模块 -// appMap[x][0][0]表示该页面有几行 -int appMap[20][12][7] = {{{5, 0, 0, 0, 0, 0, 0}, // 0.404报错页面 +//涓夌淮渚濇鏄 鍝釜鐣岄潰 鐣岄潰鍝 鏌愯绗嚑涓ā鍧 +// appMap[x][0][0]琛ㄧず璇ラ〉闈㈡湁鍑犺 +int appMap[20][12][7] = {{{5, 0, 0, 0, 0, 0, 0}, // 0.404鎶ラ敊椤甸潰 {0, 1, 2, 2, 2, 3, 0}, {0, 20, 20, 20, 20, 20, 0}, {0, 15, 16, 17, 18, 19, 0}, {0, 0, 0, 0, 0, 0, 0}}, - {{8, 0, 0, 0, 0, 0, 0}, // 1.首页 + {{8, 0, 0, 0, 0, 0, 0}, // 1.棣栭〉 {0, 1, 2, 2, 2, 3, 0}, {0, 4, 5, 6, 7, 8, 0}, {0, 9, 9, 10, 10, 10, 0}, @@ -117,7 +117,7 @@ char bacground[48][55] = { {0, 13, 13, 14, 14, 14, 0}, {0, 15, 16, 17, 18, 19, 0}, {0, 0, 0, 0, 0, 0, 0}}, - {{10, 0, 0, 0, 0, 0, 0}, // 2.热门 (待更新 ) + {{10, 0, 0, 0, 0, 0, 0}, // 2.鐑棬 (寰呮洿鏂 ) {0, 1, 2, 2, 2, 3, 0}, {0, 4, 5, 6, 7, 8, 0}, {0, 25, 25, 26, 27, 28, 0}, @@ -127,7 +127,7 @@ char bacground[48][55] = { {0, 24, 24, 24, 24, 24, 0}, {0, 15, 16, 17, 18, 19, 0}, {0, 0, 0, 0, 0, 0, 0}}, - {{8, 0, 0, 0, 0, 0, 0}, // 3.我的(待更新 ) + {{8, 0, 0, 0, 0, 0, 0}, // 3.鎴戠殑(寰呮洿鏂 ) {0, 1, 2, 2, 2, 3, 0}, {0, 4, 5, 6, 7, 8, 0}, {0, 9, 9, 10, 10, 10, 0}, @@ -135,7 +135,7 @@ char bacground[48][55] = { {0, 13, 13, 14, 14, 14, 0}, {0, 15, 16, 17, 18, 19, 0}, {0, 0, 0, 0, 0, 0, 0}}, - {{9, 0, 0, 0, 0, 0, 0}, // 4.视频详细页(简介) + {{9, 0, 0, 0, 0, 0, 0}, // 4.瑙嗛璇︾粏椤(绠浠) {0, 29, 29, 29, 29, 29, 0}, {0, 30, 31, 32, 32, 33, 0}, {0, 34, 34, 34, 34, 35, 0}, @@ -144,7 +144,7 @@ char bacground[48][55] = { {0, 42, 42, 42, 42, 42, 0}, {0, 43, 43, 43, 43, 43, 0}, {0, 0, 0, 0, 0, 0, 0}}, - {{8, 0, 0, 0, 0, 0, 0}, // 5.消息页面 (待更新 ) + {{8, 0, 0, 0, 0, 0, 0}, // 5.娑堟伅椤甸潰 (寰呮洿鏂 ) {0, 1, 2, 2, 2, 3, 0}, {0, 25, 25, 26, 27, 28, 0}, {0, 21, 21, 21, 21, 21, 0}, @@ -152,237 +152,237 @@ char bacground[48][55] = { {0, 23, 23, 23, 23, 23, 0}, {0, 24, 24, 24, 24, 24, 0}, {0, 0, 0, 0, 0, 0, 0}}}; -/*appMap取到的内容对应下面的下标, -信息依次是映射到实际打印处的 x/y/高/宽/类别 -类别: 0 无功能项 点击进不去 - 1 有功能项 点击进入action - 2 待开发 +/*appMap鍙栧埌鐨勫唴瀹瑰搴斾笅闈㈢殑涓嬫爣锛 +淇℃伅渚濇鏄槧灏勫埌瀹為檯鎵撳嵃澶勭殑 x/y/楂/瀹/绫诲埆 +绫诲埆锛 0 鏃犲姛鑳介」 鐐瑰嚮杩涗笉鍘 + 1 鏈夊姛鑳介」 鐐瑰嚮杩涘叆action + 2 寰呭紑鍙 */ int appMapMessage[100][5] = { {0, 0, 0, 0, 0}, - {1, 2, 2, 6, 1}, // 1-3 顶部信息栏 头像/搜索框/信息 + {1, 2, 2, 6, 1}, // 1-3 椤堕儴淇℃伅鏍 澶村儚/鎼滅储妗/淇℃伅 {1, 12, 2, 31, 1}, {1, 43, 2, 8, 1}, - {4, 2, 1, 9, 1}, // 4-8 顶部标签功能栏 - {4, 12, 1, 9, 1}, //推荐 - {4, 22, 1, 9, 1}, //热门 + {4, 2, 1, 9, 1}, // 4-8 椤堕儴鏍囩鍔熻兘鏍 + {4, 12, 1, 9, 1}, //鎺ㄨ崘 + {4, 22, 1, 9, 1}, //鐑棬 {4, 32, 1, 9, 1}, // {4, 42, 1, 9, 1}, - {6, 1, 11, 25, 1}, // 9-14 6个视频点位 + {6, 1, 11, 25, 1}, // 9-14 6涓棰戠偣浣 {6, 27, 11, 25, 1}, {18, 1, 11, 25, 1}, {18, 27, 11, 25, 1}, {30, 1, 11, 25, 1}, {30, 27, 11, 25, 1}, - {42, 2, 4, 9, 1}, // 15-19 底部标签功能栏 + {42, 2, 4, 9, 1}, // 15-19 搴曢儴鏍囩鍔熻兘鏍 {42, 12, 4, 9, 1}, {42, 22, 4, 9, 1}, {42, 32, 4, 9, 1}, {42, 42, 4, 9, 1}, - {6, 2, 35, 49, 0}, // 20.404页面 - {10, 2, 7, 49, 1}, // 21-24. top热门榜页面 + {6, 2, 35, 49, 0}, // 20.404椤甸潰 + {10, 2, 7, 49, 1}, // 21-24. top鐑棬姒滈〉闈 {18, 2, 7, 49, 1}, {26, 2, 7, 49, 1}, {34, 2, 7, 49, 1}, - {6, 4, 4, 10, 1}, // 25-28 中间4格栏,热门 信息共用 + {6, 4, 4, 10, 1}, // 25-28 涓棿4鏍兼爮锛岀儹闂 淇℃伅鍏辩敤 {6, 16, 4, 10, 1}, {6, 27, 4, 10, 1}, {6, 39, 4, 10, 1}, - {1, 1, 14, 51, 1}, // 29 视频模块 - {15, 7, 1, 4, 1}, // 30-33 视频下方功能 简介/评论/点我发弹幕/弹幕开关 + {1, 1, 14, 51, 1}, // 29 瑙嗛妯″潡 + {15, 7, 1, 4, 1}, // 30-33 瑙嗛涓嬫柟鍔熻兘 绠浠/璇勮/鐐规垜鍙戝脊骞/寮瑰箷寮鍏 {15, 18, 1, 10, 1}, {15, 32, 1, 15, 1}, {15, 47, 1, 2, 1}, - {17, 1, 2, 40, 1}, // 34-36 视频下方消息栏 个人页/关注/视频标题+简介 + {17, 1, 2, 40, 1}, // 34-36 瑙嗛涓嬫柟娑堟伅鏍 涓汉椤/鍏虫敞/瑙嗛鏍囬+绠浠 {17, 44, 2, 8, 1}, {20, 1, 5, 51, 1}, - {26, 2, 4, 9, 1}, // 37-41 点赞/不喜欢/投币/收藏/转发 + {26, 2, 4, 9, 1}, // 37-41 鐐硅禐/涓嶅枩娆/鎶曞竵/鏀惰棌/杞彂 {26, 12, 4, 9, 1}, {26, 22, 4, 9, 1}, {26, 32, 4, 9, 1}, {26, 42, 4, 9, 1}, {31, 2, 7, 49, 1}, - {39, 2, 7, 49, 1}, // 42-45 个人页面4个视频模块 和推荐公用 + {39, 2, 7, 49, 1}, // 42-45 涓汉椤甸潰4涓棰戞ā鍧 鍜屾帹鑽愬叕鐢 {31, 2, 7, 49, 1}, - {39, 2, 7, 49, 1}, // 43-45视频下方广告 + 推荐视频 + {39, 2, 7, 49, 1}, // 43-45瑙嗛涓嬫柟骞垮憡 + 鎺ㄨ崘瑙嗛 }; char appMapIcon[100][1000] = { " ", - "[我是][头像]", // 1-5 + "[鎴戞槸][澶村儚]", // 1-5 "|o ######################### || \\ |", - "〖信息〗 ", - "〖直播〗 ", - "〖推荐〗 ", - "〖热门〗 ", // 6-10 - "〖追番〗 ", - "〖影视〗 ", + "銆栦俊鎭 ", + "銆栫洿鎾 ", + "銆栨帹鑽愩 ", + "銆栫儹闂ㄣ ", // 6-10 + "銆栬拷鐣 ", + "銆栧奖瑙嗐 ", ".=======================." "| |" "| |" - "| 暂无封面 |" + "| 鏆傛棤灏侀潰 |" "| |" "| |" "|__________________x:xx_|" - "|肥肠抱歉,你要找的视频 |" - "|不见了 |" - "|Up:xxxxxx Ξ |" + "|鑲ヨ偁鎶辨瓑锛屼綘瑕佹壘鐨勮棰 |" + "|涓嶈浜 |" + "|Up锛歺xxxxx 螢 |" ".=======================.", ".=======================." "| |" "| |" - "| 暂无封面 |" + "| 鏆傛棤灏侀潰 |" "| |" "| |" "|__________________x:xx_|" - "|肥肠抱歉,你要找的视频 |" - "|不见了 |" - "|Up:xxxxxx Ξ |" + "|鑲ヨ偁鎶辨瓑锛屼綘瑕佹壘鐨勮棰 |" + "|涓嶈浜 |" + "|Up锛歺xxxxx 螢 |" ".=======================.", ".=======================." "| |" "| |" - "| 暂无封面 |" + "| 鏆傛棤灏侀潰 |" "| |" "| |" "|__________________x:xx_|" - "|肥肠抱歉,你要找的视频 |" - "|不见了 |" - "|Up:xxxxxx Ξ |" + "|鑲ヨ偁鎶辨瓑锛屼綘瑕佹壘鐨勮棰 |" + "|涓嶈浜 |" + "|Up锛歺xxxxx 螢 |" ".=======================.", // 11-15 ".=======================." "| |" "| |" - "| 暂无封面 |" + "| 鏆傛棤灏侀潰 |" "| |" "| |" "|__________________x:xx_|" - "|肥肠抱歉,你要找的视频 |" - "|不见了 |" - "|Up:xxxxxx Ξ |" + "|鑲ヨ偁鎶辨瓑锛屼綘瑕佹壘鐨勮棰 |" + "|涓嶈浜 |" + "|Up锛歺xxxxx 螢 |" ".=======================.", ".=======================." "| |" "| |" - "| 暂无封面 |" + "| 鏆傛棤灏侀潰 |" "| |" "| |" "|__________________x:xx_|" - "|肥肠抱歉,你要找的视频 |" - "|不见了 |" - "|Up:xxxxxx Ξ |" + "|鑲ヨ偁鎶辨瓑锛屼綘瑕佹壘鐨勮棰 |" + "|涓嶈浜 |" + "|Up锛歺xxxxx 螢 |" ".=======================.", ".=======================." "| |" "| |" - "| 暂无封面 |" + "| 鏆傛棤灏侀潰 |" "| |" "| |" "|__________________x:xx_|" - "|肥肠抱歉,你要找的视频 |" - "|不见了 |" - "|Up:xxxxxx Ξ |" + "|鑲ヨ偁鎶辨瓑锛屼綘瑕佹壘鐨勮棰 |" + "|涓嶈浜 |" + "|Up锛歺xxxxx 螢 |" ".=======================.", - " /-\\ │ │ └―┘ 首页 ", - " O O O | 频道 ", // 16-20 - " ↗ ↖┼↘ ↙ | 动态 ", - " ︵ ╔─╗ ┗─┛ | 会员购 ", - " \\ / ╔―╗ ┗―┛ | 我的 ", + " /-\\ 鈹 鈹 鈹斺曗敇 棣栭〉 ", + " O O O | 棰戦亾 ", // 16-20 + " 鈫 鈫栤敿鈫 鈫 | 鍔ㄦ ", + " 锔 鈺斺攢鈺 鈹椻攢鈹 | 浼氬憳璐 ", + " \\ / 鈺斺曗晽 鈹椻曗敍 | 鎴戠殑 ", " ", "#################################################" - "# #《原神》角色展示- [甘 #" - "# #雨:梦里韶光] #" - "# #[5万点赞] #" - "# #[up] 原神 #" - "# #[▲] 65.6 观看 :#" + "# #銆婂師绁炪嬭鑹插睍绀- [鐢 #" + "# #闆細姊﹂噷闊跺厜] #" + "# #[5涓囩偣璧瀅 #" + "# #[up] 鍘熺 #" + "# #[鈻瞉 65.6 瑙傜湅 :#" "#__________________2:06_#########################", // 21-25 "#################################################" - "# #实在是妙! 2020年度百大 #" - "# #UP主获奖感言第一弹... #" - "# #[5万点赞] #" - "# #[up] 哔哩哔哩UP主执事 #" - "# #[▲] 54 观看 :#" + "# #瀹炲湪鏄! 2020骞村害鐧惧ぇ #" + "# #UP涓昏幏濂栨劅瑷绗竴寮... #" + "# #[5涓囩偣璧瀅 #" + "# #[up] 鍝斿摡鍝斿摡UP涓绘墽浜 #" + "# #[鈻瞉 54 瑙傜湅 :#" "#__________________8:29_#########################", "#################################################" - "# #这也叫少女 !戏里戏外 #" - "# #大搞双标!硬核吐槽《... #" + "# #杩欎篃鍙皯濂 !鎴忛噷鎴忓 #" + "# #澶ф悶鍙屾爣!纭牳鍚愭Ы銆... #" "# # #" - "# #[up] 开心嘴炮 #" - "# #[▲] 41.1 观看 :#" + "# #[up] 寮蹇冨槾鐐 #" + "# #[鈻瞉 41.1 瑙傜湅 :#" "#__________________9:11_#########################", "#################################################" - "# #最牛气女学员扣1965分, #" - "# #科三考试全程横冲直撞.. #" + "# #鏈鐗涙皵濂冲鍛樻墸1965鍒嗭紝 #" + "# #绉戜笁鑰冭瘯鍏ㄧ▼妯啿鐩存挒.. #" "# # #" - "# #[up] 老实的刘教练说车 #" - "# #[▲] 87.8 观看 :#" + "# #[up] 鑰佸疄鐨勫垬鏁欑粌璇磋溅 #" + "# #[鈻瞉 87.8 瑙傜湅 :#" "#__________________1:13_#########################", - " ■ ■■ ■■■ 排行榜 ", - " \\︵/ (☆) ︶ 入站必刷 ", // 26-30 - " +------+ |:: 三| +------+ 每周必看 ", - " 、 , ╔―╗╗ ┗―┛┛ 年度动画 ", + " 鈻 鈻犫枲 鈻犫枲鈻 鎺掕姒 ", + " \\锔/ (鈽) 锔 鍏ョ珯蹇呭埛 ", // 26-30 + " +------+ |:: 涓墊 +------+ 姣忓懆蹇呯湅 ", + " 銆 锛 鈺斺曗晽鈺 鈹椻曗敍鈹 骞村害鍔ㄧ敾 ", " ", - "简介", - "评论00000", // 31-35 - "( 点我发弹幕 |", - "√ )", //× - " [我是] 绝伦N [头像] xxxx粉丝 " + "绠浠", + "璇勮00000", // 31-35 + "( 鐐规垜鍙戝脊骞 |", + "鈭 )", //脳 + " [鎴戞槸] 缁濅鸡N [澶村儚] xxxx绮変笣 " " ", - "┌----┐└+关注 ", - " 【标题填充】 bad apple原版高清1440*1080 ^ " + "鈹----鈹愨敂+鍏虫敞 ", + " 銆愭爣棰樺~鍏呫 bad apple鍘熺増楂樻竻1440*1080 ^ " " ----------------------------------------- " - " {▲}[25.5万] {三}[2321] 1-12 BV1Wx411c7JT " - " Θ未经作者授权禁止转载 " + " {鈻瞹[25.5涓嘳 {涓墋[2321] 1-12 BV1Wx411c7JT " + " 螛鏈粡浣滆呮巿鏉冪姝㈣浆杞 " " ------------------------------------------------- ", // 36-40 - " ┓ ┏┫┻┓ ┗┻━┛ 点赞 ", - " ┏┏━┓ ┗┣┳┛ ┛ 不喜欢 ", - " ︵ (币) ︶ 投币 ", - " ☆ ☆☆☆ ☆☆ 收藏 ", - " _◣ (/◤ 分享 ", // 41-45 + " 鈹 鈹忊敨鈹烩敁 鈹椻敾鈹佲敍 鐐硅禐 ", + " 鈹忊攺鈹佲敁 鈹椻敚鈹斥敍 鈹 涓嶅枩娆 ", + " 锔 (甯) 锔 鎶曞竵 ", + " 鈽 鈽嗏槅鈽 鈽嗏槅 鏀惰棌 ", + " _鈼 (/鈼 鍒嗕韩 ", // 41-45 " ", " ", "#################################################" - "# #正确护肤,纵享水润滑肌 #" + "# #姝g‘鎶よ偆锛岀旱浜按娑︽粦鑲 #" "# # #" "# # #" "# #[up] #" - "# #[▲] 87.8 观看 :#" + "# #[鈻瞉 87.8 瑙傜湅 :#" "#################################################", "#################################################" - "# #(東京嗆種Tokyo Ghoul) #" - "# #Unravel-郑晟河-指弹.. #" + "# #(鏉变含鍡嗙óTokyo Ghoul) #" + "# #Unravel-閮戞櫉娌-鎸囧脊.. #" "# # #" - "# #[up] 郑晟河 #" - "# #[▲] 87.8 观看 :#" + "# #[up] 閮戞櫉娌 #" + "# #[鈻瞉 87.8 瑙傜湅 :#" "###################4:26##########################", " ", // 46-50 " ", " ", " ", "#################################################" - "# [我是] 绝伦N lv6 UP #" - "# [头像] #" - "# 肥肠抱歉,暂时没有评论 #" + "# [鎴戞槸] 缁濅鸡N lv6 UP #" + "# [澶村儚] #" + "# 鑲ヨ偁鎶辨瓑锛屾殏鏃舵病鏈夎瘎璁 #" "# ###################### #" - "# 共00000条回复 > :#" + "# 鍏00000鏉″洖澶 > :#" "#################################################", "#################################################" - "# [头像] 绝伦N lv6 UP #" - "# [一个] #" - "# 肥肠抱歉,暂时没有评论 #" + "# [澶村儚] 缁濅鸡N lv6 UP #" + "# [涓涓猐 #" + "# 鑲ヨ偁鎶辨瓑锛屾殏鏃舵病鏈夎瘎璁 #" "# ###################### #" - "# 共00000条回复 > :#" + "# 鍏00000鏉″洖澶 > :#" "#################################################", // 51-55 "#################################################" - "# [头像] 绝伦N lv6 UP #" - "# [一个] #" - "# 肥肠抱歉,暂时没有评论 #" + "# [澶村儚] 缁濅鸡N lv6 UP #" + "# [涓涓猐 #" + "# 鑲ヨ偁鎶辨瓑锛屾殏鏃舵病鏈夎瘎璁 #" "# ###################### #" - "# 共00000条回复 > :#" + "# 鍏00000鏉″洖澶 > :#" "#################################################", "#################################################" - "# [发条友善的评论 ] 0v0 #" + "# [鍙戞潯鍙嬪杽鐨勮瘎璁 ] 0v0 #" "#################################################", - " 热门评论 Ξ按时间 ", + " 鐑棬璇勮 螢鎸夋椂闂 ", " ", " ", // 56-60 " ", @@ -390,37 +390,37 @@ char appMapIcon[100][1000] = { " ", " ", }; -//结构体设计 +//缁撴瀯浣撹璁 struct User { - int uid; // b站uid - char head[L * L]; //头像 - char userName[N]; //用户名 - int coin; //硬币数 - int lv; // b站等级 - //下标0位是计数位,不存信息 - int concern[M]; //关注 - int follower[M]; //粉丝 - int myVideos[M]; //我的视频 - int collectVideos[M]; //我收藏的视频 + int uid; // b绔檜id + char head[L * L]; //澶村儚 + char userName[N]; //鐢ㄦ埛鍚 + int coin; //纭竵鏁 + int lv; // b绔欑瓑绾 + //涓嬫爣0浣嶆槸璁℃暟浣嶏紝涓嶅瓨淇℃伅 + int concern[M]; //鍏虫敞 + int follower[M]; //绮変笣 + int myVideos[M]; //鎴戠殑瑙嗛 + int collectVideos[M]; //鎴戞敹钘忕殑瑙嗛 }; struct Vedio { - int vid; //视频唯一编号 - char title[N]; //标题 - char intro[2 * N]; //简介 - char cover[LL * LL]; //封面 - //视频统计量/观看/点赞/投币/收藏/ + int vid; //瑙嗛鍞竴缂栧彿 + char title[N]; //鏍囬 + char intro[2 * N]; //绠浠 + char cover[LL * LL]; //灏侀潰 + //瑙嗛缁熻閲/瑙傜湅/鐐硅禐/鎶曞竵/鏀惰棌/ int viewNum, likeNum, coinNum, collectNum; - char viewTime[N]; //#播放时长 - char comment[M]; //#评论 + char viewTime[N]; //#鎾斁鏃堕暱 + char comment[M]; //#璇勮 }; -//一些系统功能函数 -void HideCursor() //光标隐藏 +//涓浜涚郴缁熷姛鑳藉嚱鏁 +void HideCursor() //鍏夋爣闅愯棌 { - CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见 + CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } -void gotoxy(int x, int y) //让光标移动到坐标去打印内容函数 +void gotoxy(int x, int y) //璁╁厜鏍囩Щ鍔ㄥ埌鍧愭爣鍘绘墦鍗板唴瀹瑰嚱鏁 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -428,34 +428,34 @@ struct Vedio { pos.Y = y; SetConsoleCursorPosition(handle, pos); } -void fixedWindow() { //可以忽略 - HWND hWnd = GetConsoleWindow(); //获得cmd窗口句柄 +void fixedWindow() { //鍙互蹇界暐 + HWND hWnd = GetConsoleWindow(); //鑾峰緱cmd绐楀彛鍙ユ焺 RECT rc; - GetWindowRect(hWnd, &rc); //获得cmd窗口对应矩形 - //改变cmd窗口风格 + GetWindowRect(hWnd, &rc); //鑾峰緱cmd绐楀彛瀵瑰簲鐭╁舰 + //鏀瑰彉cmd绐楀彛椋庢牸 SetWindowLongPtr(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX); - //因为风格涉及到边框改变,必须调用SetWindowPos,否则无效果 + //鍥犱负椋庢牸娑夊強鍒拌竟妗嗘敼鍙橈紝蹇呴』璋冪敤SetWindowPos锛屽惁鍒欐棤鏁堟灉 SetWindowPos(hWnd, NULL, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, NULL); } -void setColor(short x) //自定义函根据参数改变颜色 +void setColor(short x) //鑷畾涔夊嚱鏍规嵁鍙傛暟鏀瑰彉棰滆壊 { - // if (x >= 0 && x <= 15) //参数在0-15的范围颜色 + // if (x >= 0 && x <= 15) //鍙傛暟鍦0-15鐨勮寖鍥撮鑹 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), - x); //只有一个参数,改变字体颜色 - /* else //默认的颜色白色 + x); //鍙湁涓涓弬鏁帮紝鏀瑰彉瀛椾綋棰滆壊 + /* else //榛樿鐨勯鑹茬櫧鑹 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);*/ } -//一些系统功能函数 +//涓浜涚郴缁熷姛鑳藉嚱鏁 void debug() { static int x = 0, y = 0; static char flag = '#'; - //按下数字就会切换到对应的东西打印方便画画 + //鎸変笅鏁板瓧灏变細鍒囨崲鍒板搴旂殑涓滆タ鎵撳嵃鏂逛究鐢荤敾 char print[11] = " !@#$%^&*("; - int nextgo[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1}; //顺时针wdsa下一步的移动 + int nextgo[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1}; //椤烘椂閽坵dsa涓嬩竴姝ョ殑绉诲姩 int bookMap[128] = {0}; bookMap['w'] = 0, bookMap['d'] = 1; bookMap['s'] = 2, bookMap['a'] = 3; @@ -472,14 +472,14 @@ void debug() { gotoxy(0, 20), printf("x=%d y=%d nowturn='%c'", x, y, flag); } } -void printCuttingLine(int deep, char wall = '-') { ///打印分割线 +void printCuttingLine(int deep, char wall = '-') { ///鎵撳嵃鍒嗗壊绾 for (int i = 1; i < WIDTH - 1; i++) { gotoxy(i, deep); printf("%c", wall); } } -//打印组件函数区域: -void printBoder() { //打印边框 +//鎵撳嵃缁勪欢鍑芥暟鍖哄煙锛 +void printBoder() { //鎵撳嵃杈规 setColor(Boder_Color); for (int i = 0; i < HEIGHT; i++) { for (int j = 0; j < WIDTH; j++) { @@ -491,22 +491,22 @@ void debug() { } } setColor(Normal_Color); - //打印page内置分割线 - int mapHeight = appMap[nowPage][0][0]; //获取地图高度 + //鎵撳嵃page鍐呯疆鍒嗗壊绾 + int mapHeight = appMap[nowPage][0][0]; //鑾峰彇鍦板浘楂樺害 int cuttingLine = - appMap[nowPage][mapHeight][0]; //再最后一行0位获取分割线个数 + appMap[nowPage][mapHeight][0]; //鍐嶆渶鍚庝竴琛0浣嶈幏鍙栧垎鍓茬嚎涓暟 for (int i = 0; i < cuttingLine; i++) { printCuttingLine(appMap[nowPage][mapHeight][i + 1]); } } -//万能字符打印模块 +//涓囪兘瀛楃鎵撳嵃妯″潡 void printDemo(int index, bool on = false) { int x = appMapMessage[index][0]; int y = appMapMessage[index][1]; int h = appMapMessage[index][2]; int w = appMapMessage[index][3]; - int turn = appMapMessage[index][4]; //获取填写图标状态 + int turn = appMapMessage[index][4]; //鑾峰彇濉啓鍥炬爣鐘舵 char prePrint[h + 1][WIDTH]; int cnt = 0; if (turn) { @@ -520,10 +520,10 @@ void printDemo(int index, bool on = false) { for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { gotoxy(y + j, x + i); - if (!on) { //未被选中状态 + if (!on) { //鏈閫変腑鐘舵 if (!turn) { printf("#"); - } //什么都没有的内容页 + } //浠涔堥兘娌℃湁鐨勫唴瀹归〉 else if (turn == 1 && (activeIndexTop == index || activeIndexBottom == index) && @@ -536,22 +536,22 @@ void printDemo(int index, bool on = false) { // printf("%c",str[index++]); } else { if (i == 0 || i == h - 1 || j == 0 || j == w - 1) { - //如果当前是首页推荐标签,那么推荐标签应该是常亮的active状态 - //后面则是选中状态 + //濡傛灉褰撳墠鏄椤垫帹鑽愭爣绛撅紝閭d箞鎺ㄨ崘鏍囩搴旇鏄父浜殑active鐘舵 + //鍚庨潰鍒欐槸閫変腑鐘舵 if (turn == 1 && j == 0) { gotoxy(y + j, x + i); if (index >= 9 && index <= 14 || index >= 21 && index <= 24 || index >= 43 && index <= 45) { setColor(Video_Color); - } //视频的样式 + } //瑙嗛鐨勬牱寮 else if (index >= 15 && index <= 19 || index >= 25 && index <= 28 || index >= 37 && index <= 41 || index == 35) { setColor(Is_Selected3_Color); - } //一些错位字符的样式 + } //涓浜涢敊浣嶅瓧绗︾殑鏍峰紡 else - setColor(Is_Selected1_Color); //正常样式 + setColor(Is_Selected1_Color); //姝e父鏍峰紡 printf("%s", prePrint[i]); // printf("%c",str[index++]); }else if (turn == 0) { @@ -569,27 +569,27 @@ void printDemo(int index, bool on = false) { } if (!on && !turn) { gotoxy(20, 20); - printf("肥 肠 抱 歉 "); + printf("鑲 鑲 鎶 姝 "); gotoxy(14, 22); - printf("你 要 找 的 页 面 不 见 了"); + printf("浣 瑕 鎵 鐨 椤 闈 涓 瑙 浜"); gotoxy(17, 24); - printf("作 者 正 在 开 发 中"); + printf("浣 鑰 姝 鍦 寮 鍙 涓"); gotoxy(17, 26); - printf("按 q 返 回 上 一 页"); + printf("鎸 q 杩 鍥 涓 涓 椤"); } } void clsPage() { - //此处写不清除边框代码 + //姝ゅ鍐欎笉娓呴櫎杈规浠g爜 system("cls"); } -void loadPage() { //加载首页菜单 - int book[100] = {0}; //伪预加载,加载过的界面就不再加载 +void loadPage() { //鍔犺浇棣栭〉鑿滃崟 + int book[100] = {0}; //浼鍔犺浇锛屽姞杞借繃鐨勭晫闈㈠氨涓嶅啀鍔犺浇 printBoder(); - int h = appMap[nowPage][0][0] - 2; //减去上下墙体 + int h = appMap[nowPage][0][0] - 2; //鍑忓幓涓婁笅澧欎綋 int w = 5; for (int i = 1; i <= h; i++) { for (int j = 1; j <= w; j++) { - int index = appMap[nowPage][i][j]; //获取对应模块的对应值 + int index = appMap[nowPage][i][j]; //鑾峰彇瀵瑰簲妯″潡鐨勫搴斿 if (!book[index]) printDemo(index, false); book[index] = 1; @@ -597,121 +597,121 @@ void clsPage() { } } -void checkAction(int action) { //引入路由跳转 - if (action == 3) { //消息栏 +void checkAction(int action) { //寮曞叆璺敱璺宠浆 + if (action == 3) { //娑堟伅鏍 nowPage = 5; - } else if (action == 5) { //首页 + } else if (action == 5) { //棣栭〉 nowPage = 1; - } else if (action == 6) { //热门 + } else if (action == 6) { //鐑棬 nowPage = 2; } else if ((action >= 9 && action <= 14) || (action >= 21 && action <= 24)) { onPlay = true; - nowPage = 4; //进入视频详细页面 - } else if (action >= 15 && action <= 19) { //底层标签栏 + nowPage = 4; //杩涘叆瑙嗛璇︾粏椤甸潰 + } else if (action >= 15 && action <= 19) { //搴曞眰鏍囩鏍 if (action == 15) { - activeIndexBottom = 15; //响应变成首页 + activeIndexBottom = 15; //鍝嶅簲鍙樻垚棣栭〉 activeIndexTop = 5; - nowPage = 1; //没写界面先放首页 后面就nowPage要对应内容 + nowPage = 1; //娌″啓鐣岄潰鍏堟斁棣栭〉 鍚庨潰灏眓owPage瑕佸搴斿唴瀹 } else nowPage = 0; - } else if (action == 29) { //点击视频模块 则对应停止视频 + } else if (action == 29) { //鐐瑰嚮瑙嗛妯″潡 鍒欏搴斿仠姝㈣棰 if (!stopPlay) stopPlay = true; else stopPlay = false; } else { - nowPage = 0; // 没写的界面404 + nowPage = 0; // 娌″啓鐨勭晫闈404 } - activeIndexTop = action; //判断完再切回来 + activeIndexTop = action; //鍒ゆ柇瀹屽啀鍒囧洖鏉 } void move() { - //处理初始数据 + //澶勭悊鍒濆鏁版嵁 static int x = 1, y = 1; static int oldPage = nowPage; int oldX = x, oldY = y; int nextgo[5][2] = {0, 0, -1, 0, 0, - 1, 1, 0, 0, -1}; //顺时针wdsa下一步的移动 + 1, 1, 0, 0, -1}; //椤烘椂閽坵dsa涓嬩竴姝ョ殑绉诲姩 int bookMap[128] = {0}; bookMap['w'] = 1, bookMap['d'] = 2; bookMap['s'] = 3, bookMap['a'] = 4; - //取到当前位置 - //一个index下标位置就存储了一个action + //鍙栧埌褰撳墠浣嶇疆 + //涓涓猧ndex涓嬫爣浣嶇疆灏卞瓨鍌ㄤ簡涓涓猘ction int index = appMap[nowPage][x][y]; int oldIndex = index; - printDemo(index, false); //回退上次的位置 + printDemo(index, false); //鍥為涓婃鐨勪綅缃 char turn = _getch(); x += nextgo[bookMap[turn]][0]; y += nextgo[bookMap[turn]][1]; index = appMap[nowPage][x][y]; - if (index == 0) { //如果是边界则回退 + if (index == 0) { //濡傛灉鏄竟鐣屽垯鍥為 x = oldX, y = oldY; - } else { //负责就移动到下一个新的位置 + } else { //璐熻矗灏辩Щ鍔ㄥ埌涓嬩竴涓柊鐨勪綅缃 while (oldIndex == index && index != 0 && bookMap[turn] != 0) { x += nextgo[bookMap[turn]][0]; y += nextgo[bookMap[turn]][1]; index = appMap[nowPage][x][y]; - } // while就是跳过占多个坐标的状态 + } // while灏辨槸璺宠繃鍗犲涓潗鏍囩殑鐘舵 if (index == 0) x = oldX, y = oldY; } index = appMap[nowPage][x][y]; - printDemo(index, true); //打印新的状态 + printDemo(index, true); //鎵撳嵃鏂扮殑鐘舵 if (turn == ' ' || turn == 'q') { if (turn == ' ') { checkAction(index); } else { onPlay = false; stopPlay = true; - nowPage = 1; //回到首页 + nowPage = 1; //鍥炲埌棣栭〉 } - if (nowPage != oldPage) { //界面变化 + if (nowPage != oldPage) { //鐣岄潰鍙樺寲 oldPage = nowPage; x = 1; y = 1; - clsPage(); //除了边框全部擦除 - loadPage(); //加载新界面 + clsPage(); //闄や簡杈规鍏ㄩ儴鎿﹂櫎 + loadPage(); //鍔犺浇鏂扮晫闈 } } } -void playVideo() { //为对接需要本地文件 - int w = 51; //宽度 - int h = 14; //高度 - int PAGE_LIMIT = 4023; //帧数 - int N = w * h; //字符数 +void playVideo() { //涓哄鎺ラ渶瑕佹湰鍦版枃浠 + int w = 51; //瀹藉害 + int h = 14; //楂樺害 + int PAGE_LIMIT = 4023; //甯ф暟 + int N = w * h; //瀛楃鏁 char str[N]; - char name[] = "badapple/ASCII-序列 010001.txt"; // 13 14 15 16位 + char name[] = "badapple/ASCII-搴忓垪 010001.txt"; // 13 14 15 16浣 int imageNum, tempNum, n = 1, p, q; - //帧操作 + //甯ф搷浣 for (imageNum = 1; imageNum <= PAGE_LIMIT; imageNum++) { if (!onPlay) - return; //杀死线程则返回 - if (stopPlay) { //停止播放则暂停 + return; //鏉姝荤嚎绋嬪垯杩斿洖 + if (stopPlay) { //鍋滄鎾斁鍒欐殏鍋 if (imageNum > 0) imageNum--; } else { int tempNum = imageNum; for (p = 0; p < 4; p++) { - int num = tempNum % 10; //获取第p+1位 + int num = tempNum % 10; //鑾峰彇绗琾+1浣 tempNum /= 10; name[25 - p] = num + '0'; } FILE* fp; - //打开文本 + //鎵撳紑鏂囨湰 if ((fp = fopen(name, "r")) == NULL) { printf("%d", imageNum); system("pause"); continue; } - //读取文本 + //璇诲彇鏂囨湰 int line = 1; while (fgets(str, N, fp) != NULL) { gotoxy(1, line++); printf("%s", str); } - //关闭文本 + //鍏抽棴鏂囨湰 fclose(fp); } int timeLimit = 1000; @@ -726,8 +726,8 @@ void init() { char cmd[50]; sprintf(cmd, "mode con cols=%d lines=%d", WIDTH, HEIGHT); printf("%s", cmd); - system(cmd); //设置界面大小 - system("color 07"); //设置界面颜色。 + system(cmd); //璁剧疆鐣岄潰澶у皬 + system("color 07"); //璁剧疆鐣岄潰棰滆壊銆 fixedWindow(); for (int i = 0; i < HEIGHT; i++) { for (int j = 0; j < WIDTH; j++) { @@ -743,14 +743,14 @@ void init() { } int main() { - // ctrl+滚轮可以调大界面 + // ctrl+婊氳疆鍙互璋冨ぇ鐣岄潰 init(); while (1) { if (onPlay) { playVideo(); } if (kbhit()) { - // debug(); //开启debug就会显示坐标信息,并且注释move() + // debug(); //寮鍚痙ebug灏变細鏄剧ず鍧愭爣淇℃伅锛屽苟涓旀敞閲妋ove() move(); } } diff --git "a/\345\223\224\345\223\251\345\223\224\345\223\251\347\247\273\345\212\250\347\253\257/BilibiliDemo.exe" "b/\345\223\224\345\223\251\345\223\224\345\223\251\347\247\273\345\212\250\347\253\257/BilibiliDemo.exe" new file mode 100644 index 0000000000000000000000000000000000000000..09171178afaed77b0f199329a7a02eb887dc632a GIT binary patch literal 527849 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⁡ztM`f1L3v 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 z

-dgi@JBvN$le89Rtd`!79cexVT?gHwwezL1pa| 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 literal 0 HcmV?d00001 diff --git "a/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210.txt" "b/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210.txt" index 69b54a1..c07ee53 100644 --- "a/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210.txt" +++ "b/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210.txt" @@ -1,19 +1,3 @@ -/*----------------------------------- -绋嬪簭 锛 鎵撶爾鍧楋紙鐗╃悊鐗堬級 -浣滆 锛 404name -瀹屾垚鏃堕棿锛 2020.3.15 - -娓告垙榛樿鍦板浘鍧囬噰鐢╢or寰幆+閫昏緫鏋勫缓鎵浠ワ紝骞舵病鏈夌洿鎺ュ垵濮嬪寲鍦板浘 - -瀹炵幇鍘熺悊: autochange() 鍑芥暟娉ㄩ噴閭i噷 - -bug锛 1.鐩墠瀵硅鐩哥鏄繘琛岀殑鐩存帴鎵撶牬璇ユ柟鍧楋紝鍥犱负娴嬭瘯鍒拌繘琛屾甯哥殑纰版挒杩斿洖浼氶噸澶嶄箣鍓嶇殑璺 锛堢畻鏄紭鍖栵級 - 2.鏈煡鐨勫師鍥犲鑷村紑灞褰卞瓙鑴辫妭锛岀洰鍓嶅凡缁忎紭鍖栧埌鍚庢湡鍑犱箮鐪嬩笉鍒拌劚鑺傘 - -浼樺寲锛 瀹炵幇绫讳技璐悆铔囩帺娉曪紝鍒堕犺窡闅忕殑绉诲姩杞ㄨ抗锛屽苟涓斾氦鍙夌殑绉诲姩杞ㄨ抗涓嶄細鐩存帴娓呴櫎瀵艰嚧鑴辫妭銆 - 閰嶈壊浼樺寲 - ----------------------------------*/ #include //鐢ㄤ簬getch锛堬級 #include #include @@ -21,76 +5,17 @@ bug锛 1.鐩墠瀵硅鐩哥鏄繘琛岀殑鐩存帴鎵撶牬璇ユ柟鍧楋紝鍥犱负娴嬭瘯鍒 #include #include #define pi 3.14 -const double g = 10; //鏍囧噯鏁拌秺妯$硦锛岃建杩硅秺杩炶疮銆 +const double g = 10; //闈炴爣鍑嗘鍧愭爣绯 +/*------------------------ -//---------------------------------------------------------------------------------------------------------------------------------- -// 绯荤粺榛樿鐢熸垚鍏冲崱鍦板浘锛岃嫢鎯宠嚜宸辨敼閫犲叧鍗¤灏1 璁剧疆涓0骞朵笖鍐嶄笅鏂瑰垵濮嬪寲鍦板浘锛堥粡璐村湴鍥撅級 -int auto_made_map = 1; -char man_made_map[1000][1000]; -//--------------------------------------------------------------------------------------------------------------------------------- -char map[1000][1000]; -char End[200][800] = { - {"## ## ## ## # "}, - {" ## # ##### ###### ## ## "}, - {" ##### ###### ###### ## # "}, - {" ####### ## ###### "}, - {"## ## # ##### ########## "}, - {" ## #### ##### ## ###### "}, - {" #### ## ## ## ## # "}, - {" ## # ###### ### ## ## "}, - {" # ## # ###### ## ## ## "}, - {" # ## # ## #### ### "}, - {" ## ## # ## ## # ## #"}, - {" # ## # ## ## #### ##"}, - {"## ### # ### # ### ####"}, - {"## ## ## ## ## ###"}, - {" "}, - {" ## ## ## "}, - {" ## ######### ###############"}, - {" ## ######### ###############"}, - {"## ## ## ## "}, - {"###### ####### ############ "}, - {" ## ####### ############ "}, - {" ## ## ## ## "}, - {"###### ####### ############ "}, - {"###### ####### ##### "}, - {" ## ## ## #### "}, - {" ### ## ## ## ## ## "}, - {"###### ####### ### ## ### "}, - {"### ####### ## ## ## "}, - {" ## ## ## "}, - {" "}, - {" 鎸 涓 娆 鍥 杞 缁 缁 "}, -}; -char menu[40][40] = { - {" <---------------> "}, - {" < 鎵 鐮 鍧 > "}, - {" <---------------> "}, - {" "}, - {" <1> 寮濮嬫父鎴 <$> "}, - {" "}, - {" <2> 璐悆铔噈od <$> "}, - {" "}, - {" <3> 缂栬緫鍦板浘 <$> "}, - {" "}, - {" <4> 閫鍑烘父鎴 <$> "}, - {" "}}; - -//鍏ㄥ眬鍙橀噺鍖猴紝鍦╥nit閲岄潰鏀瑰彉 -char wall, food, air, brick; -int width, length; -double X, Y, x, y, Vx, Vy, t, V; //榛樿鍚戜笅鍚戝彸涓烘 -int old_x, old_y, head, tail, max, step, if_miss, food_num, goal, color; -int if_start, if_load_snake_mod, debug, life; //debug妯″紡璋冩垚1鎵嬪姩寮鍚 -int temp_x, temp_y, menu_x, menu_y, left, right; //涓存椂鍧愭爣 -double C[8] = {0, 10, 30, 70, 90}; //鍒濆鏂滄姏鐨勮搴︼紝鑷彸鍚戜笂杞(鐩墠宸茶皟鏁村ソ鏈濂界殑瑙掑害) - -struct Step //杞ㄨ抗 -{ - int x; - int y; -} s[1000]; +娉ㄦ剰锛氳繖閲屾槸鐢ㄧ殑cpp鍐欑殑锛岃鏀筩璇█鍒欏彧瑕佹妸鍏ㄥ眬鍙橀噺鍒濆鍖栨斁杩沬nit閲岄潰鍗冲彲 +鏂滄姏杩愬姩灏廳emo + +鍘熺悊鍓嶅線main鍑芥暟 + +鑻ヨ鍙栨秷璐悆铔囪灏唂ood鍙樹负0 +--------------------------*/ void HideCursor() //鍏夋爣闅愯棌 { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 @@ -106,153 +31,227 @@ void gotoxy(int x, int y) //鍧愭爣鍑芥暟 SetConsoleCursorPosition(handle, pos); } +//鍙橀噺鍖 +char map[1000][1000]; +int width = 40, length = 150; +double X, Y, x, y, Vx, Vy, t; +int old_x, old_y, head = 0, tail = 0, max = 60, step = 0, if_miss = 0, food = 500, color = 0; + +struct Step +{ + int x; + int y; +} s[1000]; + +//double C[8] = {0,10,30,70,90}; + +double C = 70; //鍙皟鏁寸殑瑙掑害锛岃嚜鍙冲悜涓婅浆瑙 0-姘村钩鍑哄皠 90鍨傜洿涓婃姏 + void init() { - int i, j, a, b; + printf("濡傛灉鑺卞睆鍒欒皟鏁翠负18瀛楀彿锛堜笉鍚岀數鑴戝彲鑳芥儏鍐典笉鍚岋級\n鎸夊洖杞﹀紑濮"); + getchar(); HideCursor(); - width = 40, length = 150; - wall = '#', food = '*', air = ' ', brick = 'O'; - head = 0, tail = 0, max = 60, step = 0, if_miss = 0, food_num = 400, goal = 0, color = 0; - debug = 0, life = 3; //debug妯″紡璋冩垚1鎵嬪姩寮鍚 - temp_x = 2, temp_y = 2, menu_x = 18, menu_y = 68, left = 4, right = 20; //涓存椂鍧愭爣 gotoxy(0, 0); - - //鑿滃崟妯″紡 - if (if_start == 0) - { //棣栭〉 - for (i = 0; i <= width; i++) - { //鐢熸垚鍦板浘妯℃澘 - for (j = 0; j <= length; j++) - { - if (i == 0 || i == width || j == 0 || j == length) - map[i][j] = wall; - else if ((i == width / 3 || i == width * 2 / 3) && (j >= length * 2 / 5 && j <= length * 3 / 5)) - map[i][j] = wall; - else if ((i >= width / 3 && i <= width * 2 / 3) && (j == length * 2 / 5 || j == length * 3 / 5)) - map[i][j] = wall; - else - map[i][j] = air; - } - } - while (food_num--) - { //璐悆铔囩敓鎴愰鐗 - int a = rand() % width; - int b = rand() % length; - if ((a >= width / 3 && a <= width * 2 / 3) && (b >= length * 2 / 5 && b <= length * 3 / 5) || a == 0 || b == 0) - continue; - map[a][b] = food; - } - for (i = 0; i <= width; i++) - { //甯冪疆鐮栧潡brick - for (j = 0; j <= length; j++) - { - if ((i == 15 || i == 20) && ((j >= 4 && j <= 50) || (j >= 100 && j <= 130))) - map[i][j] = brick; - } + for (int i = 0; i <= width; i++){ + for (int j = 0; j <= length; j++){ + if (i == 0 || i == width || j == 0 || j == length) + map[i][j] = '#'; + else + map[i][j] = ' '; } } - //娓告垙妯″紡 - else if (if_start == 1 || if_start == -1) - { - if (auto_made_map == 1) - { - for (i = 0; i <= width; i++) - { //鐢熸垚鍦板浘妯℃澘 - for (j = 0; j <= length; j++) - { - if (i == 0 || i == width || j == 0 || j == length) - map[i][j] = wall; - else if ((i == width * 2 / 3) && (j >= length * 2 / 5 && j <= length * 3 / 5)) - map[i][j] = wall; - else if (i == width - 1 && j >= left && j <= right) - map[i][j] = wall; - else - map[i][j] = air; - } - } - if (if_load_snake_mod == 1) - { - food_num = 400; - while (food_num--) - { //璐悆铔囩敓鎴愰鐗 - a = rand() % width; - b = rand() % length; - if ((a >= width / 3 && a <= width * 2 / 3) && (b >= length * 2 / 5 && b <= length * 3 / 5) || a == 0 || b == 0) - continue; - map[a][b] = food; - } - } - for (i = 0; i <= width; i++) - { //甯冪疆鐮栧潡brick - for (j = 0; j <= length; j++) - { - if (((i >= 14 && i <= 15) && (j >= 1 && j <= 20)) || ((i >= 14 && i <= 15) && (j >= 130 && j <= 149))) - map[i][j] = brick; - if (((i >= 20 && i <= 22) && (j >= 10 && j <= 50)) || ((i >= 20 && i <= 22) && (j >= 100 && j <= 140))) - map[i][j] = brick; - if ((i == 10 || i == 11) && ((j >= 10 && j <= 50) || (j >= 100 && j <= 140))) - map[i][j] = brick; - } - } - } - else - { - for (i = 0; i <= width; i++) - { - strcpy(map[i], man_made_map[i]); - } - auto_made_map = 1; - } - gotoxy(2, width + 3); - SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); - printf("life:"); - for (i = 0; i < life; i++) - printf("鈻"); + while (food--){ + int a = rand() % width; + int b = rand() % length; + map[a][b] = '*'; } - gotoxy(0, 0); - for (i = 0; i <= width; i++) - { //鎵撳嵃鍦板浘 - for (j = 0; j <= length; j++) - { - if (if_start == 0 && i >= 14 && i <= 25 && j >= 61 && j <= 89) - map[i][j] = menu[i - 14][j - 61]; - if (map[i][j] == wall && if_start != -1) - SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 60); - else if (map[i][j] == brick && if_start != -1) - SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 80); - else - SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); - if (i == width) - printf("!"); - else - printf("%c", map[i][j]); + for (int i = 0; i <= width; i++){ + for (int j = 0; j <= length; j++){ + printf("%c", map[i][j]); } printf("\n"); } - //鏋勫缓鍒濆浣嶇疆浠ュ強閫熷害鍜屾柟鍚戣搴 - X = width - 5; + X = width - 5; //璁剧疆鍒濆浣嶇疆 Y = 4; - old_x = (int)X; - old_y = (int)Y; + old_x = X; + old_y = Y; s[step].x = old_x; - s[step].y = old_y; - V = 26; - Vx = -V * sin(C[3] * pi / 180.0); //閫熷害鍚戝彸鍚戜笅涓烘鏂瑰悜 - Vy = V * cos(C[3] * pi / 180.0); + s[step].y = old_y; //寰幆缁撴瀯浣撳偍瀛樷滆泧鈥濈殑韬綋 + int V = 25, cut = 0; //鍒濋熷害 + Vx = -V * sin(C * pi / 180.0); //鍒嗚В閫熷害 + Vy = V * cos(C * pi / 180.0); //閫熷害鍚戝彸鍚戜笅涓烘鏂瑰悜 } -void gameover() +int main() { - int i, j; - gotoxy(0, 0); - for (i = 0; i <= width + 6; i++) - { - for (j = 0; j <= length; j++) + init(); + int cnt = 10000; //鑷繁璁剧疆锛屽彲浠ユ棤闄 + int flag = 1; //鍒ゆ柇鎯呭喌 + + //涓昏绠楁硶鍖哄煙 + while (cnt--){ + double t1, t2; + double s1, s2; + //杩欓噷鐨勨滆建杩光濇槸瀛樺湪鈥滃惊鐜槦鍒椻濈殑缁撴瀯浣撲腑鐨 + //map鏁扮粍涓寮濮嬪彧鎵撳嵃涓娆★紝闅忓悗鍦ㄥ師鏁扮粍涓婄殑鏀瑰彉涓嶄細浣滅敤鏄剧ず銆 + //鏄剧ず杞ㄨ抗鐨勫叾瀹炶繕鏄墦鍗扮┖鏍硷紝浣嗕笉鍚岀殑鏄鑹 + //娑堝幓杞ㄨ抗涔熸墦鍗扮櫧鑹茬殑绌烘牸锛歋etConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); + /*------------------------------------------------------- + 鏍稿績鍏紡锛 X = X0 + Vx * t + 1/2 * VX * t * t; + Y = Y0 + Vy * t; + 鏍稿績鎬濇兂锛 路濡傛灉閫夋嫨鏃堕棿浣滀负绉诲姩鍙傝冿紝鍒欐瘡绉掍細鍑虹幇鐐圭浉宸お杩 + 闅句互瀹炵幇杩炵画銆 + 路杩欓噷鍙嶈繃鏉ワ紝浠ヨ繛缁负鍓嶆彁锛屽皾璇曟壘鍑烘瘡绉诲姩涓涓崟浣 + 闇瑕佸灏戞椂闂达紝鍒欒兘渚濇鎵惧嚭涓涓繛缁殑鏇茬嚎銆 + + 鍑虹幇闂锛 c璇█鏁扮粍鍙兘鏄暣鏁帮紝鎵浠ョЩ鍔ㄦ柟鍚戝彧鑳藉瓨鍦ㄦ按骞冲拰绔栫洿锛 + 涓嶈兘渚濈収杩愬姩鏂瑰悜瀹炵幇寰鏌愪釜鐗瑰畾鐨勮搴︾Щ鍔ㄤ竴涓崟浣嶃 + 骞朵笖瑕佹帓闄ゆ柇鑺傞棶棰橈紙鍗虫墦鍗扮殑鏇茬嚎鏂柇缁画锛 + + 瑙e喅鏂规硶锛 鎶婄壒绉诲姩鏂瑰悜绉诲姩鍗曚綅鍒嗚В鍒癤锛孻涓娿 + 鍒嗗埆绠楀嚭 X 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 Y 鐨勮窛绂 s1 <=> flag == 1 + Y 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 X 鐨勮窛绂 s2 <=> flag == 2 + + 浼樺厛閫夋嫨鏇寸煭鐨刴in锛坰1,s2),鐒跺悗浠lag瀵瑰簲涓嶅悓鐨勬ā寮忎綔涓轰笅涓娆$Щ鍔ㄧ殑鍩哄噯銆 + 杩欐牱鎿嶄綔鑳戒繚璇佺嚎娈典粎浠呭彧鍦ㄦ按骞充笌绔栫洿鏂瑰悜绉诲姩鏃剁嚎娈典粛鑳借繛缁 + + 鎵撲釜姣旀柟锛氫竴娈垫枩鐜囦负2鐨勭洿绾 + x澧炲姞1 Y澧炲姞2浣犵湅锛岃繖閲孻鑴辫妭浜嗕細涓涓嬪瓙鍦╕涓婄Щ鍔ㄤ簡2鏍笺 + 浣嗗疄闄呬笂鎴戜滑鐪 + Y澧炲姞1 X瀹為檯涓婂彧澧炲姞0.5. + 鎵浠ヤ竴娈垫洸绾匡紝浠栫殑寰厓鏋勬垚鐨勭洿绾夸笉绠℃枩鐜囧鍋忓兓锛岄兘鑳借繛缁墦鍗般 + 杩欏氨鏄负浠涔堝彇min锛坰1,s2锛夊喅瀹氱Щ鍔ㄦā寮忕殑鍘熷洜銆 + 杩欐牱鑳戒繚璇佷粎浠呭彧鍦ㄤ笂绉诲姩涓涓崟浣峣nt锛圷锛夛紝鑰宨nt锛圶锛夋槸涓嶅鍔犵殑锛屾诞鐐瑰瀷鐨刋鍙堟妸閲忕疮璁″埌涓嬩竴娆″湪鍒ゆ柇銆 + + 鏈鍚庡疄鐜帮細 + X锛孻鐢╠ouble鍌ㄥ瓨锛屼繚璇佸疄闄呭彔鍔犺兘杩炵画锛 + 鑰屽疄闄呮墦鍗帮紝鏄笉鑳借锛5,6.28锛夎繖鏍风殑娴偣鍨嬭兘鍦╟璇█涓婃墦鍗帮紝鎵浠ユ垜浠噰鐢╥nt鏁村瀷鐨刼ld_x,old_y鏉ユ壙鎺锛孻浠ヤ究浜庢墦鍗板湪灞忓箷涓娿 + + 鎴戜滑鎸夌収鏃堕棿涓哄惊鐜彧鑳藉湪灞忓箷涓婃墦鍗颁竴涓叉柇鏂画缁殑绫绘姏鐗╃嚎鐨勭偣銆 + 浣嗘垜浠寜鐓ц蛋涓涓滄柟鍚戝崟浣嶁濓紝渚濇绫诲彔锛屾垜浠氨鑳藉緱鍒颁竴涓茶繛缁殑绾裤 + + 缁撴灉瀹炵幇锛 鐢变簬锛岀畻娉曞亸鍚戜笉涓ヨ皑锛屽彲鑳戒細鍑虹幇灏忛儴鍒嗗紑灞鏂妭bug锛屼絾闅忕潃寰幆鎺ㄨ繜锛屽悗鏈熻兘100%杩炵画锛侊紒 + + 鍔犲叆浜轰负淇 + + 缁忔祴璇曞皬鑼冨洿鐨勬暟鎹兘瀹岀編鎵撳嵃鍑虹墿鐞嗘姏鐗╃嚎锛侊紒锛 + ------------------------------------------------------------*/ + //绠楁硶璧风偣锛 + + //浜屻佸綋Y澧炲姞涓涓崟浣嶆柟鍚戞椂 锛堟妸杩欎釜绠鍗曠殑鏀惧墠闈㈠彲浠ョ被姣旂煡閬撳悗闈閭i噷鍦ㄥ共鍢涳級 + t2 = 1.0 / fabs(Vy); + s2 = Vx * t2 + 0.5 * g * t2 * t2; + + //涓銆佸綋X鏀瑰彉涓涓崟浣嶆柟鍚戞椂锛堣冭檻锛 + // 1/2 g*t*t + vx * t = 1 瑙d竴鍏冧簩娆℃柟绋嬶紙杩欓噷鍒ゆ柇 澧炲姞鍚庡噺灏戜粛鐒舵槸1 鍙兘浼氭湁4绉嶆儏鍐碉級 + //灏辩敤鍏紡瑙h繖涓5*t*t + Vx t - 1= 0;锛堟璐1锛 + //鎴戣繖閲岀殑纭鏉備簡锛屼絾鏄繚闄╋紝濡傛灉鑳借璁℃洿濂界殑绠楁硶灏卞彲浠ュ璇曡瘯銆 + double temp; + double x1_t1 = (-Vx + sqrt(Vx * Vx + 20)) / 10; + double x2_t1 = (-Vx - sqrt(Vx * Vx + 20)) / 10; + double x3_t1 = (-Vx + sqrt(Vx * Vx - 20)) / 10; + double x4_t1 = (-Vx - sqrt(Vx * Vx - 20)) / 10; + if (x1_t1 > 0 && x2_t1 > 0) + t1 = x1_t1 < x2_t1 ? x1_t1 : x2_t1; + else + t1 = x1_t1 >= 0 ? x1_t1 : x2_t1; + if (x3_t1 > 0 && x4_t1 > 0) + temp = x3_t1 < x4_t1 ? x3_t1 : x4_t1; + else if (x3_t1 * x4_t1 < 0) + temp = x3_t1 >= 0 ? x3_t1 : x4_t1; + else + temp = 10; + t1 = t1 < temp ? t1 : temp; + //杩欓噷涓昏灏变负浜嗘眰涓涓猼1 + s1 = t1 * Vy; + + //杩涜鎷╃煭鍒ゆ柇 + if ((int)s1 == 0) + flag = 1; + else if ((int)s2 == 0) + flag = 2; + else + flag = s1 < s2 ? 1 : 2; + //閫夋嫨鏈浼樿繘琛屽鐞 + if (flag == 1){ + X = X + Vx * t1 + 5 * t1 * t1; //绛変环浜 X = X +- 1 锛堝洜涓洪熷害鏄甫鏂瑰悜鐨勶紝姹傚嚭鏃堕棿鍦ㄥ弽杩囨潵姹1姝ゆ椂鐨1涔熸槸甯︽璐熷彿鐨勫氨涓嶈鍒嗙被鑰冭檻浜嗭級 + Y = Y + s1; //X鏀瑰彉1 Y鐞嗚涓婃敼鍙樼殑澶у皬銆 + Vx = Vx + g * t1; + } + else if (flag == 2){ + Y = Y + Vy * t2; //绛変环浜 Y = Y +- 1 + X = X + s2; //Y鏀瑰彉1 X鐞嗚涓婃敼鍙樼殑澶у皬銆 + Vx = Vx + g * t2; + } + + old_x = (int)X; //鏁村瀷鎵挎帴涓嬩竴姝ョ殑绉诲姩鍚庨潰瀛樺叆寰幆缁撴瀯浣撴暟缁勪互鎵撳嵃 + old_y = (int)Y; + //绠楁硶缁堢偣 + //-------------------------------------------------------------------------------------------------------- + //涔嬪悗鏄晫闈㈡敼鍙橀昏緫瀹炵幇 + //纰板鏀瑰彉鏂瑰悜 + if (X >= width - 2 || X <= 2){ + color = (color + 1) % 5; + Vx = -Vx; + } + if (Y >= length - 2 || Y <= 2){ + color = (color + 1) % 5; + Vy = -Vy; + } + + //娑堥櫎鏈熬鑺傜偣 + if (if_miss == 1){ + //map鏄悗鍙版暟缁勶紝濡傛灉韬綋缁忚繃涓娆″氨++锛屾秷鍘讳竴娆″氨--鐩村埌鍥炲鍘熸潵鐘舵佸氨鍙互鎵撳嵃娑堝幓銆傞槻姝㈣嚜宸卞悆鎺夎嚜宸辩殑韬綋 + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); + gotoxy(s[step].y, s[step].x); + map[s[step].x][s[step].y]--; + if (map[s[step].x][s[step].y] == ' ') //闃叉鑷繁鍚冭嚜宸 + printf(" "); + } + s[step].x = old_x; + s[step].y = old_y; + + if (map[s[step].x][s[step].y] == '*') //锛堣椽鍚冭泧妯″紡锛夊悆鍒伴鐗╄韩浣撳闀 { - printf(" "); + map[s[step].x][s[step].y] = ' '; + max++; + gotoxy(2, width + 2); + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); + printf("len:%5d", max); } - Sleep(20); + + //鍐冲畾韬綋棰滆壊 + switch (color) + { + case 0: + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 60); + break; //钃濊壊 + case 1: + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 70); + break; //绾㈣壊 + case 2: + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 40); + break; //缁胯壊 + case 3: + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); + break; //娣辫摑鑹 + case 4: + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 80); + break; //绱壊 + } + gotoxy(s[step].y, s[step].x); + map[s[step].x][s[step].y]++; + printf(" "); + step++; + if (step >= max) + { + if_miss = 1; //濡傛灉闀垮害寮濮嬪ぇ浜庢渶闀块暱搴﹀氨瑕佸紑濮嬩粠鏈熬娑堥櫎灏捐妭鐐逛簡 + } + step = step % max; + Sleep(10); //鎶10鏀规垚绔栫洿鍧愭爣鍏充簬楂樺害鐨勫叕寮忓彲浠ユā鎷熶笅鍧犵殑鏃跺欓熷害 } +} } gotoxy(0, 0); printf("鍗冲皢閫鍑烘父鎴"); Sleep(2000); diff --git "a/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\212\233\347\211\251\347\272\277demo.txt" "b/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\212\233\347\211\251\347\272\277demo.txt" index 34b68d6..13ef270 100644 --- "a/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\212\233\347\211\251\347\272\277demo.txt" +++ "b/\346\211\223\347\240\226\345\235\227\347\211\251\347\220\206\347\211\210/\346\212\233\347\211\251\347\272\277demo.txt" @@ -1,28 +1,28 @@ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include #include -#include //用于rand +#include //鐢ㄤ簬rand #include #include #define pi 3.14 -const double g = 10; //非标准正坐标系 +const double g = 10; //闈炴爣鍑嗘鍧愭爣绯 /*------------------------ -注意:这里是用的cpp写的,要改c语言则只要把全局变量初始化放进init里面即可 +娉ㄦ剰锛氳繖閲屾槸鐢ㄧ殑cpp鍐欑殑锛岃鏀筩璇█鍒欏彧瑕佹妸鍏ㄥ眬鍙橀噺鍒濆鍖栨斁杩沬nit閲岄潰鍗冲彲 -斜抛运动小demo +鏂滄姏杩愬姩灏廳emo -原理前往main函数 +鍘熺悊鍓嶅線main鍑芥暟 -若要取消贪吃蛇请将food变为0 +鑻ヨ鍙栨秷璐悆铔囪灏唂ood鍙樹负0 --------------------------*/ -void HideCursor() //光标隐藏 +void HideCursor() //鍏夋爣闅愯棌 { - CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见 + CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -31,7 +31,7 @@ void gotoxy(int x, int y) // SetConsoleCursorPosition(handle, pos); } -//变量区 +//鍙橀噺鍖 char map[1000][1000]; int width = 40, length = 150; double X, Y, x, y, Vx, Vy, t; @@ -45,11 +45,11 @@ struct Step //double C[8] = {0,10,30,70,90}; -double C = 70; //可调整的角度,自右向上转角 0-水平出射 90垂直上抛 +double C = 70; //鍙皟鏁寸殑瑙掑害锛岃嚜鍙冲悜涓婅浆瑙 0-姘村钩鍑哄皠 90鍨傜洿涓婃姏 void init() { - printf("如果花屏则调整为18字号(不同电脑可能情况不同)\n按回车开始"); + printf("濡傛灉鑺卞睆鍒欒皟鏁翠负18瀛楀彿锛堜笉鍚岀數鑴戝彲鑳芥儏鍐典笉鍚岋級\n鎸夊洖杞﹀紑濮"); getchar(); HideCursor(); gotoxy(0, 0); @@ -72,81 +72,81 @@ void init() } printf("\n"); } - X = width - 5; //设置初始位置 + X = width - 5; //璁剧疆鍒濆浣嶇疆 Y = 4; old_x = X; old_y = Y; s[step].x = old_x; - s[step].y = old_y; //循环结构体储存“蛇”的身体 - int V = 25, cut = 0; //初速度 - Vx = -V * sin(C * pi / 180.0); //分解速度 - Vy = V * cos(C * pi / 180.0); //速度向右向下为正方向 + s[step].y = old_y; //寰幆缁撴瀯浣撳偍瀛樷滆泧鈥濈殑韬綋 + int V = 25, cut = 0; //鍒濋熷害 + Vx = -V * sin(C * pi / 180.0); //鍒嗚В閫熷害 + Vy = V * cos(C * pi / 180.0); //閫熷害鍚戝彸鍚戜笅涓烘鏂瑰悜 } int main() { init(); - int cnt = 10000; //自己设置,可以无限 - int flag = 1; //判断情况 + int cnt = 10000; //鑷繁璁剧疆锛屽彲浠ユ棤闄 + int flag = 1; //鍒ゆ柇鎯呭喌 - //主要算法区域 + //涓昏绠楁硶鍖哄煙 while (cnt--){ double t1, t2; double s1, s2; - //这里的“轨迹”是存在“循环队列”的结构体中的 - //map数组一开始只打印一次,随后在原数组上的改变不会作用显示。 - //显示轨迹的其实还是打印空格,但不同的是颜色 - //消去轨迹也打印白色的空格:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); + //杩欓噷鐨勨滆建杩光濇槸瀛樺湪鈥滃惊鐜槦鍒椻濈殑缁撴瀯浣撲腑鐨 + //map鏁扮粍涓寮濮嬪彧鎵撳嵃涓娆★紝闅忓悗鍦ㄥ師鏁扮粍涓婄殑鏀瑰彉涓嶄細浣滅敤鏄剧ず銆 + //鏄剧ず杞ㄨ抗鐨勫叾瀹炶繕鏄墦鍗扮┖鏍硷紝浣嗕笉鍚岀殑鏄鑹 + //娑堝幓杞ㄨ抗涔熸墦鍗扮櫧鑹茬殑绌烘牸锛歋etConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); /*------------------------------------------------------- - 核心公式: X = X0 + Vx * t + 1/2 * VX * t * t; + 鏍稿績鍏紡锛 X = X0 + Vx * t + 1/2 * VX * t * t; Y = Y0 + Vy * t; - 核心思想: ·如果选择时间作为移动参考,则每秒会出现点相差太远 - 难以实现连续。 - ·这里反过来,以连续为前提,尝试找出每移动一个单位 - 需要多少时间,则能依次找出一个连续的曲线。 - - 出现问题: c语言数组只能是整数,所以移动方向只能存在水平和竖直, - 不能依照运动方向实现往某个特定的角度移动一个单位。 - 并且要排除断节问题(即打印的曲线断断续续) - - 解决方法: 把特移动方向移动单位分解到X,Y上。 - 分别算出 X 增加一个单位长度 应该增加的 Y 的距离 s1 <=> flag == 1 - Y 增加一个单位长度 应该增加的 X 的距离 s2 <=> flag == 2 + 鏍稿績鎬濇兂锛 路濡傛灉閫夋嫨鏃堕棿浣滀负绉诲姩鍙傝冿紝鍒欐瘡绉掍細鍑虹幇鐐圭浉宸お杩 + 闅句互瀹炵幇杩炵画銆 + 路杩欓噷鍙嶈繃鏉ワ紝浠ヨ繛缁负鍓嶆彁锛屽皾璇曟壘鍑烘瘡绉诲姩涓涓崟浣 + 闇瑕佸灏戞椂闂达紝鍒欒兘渚濇鎵惧嚭涓涓繛缁殑鏇茬嚎銆 + + 鍑虹幇闂锛 c璇█鏁扮粍鍙兘鏄暣鏁帮紝鎵浠ョЩ鍔ㄦ柟鍚戝彧鑳藉瓨鍦ㄦ按骞冲拰绔栫洿锛 + 涓嶈兘渚濈収杩愬姩鏂瑰悜瀹炵幇寰鏌愪釜鐗瑰畾鐨勮搴︾Щ鍔ㄤ竴涓崟浣嶃 + 骞朵笖瑕佹帓闄ゆ柇鑺傞棶棰橈紙鍗虫墦鍗扮殑鏇茬嚎鏂柇缁画锛 + + 瑙e喅鏂规硶锛 鎶婄壒绉诲姩鏂瑰悜绉诲姩鍗曚綅鍒嗚В鍒癤锛孻涓娿 + 鍒嗗埆绠楀嚭 X 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 Y 鐨勮窛绂 s1 <=> flag == 1 + Y 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 X 鐨勮窛绂 s2 <=> flag == 2 - 优先选择更短的min(s1,s2),然后以flag对应不同的模式作为下一次移动的基准。 - 这样操作能保证线段仅仅只在水平与竖直方向移动时线段仍能连续 - - 打个比方:一段斜率为2的直线 - x增加1 Y增加2你看,这里Y脱节了会一下子在Y上移动了2格。 - 但实际上我们看 - Y增加1 X实际上只增加0.5. - 所以一段曲线,他的微元构成的直线不管斜率多偏僻,都能连续打印。 - 这就是为什么取min(s1,s2)决定移动模式的原因。 - 这样能保证仅仅只在上移动一个单位int(Y),而int(X)是不增加的,浮点型的X又把量累计到下一次在判断。 - - 最后实现: - X,Y用double储存,保证实际叠加能连续; - 而实际打印,是不能说(5,6.28)这样的浮点型能在c语言上打印,所以我们采用int整型的old_x,old_y来承接X,Y以便于打印在屏幕上。 + 浼樺厛閫夋嫨鏇寸煭鐨刴in锛坰1,s2),鐒跺悗浠lag瀵瑰簲涓嶅悓鐨勬ā寮忎綔涓轰笅涓娆$Щ鍔ㄧ殑鍩哄噯銆 + 杩欐牱鎿嶄綔鑳戒繚璇佺嚎娈典粎浠呭彧鍦ㄦ按骞充笌绔栫洿鏂瑰悜绉诲姩鏃剁嚎娈典粛鑳借繛缁 + + 鎵撲釜姣旀柟锛氫竴娈垫枩鐜囦负2鐨勭洿绾 + x澧炲姞1 Y澧炲姞2浣犵湅锛岃繖閲孻鑴辫妭浜嗕細涓涓嬪瓙鍦╕涓婄Щ鍔ㄤ簡2鏍笺 + 浣嗗疄闄呬笂鎴戜滑鐪 + Y澧炲姞1 X瀹為檯涓婂彧澧炲姞0.5. + 鎵浠ヤ竴娈垫洸绾匡紝浠栫殑寰厓鏋勬垚鐨勭洿绾夸笉绠℃枩鐜囧鍋忓兓锛岄兘鑳借繛缁墦鍗般 + 杩欏氨鏄负浠涔堝彇min锛坰1,s2锛夊喅瀹氱Щ鍔ㄦā寮忕殑鍘熷洜銆 + 杩欐牱鑳戒繚璇佷粎浠呭彧鍦ㄤ笂绉诲姩涓涓崟浣峣nt锛圷锛夛紝鑰宨nt锛圶锛夋槸涓嶅鍔犵殑锛屾诞鐐瑰瀷鐨刋鍙堟妸閲忕疮璁″埌涓嬩竴娆″湪鍒ゆ柇銆 + + 鏈鍚庡疄鐜帮細 + X锛孻鐢╠ouble鍌ㄥ瓨锛屼繚璇佸疄闄呭彔鍔犺兘杩炵画锛 + 鑰屽疄闄呮墦鍗帮紝鏄笉鑳借锛5,6.28锛夎繖鏍风殑娴偣鍨嬭兘鍦╟璇█涓婃墦鍗帮紝鎵浠ユ垜浠噰鐢╥nt鏁村瀷鐨刼ld_x,old_y鏉ユ壙鎺锛孻浠ヤ究浜庢墦鍗板湪灞忓箷涓娿 - 我们按照时间为循环只能在屏幕上打印一串断断续续的类抛物线的点。 - 但我们按照走一个“方向单位”,依次类叠,我们就能得到一串连续的线。 + 鎴戜滑鎸夌収鏃堕棿涓哄惊鐜彧鑳藉湪灞忓箷涓婃墦鍗颁竴涓叉柇鏂画缁殑绫绘姏鐗╃嚎鐨勭偣銆 + 浣嗘垜浠寜鐓ц蛋涓涓滄柟鍚戝崟浣嶁濓紝渚濇绫诲彔锛屾垜浠氨鑳藉緱鍒颁竴涓茶繛缁殑绾裤 - 结果实现: 由于,算法偏向不严谨,可能会出现小部分开局断节bug,但随着循环推迟,后期能100%连续!! + 缁撴灉瀹炵幇锛 鐢变簬锛岀畻娉曞亸鍚戜笉涓ヨ皑锛屽彲鑳戒細鍑虹幇灏忛儴鍒嗗紑灞鏂妭bug锛屼絾闅忕潃寰幆鎺ㄨ繜锛屽悗鏈熻兘100%杩炵画锛侊紒 - 加入人为修正 + 鍔犲叆浜轰负淇 - 经测试小范围的数据能完美打印出物理抛物线!!! + 缁忔祴璇曞皬鑼冨洿鐨勬暟鎹兘瀹岀編鎵撳嵃鍑虹墿鐞嗘姏鐗╃嚎锛侊紒锛 ------------------------------------------------------------*/ - //算法起点: + //绠楁硶璧风偣锛 - //二、当Y增加一个单位方向时 (把这个简单的放前面可以类比知道后面x那里在干嘛) + //浜屻佸綋Y澧炲姞涓涓崟浣嶆柟鍚戞椂 锛堟妸杩欎釜绠鍗曠殑鏀惧墠闈㈠彲浠ョ被姣旂煡閬撳悗闈閭i噷鍦ㄥ共鍢涳級 t2 = 1.0 / fabs(Vy); s2 = Vx * t2 + 0.5 * g * t2 * t2; - //一、当X改变一个单位方向时(考虑) - // 1/2 g*t*t + vx * t = 1 解一元二次方程(这里判断 增加后减少仍然是1 可能会有4种情况) - //就用公式解这个5*t*t + Vx t - 1= 0;(正负1) - //我这里的确复杂了,但是保险,如果能设计更好的算法就可以多试试。 + //涓銆佸綋X鏀瑰彉涓涓崟浣嶆柟鍚戞椂锛堣冭檻锛 + // 1/2 g*t*t + vx * t = 1 瑙d竴鍏冧簩娆℃柟绋嬶紙杩欓噷鍒ゆ柇 澧炲姞鍚庡噺灏戜粛鐒舵槸1 鍙兘浼氭湁4绉嶆儏鍐碉級 + //灏辩敤鍏紡瑙h繖涓5*t*t + Vx t - 1= 0;锛堟璐1锛 + //鎴戣繖閲岀殑纭鏉備簡锛屼絾鏄繚闄╋紝濡傛灉鑳借璁℃洿濂界殑绠楁硶灏卞彲浠ュ璇曡瘯銆 double temp; double x1_t1 = (-Vx + sqrt(Vx * Vx + 20)) / 10; double x2_t1 = (-Vx - sqrt(Vx * Vx + 20)) / 10; @@ -163,34 +163,34 @@ int main() else temp = 10; t1 = t1 < temp ? t1 : temp; - //这里主要就为了求一个t1 + //杩欓噷涓昏灏变负浜嗘眰涓涓猼1 s1 = t1 * Vy; - //进行择短判断 + //杩涜鎷╃煭鍒ゆ柇 if ((int)s1 == 0) flag = 1; else if ((int)s2 == 0) flag = 2; else flag = s1 < s2 ? 1 : 2; - //选择最优进行处理 + //閫夋嫨鏈浼樿繘琛屽鐞 if (flag == 1){ - X = X + Vx * t1 + 5 * t1 * t1; //等价于 X = X +- 1 (因为速度是带方向的,求出时间在反过来求1此时的1也是带正负号的就不要分类考虑了) - Y = Y + s1; //X改变1 Y理论上改变的大小。 + X = X + Vx * t1 + 5 * t1 * t1; //绛変环浜 X = X +- 1 锛堝洜涓洪熷害鏄甫鏂瑰悜鐨勶紝姹傚嚭鏃堕棿鍦ㄥ弽杩囨潵姹1姝ゆ椂鐨1涔熸槸甯︽璐熷彿鐨勫氨涓嶈鍒嗙被鑰冭檻浜嗭級 + Y = Y + s1; //X鏀瑰彉1 Y鐞嗚涓婃敼鍙樼殑澶у皬銆 Vx = Vx + g * t1; } else if (flag == 2){ - Y = Y + Vy * t2; //等价于 Y = Y +- 1 - X = X + s2; //Y改变1 X理论上改变的大小。 + Y = Y + Vy * t2; //绛変环浜 Y = Y +- 1 + X = X + s2; //Y鏀瑰彉1 X鐞嗚涓婃敼鍙樼殑澶у皬銆 Vx = Vx + g * t2; } - old_x = (int)X; //整型承接下一步的移动后面存入循环结构体数组以打印 + old_x = (int)X; //鏁村瀷鎵挎帴涓嬩竴姝ョ殑绉诲姩鍚庨潰瀛樺叆寰幆缁撴瀯浣撴暟缁勪互鎵撳嵃 old_y = (int)Y; - //算法终点 + //绠楁硶缁堢偣 //-------------------------------------------------------------------------------------------------------- - //之后是界面改变逻辑实现 - //碰墙改变方向 + //涔嬪悗鏄晫闈㈡敼鍙橀昏緫瀹炵幇 + //纰板鏀瑰彉鏂瑰悜 if (X >= width - 2 || X <= 2){ color = (color + 1) % 5; Vx = -Vx; @@ -200,19 +200,19 @@ int main() Vy = -Vy; } - //消除末尾节点 + //娑堥櫎鏈熬鑺傜偣 if (if_miss == 1){ - //map是后台数组,如果身体经过一次就++,消去一次就--直到回复原来状态就可以打印消去。防止自己吃掉自己的身体 + //map鏄悗鍙版暟缁勶紝濡傛灉韬綋缁忚繃涓娆″氨++锛屾秷鍘讳竴娆″氨--鐩村埌鍥炲鍘熸潵鐘舵佸氨鍙互鎵撳嵃娑堝幓銆傞槻姝㈣嚜宸卞悆鎺夎嚜宸辩殑韬綋 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); gotoxy(s[step].y, s[step].x); map[s[step].x][s[step].y]--; - if (map[s[step].x][s[step].y] == ' ') //防止自己吃自己 + if (map[s[step].x][s[step].y] == ' ') //闃叉鑷繁鍚冭嚜宸 printf(" "); } s[step].x = old_x; s[step].y = old_y; - if (map[s[step].x][s[step].y] == '*') //(贪吃蛇模式)吃到食物身体增长 + if (map[s[step].x][s[step].y] == '*') //锛堣椽鍚冭泧妯″紡锛夊悆鍒伴鐗╄韩浣撳闀 { map[s[step].x][s[step].y] = ' '; max++; @@ -221,24 +221,24 @@ int main() printf("len:%5d", max); } - //决定身体颜色 + //鍐冲畾韬綋棰滆壊 switch (color) { case 0: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 60); - break; //蓝色 + break; //钃濊壊 case 1: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 70); - break; //红色 + break; //绾㈣壊 case 2: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 40); - break; //绿色 + break; //缁胯壊 case 3: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); - break; //深蓝色 + break; //娣辫摑鑹 case 4: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 80); - break; //紫色 + break; //绱壊 } gotoxy(s[step].y, s[step].x); map[s[step].x][s[step].y]++; @@ -246,9 +246,9 @@ int main() step++; if (step >= max) { - if_miss = 1; //如果长度开始大于最长长度就要开始从末尾消除尾节点了 + if_miss = 1; //濡傛灉闀垮害寮濮嬪ぇ浜庢渶闀块暱搴﹀氨瑕佸紑濮嬩粠鏈熬娑堥櫎灏捐妭鐐逛簡 } step = step % max; - Sleep(10); //把10改成竖直坐标关于高度的公式可以模拟下坠的时候速度 + Sleep(10); //鎶10鏀规垚绔栫洿鍧愭爣鍏充簬楂樺害鐨勫叕寮忓彲浠ユā鎷熶笅鍧犵殑鏃跺欓熷害 } } \ No newline at end of file diff --git "a/\346\216\230\345\234\260\346\261\202\345\215\207/garvity.txt" "b/\346\216\230\345\234\260\346\261\202\345\215\207/garvity.txt" index 8ccec74..9473ff5 100644 --- "a/\346\216\230\345\234\260\346\261\202\345\215\207/garvity.txt" +++ "b/\346\216\230\345\234\260\346\261\202\345\215\207/garvity.txt" @@ -1,18 +1,18 @@ -/*-------------------------------------。 -程序名字:掘地求升(C语言版) -程序作者:CTGU_LLZ -完成时间:2020/1/15-2020/1/26 +/*-------------------------------------銆 +绋嬪簭鍚嶅瓧锛氭帢鍦版眰鍗囷紙C璇█鐗堬級 +绋嬪簭浣滆咃細CTGU_LLZ +瀹屾垚鏃堕棿锛2020/1/15-2020/1/26 --------------------------------------*/ -// goto xy 对应 xy 而map对应map【y】[x] -#include //用于getch(); +// goto xy 瀵瑰簲 xy 鑰宮ap瀵瑰簲map銆恲銆慬x] +#include //鐢ㄤ簬getch锛堬級锛 #include #include #include -#define people 'M' //光标加M有点像一只小兔子 +#define people 'M' //鍏夋爣鍔燤鏈夌偣鍍忎竴鍙皬鍏斿瓙 #define link '*' #define hammer 'O' -#define load_speed 10 // 0-10 飞速 30-50等待速度 -void gotoxy(int x, int y) //坐标函数 +#define load_speed 10 // 0-10 椋為 30-50绛夊緟閫熷害 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -20,7 +20,7 @@ void gotoxy(int x, int y) // pos.Y = y; SetConsoleCursorPosition(handle, pos); } -struct pass_information //关卡结构体 包括出生点 下一关传送点 地图 +struct pass_information //鍏冲崱缁撴瀯浣 鍖呮嫭鍑虹敓鐐 涓嬩竴鍏充紶閫佺偣 鍦板浘 { int start_x; int start_y; @@ -32,441 +32,441 @@ struct pass_information // 6, 56, 13, - {{"███████████████████████████████"}, - {"■向上跳的同时切换方向■Tip: 按键R重新开始本关卡 ■"}, - {"■是游戏的最重要的技巧■ 按键F复位防止卡死 ■"}, - {"■翻越一定是向上起手 ■ 按键N next下一关(设置开启) ■"}, - {"■ ■ 按键B back上一关(设置开启) ■"}, - {"■ ■ 按键P 返回菜单 ■"}, - {"■ ■ 触碰⊙坠落 ⊙为关卡衔接 ■"}, - {"■ ■ 触碰 进入下一关 " - "■"}, - {"■ ■■■■■■■■■■■■■■■■■■■■"}, - {"■ ■"}, - {"■ ■"}, - {"■■■■■ ■"}, - {"■ ■■■ ■■■ ■■■ ■"}, - {"■ ■"}, - {"■ ■"}, - {"■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■"}, - {"■基本操作方式:1.数字键盘对应锤子方向 ■"}, - {"■ 2.空格/按键5 对应拉锤子进行相应运动 ■"}, - {"■ 3.左下角□->■就是此时锤子固定可以运动 ■"}, - {"■ 4.翻越方向是固定的 ■"}, - {"■状态栏 5.锤子是可以穿越墙体的 ■"}, - {"■↓↓↓ 6.向上跳的瞬间切换锤子方向可以灵活运动 ■"}, - {"■=〓|=〓=〓〓=〓〓=〓=〓〓|〓=〓〓=〓=〓〓〓=〓〓=〓=〓〓〓■"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓ ▓"}, - {"▓⊙□⊙▓人生的本质在于运动,安谧宁静就是死亡。——帕斯卡 ▓"}, - {"▓⊙⊙⊙▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻"}, + {"鈻犲悜涓婅烦鐨勫悓鏃跺垏鎹㈡柟鍚戔枲Tip锛 鎸夐敭R閲嶆柊寮濮嬫湰鍏冲崱 鈻"}, + {"鈻犳槸娓告垙鐨勬渶閲嶈鐨勬妧宸р枲 鎸夐敭F澶嶄綅闃叉鍗℃ 鈻"}, + {"鈻犵炕瓒婁竴瀹氭槸鍚戜笂璧锋墜 鈻 鎸夐敭N next涓嬩竴鍏筹紙璁剧疆寮鍚級 鈻"}, + {"鈻 鈻 鎸夐敭B back涓婁竴鍏筹紙璁剧疆寮鍚級 鈻"}, + {"鈻 鈻 鎸夐敭P 杩斿洖鑿滃崟 鈻"}, + {"鈻 鈻 瑙︾鈯欏潬钀 鈯欎负鍏冲崱琛旀帴 鈻"}, + {"鈻 鈻 瑙︾ 杩涘叆涓嬩竴鍏 " + "鈻"}, + {"鈻 鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲"}, + {"鈻 鈻"}, + {"鈻 鈻"}, + {"鈻犫枲鈻犫枲鈻 鈻"}, + {"鈻 鈻犫枲鈻 鈻犫枲鈻 鈻犫枲鈻 鈻"}, + {"鈻 鈻"}, + {"鈻 鈻"}, + {"鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, + {"鈻犲熀鏈搷浣滄柟寮忥細1.鏁板瓧閿洏瀵瑰簲閿ゅ瓙鏂瑰悜 鈻"}, + {"鈻 2.绌烘牸/鎸夐敭5 瀵瑰簲鎷夐敜瀛愯繘琛岀浉搴旇繍鍔 鈻"}, + {"鈻 3.宸︿笅瑙掆枴->鈻犲氨鏄鏃堕敜瀛愬浐瀹氬彲浠ヨ繍鍔 鈻"}, + {"鈻 4.缈昏秺鏂瑰悜鏄浐瀹氱殑 鈻"}, + {"鈻犵姸鎬佹爮 5.閿ゅ瓙鏄彲浠ョ┛瓒婂浣撶殑 鈻"}, + {"鈻犫啌鈫撯啌 6.鍚戜笂璺崇殑鐬棿鍒囨崲閿ゅ瓙鏂瑰悜鍙互鐏垫椿杩愬姩 鈻"}, + {"鈻=銆搢=銆=銆撱=銆撱=銆=銆撱搢銆=銆撱=銆=銆撱撱=銆撱=銆=銆撱撱撯枲"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撲汉鐢熺殑鏈川鍦ㄤ簬杩愬姩锛屽畨璋у畞闈欏氨鏄浜°傗斺斿笗鏂崱 鈻"}, + {"鈻撯姍鈯欌姍鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {11, 19, 58, 6, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0 //pass1 - {"■ ■"}, // 1 - {"■ ■"}, // 2 - {"■ ■"}, // 3 - {"■ ■"}, // 4 - {"■ ■"}, // 5 - {"■ ■"}, // 6 - {"■ =〓=〓=〓=■"}, // 7 - {"■ =〓〓〓=〓■"}, // 8 - {"■ \\〓〓=〓〓〓=〓■"}, // 9 - {"■ 〓=〓〓〓=〓〓■"}, // 10 - {"■ 〓〓=〓=〓■"}, // 11 - {"■ # 〓=〓=〓=〓=■"}, // 12 - {"■ ___ ===#- 〓〓= = 〓=〓=■"}, // 13 - {"■ _// # =〓=〓=〓=■"}, // 14 - {"■| #/// #__/ 〓〓=〓=〓=〓=■"}, // 15 - {"■| # # 〓〓=〓=〓=■"}, // 16 - {"■| #/ \\# 〓〓=〓=〓 ■"}, // 17 - {"■| # # 〓〓=〓=〓=■"}, // 18 - {"■| # /==== # 〓〓=〓=〓=〓=■"}, // 19 - {"■=〓〓=〓=〓〓〓=〓〓=〓=〓=〓〓=〓=〓=〓〓=〓=〓〓〓=〓〓=■"}, // 20 - {"■〓〓〓=〓=〓〓=〓=〓=〓〓=〓=〓=〓〓=〓=〓〓==〓〓〓=〓〓=■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙游戏场景■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:1 ▓ 欢迎回家 ▓"}, - {"▓⊙□⊙▓新手村 ▓ 有希望在的地方,痛苦也成欢乐。 ▓"}, - {"▓⊙⊙⊙▓梦的起点 ▓认识错误是拯救自己的第一步 —伊壁鸠鲁 ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0 //pass1 + {"鈻 鈻"}, // 1 + {"鈻 鈻"}, // 2 + {"鈻 鈻"}, // 3 + {"鈻 鈻"}, // 4 + {"鈻 鈻"}, // 5 + {"鈻 鈻"}, // 6 + {"鈻 =銆=銆=銆=鈻"}, // 7 + {"鈻 =銆撱撱=銆撯枲"}, // 8 + {"鈻 \\銆撱=銆撱撱=銆撯枲"}, // 9 + {"鈻 銆=銆撱撱=銆撱撯枲"}, // 10 + {"鈻 銆撱=銆=銆撯枲"}, // 11 + {"鈻 # 銆=銆=銆=銆=鈻"}, // 12 + {"鈻 ___ ===#- 銆撱= = 銆=銆=鈻"}, // 13 + {"鈻 _// # =銆=銆=銆=鈻"}, // 14 + {"鈻爘 #/// #__/ 銆撱=銆=銆=銆=鈻"}, // 15 + {"鈻爘 # # 銆撱=銆=銆=鈻"}, // 16 + {"鈻爘 #/ \\# 銆撱=銆=銆 鈻"}, // 17 + {"鈻爘 # # 銆撱=銆=銆=鈻"}, // 18 + {"鈻爘 # /==== # 銆撱=銆=銆=銆=鈻"}, // 19 + {"鈻=銆撱=銆=銆撱撱=銆撱=銆=銆=銆撱=銆=銆=銆撱=銆=銆撱撱=銆撱=鈻"}, // 20 + {"鈻犮撱撱=銆=銆撱=銆=銆=銆撱=銆=銆=銆撱=銆=銆撱==銆撱撱=銆撱=鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍娓告垙鍦烘櫙鈻"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛1 鈻 娆㈣繋鍥炲 鈻"}, + {"鈻撯姍鈻♀姍鈻撴柊鎵嬫潙 鈻 鏈夊笇鏈涘湪鐨勫湴鏂癸紝鐥涜嫤涔熸垚娆箰銆 鈻"}, + {"鈻撯姍鈯欌姍鈻撴ⅵ鐨勮捣鐐 鈻撹璇嗛敊璇槸鎷晳鑷繁鐨勭涓姝 鈥斾紛澹侀笭椴 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {43, 11, 16, 1, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0pass 4 - {"■ || ■■■■■■■■ " - "■"}, // 1 - {"■ ########### || #### ■"}, // 2 - {"■ |# ################________||________ #### ■"}, // 3 - {"■ | ### ##■# ■"}, // 4 - {"■ _ | ### □ ##■# ■"}, // 5 - {"■ | ### | ##### ■"}, // 6 - {"■ ####### #| # ■"}, // 7 - {"■ |#| # ■"}, // 8 - {"■ #| # ■"}, // 9 - {"■ | #|___# ■"}, // 10 - {"■ ###### ■"}, // 11 - {"■ | | |#| # ■"}, // 12 - {"■ #| # ■"}, // 13 - {"■ #□ # ■"}, // 14 - {"■ #□__# ■"}, // 15 - {"■ ==###### ■"}, // 16 - {"■ #| # ■"}, // 17 - {"■ #| # ■"}, // 18 - {"■ #| # ■"}, // 19 - {"■ ■#|___# ■"}, // 20 - {"■ 〓=〓=〓〓=〓〓=〓= =〓 ■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙游戏场景■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:2 ▓ ▓"}, - {"▓⊙□⊙▓建筑工地▓ 唯有理智最为可贵。 ▓"}, - {"▓⊙⊙⊙▓g = 9.8 ▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0pass 4 + {"鈻 || 鈻犫枲鈻犫枲鈻犫枲鈻犫枲 " + "鈻"}, // 1 + {"鈻 ########### || #### 鈻"}, // 2 + {"鈻 |# ################________||________ #### 鈻"}, // 3 + {"鈻 | ### ##鈻# 鈻"}, // 4 + {"鈻 _ | ### 鈻 ##鈻# 鈻"}, // 5 + {"鈻 | ### | ##### 鈻"}, // 6 + {"鈻 ####### #| # 鈻"}, // 7 + {"鈻 |#| # 鈻"}, // 8 + {"鈻 #| # 鈻"}, // 9 + {"鈻 | #|___# 鈻"}, // 10 + {"鈻 ###### 鈻"}, // 11 + {"鈻 | | |#| # 鈻"}, // 12 + {"鈻 #| # 鈻"}, // 13 + {"鈻 #鈻 # 鈻"}, // 14 + {"鈻 #鈻_# 鈻"}, // 15 + {"鈻 ==###### 鈻"}, // 16 + {"鈻 #| # 鈻"}, // 17 + {"鈻 #| # 鈻"}, // 18 + {"鈻 #| # 鈻"}, // 19 + {"鈻 鈻#|___# 鈻"}, // 20 + {"鈻 銆=銆=銆撱=銆撱=銆= =銆 鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍娓告垙鍦烘櫙鈻"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛2 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撳缓绛戝伐鍦扳枔 鍞湁鐞嗘櫤鏈涓哄彲璐点 鈻"}, + {"鈻撯姍鈯欌姍鈻揼 = 9.8 鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {29, 17, 57, 2, {// ok - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, - {"■ ■"}, - {"■ ■"}, - {"■ ■"}, - {"■ ■■■"}, - {"■ ■■■■"}, - {"■ =■== ■"}, - {"■ ■== ■"}, - {"■ __ 〓〓 ■==■"}, - {"■ _| |_ || ■=■"}, - {"■ ===■=■ =■=■=■= ==■■"}, - {"■ = =■ =■== =■■"}, - {"■ = =■== =■■"}, - {"■ = =■=■■■■■ ==■■"}, - {"■ =■=■=■■=■■■■=■=■"}, - {"■ ■=■=■■■=■=■■=■■"}, - {"■ =■=■=■■■■=■=■ ==■■"}, - {"■ ■■■■■=■=■=■■"}, - {"■ ___________|N|________■=■=■■ ■■■■ ■"}, - {"■ _| |___________________|_■■■■■■■■■■■"}, - {"■ _| □ |____________________|_ ■■■■■■■■■"}, - {"■ | □□ |___________________| ■■■■■■■■"}, - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙游戏场景■"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:3 ▓ ▓"}, - {"▓⊙□⊙▓新的起点▓ 没有物体,只有运动。——伯格森 ▓"}, - {"▓⊙⊙⊙▓帽子崖 ▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, + {"鈻 鈻"}, + {"鈻 鈻"}, + {"鈻 鈻"}, + {"鈻 鈻犫枲鈻"}, + {"鈻 鈻犫枲鈻犫枲"}, + {"鈻 =鈻== 鈻"}, + {"鈻 鈻== 鈻"}, + {"鈻 __ 銆撱 鈻==鈻"}, + {"鈻 _| |_ || 鈻=鈻"}, + {"鈻 ===鈻=鈻 =鈻=鈻=鈻= ==鈻犫枲"}, + {"鈻 = =鈻 =鈻== =鈻犫枲"}, + {"鈻 = =鈻== =鈻犫枲"}, + {"鈻 = =鈻=鈻犫枲鈻犫枲鈻 ==鈻犫枲"}, + {"鈻 =鈻=鈻=鈻犫枲=鈻犫枲鈻犫枲=鈻=鈻"}, + {"鈻 鈻=鈻=鈻犫枲鈻=鈻=鈻犫枲=鈻犫枲"}, + {"鈻 =鈻=鈻=鈻犫枲鈻犫枲=鈻=鈻 ==鈻犫枲"}, + {"鈻 鈻犫枲鈻犫枲鈻=鈻=鈻=鈻犫枲"}, + {"鈻 ___________|N|________鈻=鈻=鈻犫枲 鈻犫枲鈻犫枲 鈻"}, + {"鈻 _| |___________________|_鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, + {"鈻 _| 鈻 |____________________|_ 鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, + {"鈻 | 鈻♀枴 |___________________| 鈻犫枲鈻犫枲鈻犫枲鈻犫枲"}, + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍娓告垙鍦烘櫙鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛3 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撴柊鐨勮捣鐐光枔 娌℃湁鐗╀綋锛屽彧鏈夎繍鍔ㄣ傗斺斾集鏍兼. 鈻"}, + {"鈻撯姍鈯欌姍鈻撳附瀛愬礀 鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {25, 5, 58, 2, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0 //pass 2 - {"■ ■"}, // 1 - {"■ ■"}, // 2 - {"■ 〓〓〓=〓=〓=〓 〓■"}, // 3 - {"■ 〓 〓 〓=〓=〓■"}, // 4 - {"■ 〓 〓 〓 〓 ■"}, // 5 - {"■ 〓 〓 〓〓〓=〓■"}, // 6 - {"■ 〓=〓=〓〓〓=〓■"}, // 7 - {"■ 〓〓=〓〓=〓=〓〓〓= ■"}, // 8 - {"■ 〓〓=〓=〓〓〓=〓 ■"}, // 9 - {"■ 〓=〓〓=〓=〓〓■"}, // 10 - {"■ 〓〓〓 =〓=〓〓〓=〓〓=■"}, // 11 - {"■ 〓〓〓 〓〓=〓=〓〓〓=〓 ■"}, // 12 - {"■ 〓 =〓〓=〓=〓〓〓=〓■"}, // 13 - {"■ =〓〓=〓=〓〓〓=〓■"}, // 14 - {"■ =〓〓=〓=〓〓〓=〓 ■"}, // 15 - {"■ 〓 =〓=〓〓=〓=〓〓〓=〓■"}, // 16 - {"■ ! =〓=〓〓=〓=〓〓〓=〓■"}, // 17 - {"■ 〓=〓〓=〓=〓〓〓=〓〓= ■"}, // 18 - {"■ =〓=〓=〓〓〓=〓〓= =〓■"}, // 19 - {"■ 〓〓〓=〓=〓=〓〓=〓=〓〓〓=〓〓=■"}, // 20 - {"■ 〓=〓=〓=〓=〓=〓〓=〓〓=〓= =〓 ■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙自创关卡■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:4 ▓ ▓"}, - {"▓⊙□⊙▓攀登 ▓ 痛苦就是被迫离开原地。——康德 ▓"}, - {"▓⊙⊙⊙▓小心 ! ▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0 //pass 2 + {"鈻 鈻"}, // 1 + {"鈻 鈻"}, // 2 + {"鈻 銆撱撱=銆=銆=銆 銆撯枲"}, // 3 + {"鈻 銆 銆 銆=銆=銆撯枲"}, // 4 + {"鈻 銆 銆 銆 銆 鈻"}, // 5 + {"鈻 銆 銆 銆撱撱=銆撯枲"}, // 6 + {"鈻 銆=銆=銆撱撱=銆撯枲"}, // 7 + {"鈻 銆撱=銆撱=銆=銆撱撱= 鈻"}, // 8 + {"鈻 銆撱=銆=銆撱撱=銆 鈻"}, // 9 + {"鈻 銆=銆撱=銆=銆撱撯枲"}, // 10 + {"鈻 銆撱撱 =銆=銆撱撱=銆撱=鈻"}, // 11 + {"鈻 銆撱撱 銆撱=銆=銆撱撱=銆 鈻"}, // 12 + {"鈻 銆 =銆撱=銆=銆撱撱=銆撯枲"}, // 13 + {"鈻 =銆撱=銆=銆撱撱=銆撯枲"}, // 14 + {"鈻 =銆撱=銆=銆撱撱=銆 鈻"}, // 15 + {"鈻 銆 =銆=銆撱=銆=銆撱撱=銆撯枲"}, // 16 + {"鈻 锛 =銆=銆撱=銆=銆撱撱=銆撯枲"}, // 17 + {"鈻 銆=銆撱=銆=銆撱撱=銆撱= 鈻"}, // 18 + {"鈻 =銆=銆=銆撱撱=銆撱= =銆撯枲"}, // 19 + {"鈻 銆撱撱=銆=銆=銆撱=銆=銆撱撱=銆撱=鈻"}, // 20 + {"鈻 銆=銆=銆=銆=銆=銆撱=銆撱=銆= =銆 鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鑷垱鍏冲崱鈻"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛4 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撴攢鐧 鈻 鐥涜嫤灏辨槸琚揩绂诲紑鍘熷湴銆傗斺斿悍寰 鈻"}, + {"鈻撯姍鈯欌姍鈻撳皬蹇 锛 鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {57, 19, 41, 2, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0 passs 3 - {"■ ■"}, // 1 - {"■ ■"}, // 2 - {"■ _ ==〓=〓== ■"}, // 3 - {"■ =====〓=〓=〓〓 〓 〓= ==■"}, // 4 - {"■ = 〓 〓 〓 ■"}, // 5 - {"■ = = 〓 〓 〓 ■"}, // 6 - {"■ = = 〓= →→〓 〓■"}, // 7 - {"■ = 〓〓=〓〓=〓=〓 ■"}, // 8 - {"■ = 〓 ■"}, // 9 - {"■ = = ■"}, // 10 - {"■ === =■"}, // 11 - {"■ 〓〓 〓〓=〓=〓〓〓=〓 ■"}, // 12 - {"■ 〓 =〓〓 == 〓= ■"}, // 13 - {"■ 〓= = 〓〓=〓■"}, // 14 - {"■ 〓= 〓=〓 ■"}, // 15 - {"■ 〓 =〓 〓〓= ■"}, // 16 - {"■ = = ■"}, // 17 - {"■ 〓=〓〓 〓= ■"}, // 18 - {"■ =〓 = ■"}, // 19 - {"■ =〓=〓=〓=〓〓〓= 〓〓= ■"}, // 20 - {"■ 〓=〓=〓〓=〓〓=〓= =〓 ■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙自创关卡■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:5 ▓ ▓"}, - {"▓⊙□⊙▓山洞 ▓ 我正在说谎。——罗素 ▓"}, - {"▓⊙⊙⊙▓学会卡位▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0 passs 3 + {"鈻 鈻"}, // 1 + {"鈻 鈻"}, // 2 + {"鈻 _ ==銆=銆== 鈻"}, // 3 + {"鈻 =====銆=銆=銆撱 銆 銆= ==鈻"}, // 4 + {"鈻 = 銆 銆 銆 鈻"}, // 5 + {"鈻 = = 銆 銆 銆 鈻"}, // 6 + {"鈻 = = 銆= 鈫掆啋銆 銆撯枲"}, // 7 + {"鈻 = 銆撱=銆撱=銆=銆 鈻"}, // 8 + {"鈻 = 銆 鈻"}, // 9 + {"鈻 = = 鈻"}, // 10 + {"鈻 === =鈻"}, // 11 + {"鈻 銆撱 銆撱=銆=銆撱撱=銆 鈻"}, // 12 + {"鈻 銆 =銆撱 == 銆= 鈻"}, // 13 + {"鈻 銆= = 銆撱=銆撯枲"}, // 14 + {"鈻 銆= 銆=銆 鈻"}, // 15 + {"鈻 銆 =銆 銆撱= 鈻"}, // 16 + {"鈻 = = 鈻"}, // 17 + {"鈻 銆=銆撱 銆= 鈻"}, // 18 + {"鈻 =銆 = 鈻"}, // 19 + {"鈻 =銆=銆=銆=銆撱撱= 銆撱= 鈻"}, // 20 + {"鈻 銆=銆=銆撱=銆撱=銆= =銆 鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鑷垱鍏冲崱鈻"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛5 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撳北娲 鈻 鎴戞鍦ㄨ璋庛傗斺旂綏绱 鈻"}, + {"鈻撯姍鈯欌姍鈻撳浼氬崱浣嶁枔 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {41, 18, 13, 3, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0 - {"■ ■"}, // 1 - {"■ ■"}, // 2 - {"■ ■"}, // 3 - {"■ ■"}, // 4 - {"■ ⊙⊙ ⊙⊙ ■"}, // 5 - {"■ ⊙⊙= ⊙⊙ ● ● ■"}, // 6 - {"■ ■"}, // 7 - {"■ =⊙⊙= ● ■"}, // 8 - {"■ ⊙⊙ ■"}, // 9 - {"■ ■"}, // 10 - {"■ ● ■"}, // 11 - {"■ ■"}, // 12 - {"■ ■"}, // 13 - {"■ ● ■"}, // 14 - {"■ ● ■"}, // 15 - {"■ ■"}, // 16 - {"■ ● ■"}, // 17 - {"■ ■"}, // 18 - {"■ ■■■■ ■"}, // 19 - {"■ | | ■"}, // 20 - {"■ | | ■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:6 ▓ ▓"}, - {"▓⊙□⊙▓大雪球 ▓ 只要有信心,人永远不会挫败。 ▓"}, - {"▓⊙⊙⊙▓ ▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0 + {"鈻 鈻"}, // 1 + {"鈻 鈻"}, // 2 + {"鈻 鈻"}, // 3 + {"鈻 鈻"}, // 4 + {"鈻 鈯欌姍 鈯欌姍 鈻"}, // 5 + {"鈻 鈯欌姍= 鈯欌姍 鈼 鈼 鈻"}, // 6 + {"鈻 鈻"}, // 7 + {"鈻 =鈯欌姍= 鈼 鈻"}, // 8 + {"鈻 鈯欌姍 鈻"}, // 9 + {"鈻 鈻"}, // 10 + {"鈻 鈼 鈻"}, // 11 + {"鈻 鈻"}, // 12 + {"鈻 鈻"}, // 13 + {"鈻 鈼 鈻"}, // 14 + {"鈻 鈼 鈻"}, // 15 + {"鈻 鈻"}, // 16 + {"鈻 鈼 鈻"}, // 17 + {"鈻 鈻"}, // 18 + {"鈻 鈻犫枲鈻犫枲 鈻"}, // 19 + {"鈻 | | 鈻"}, // 20 + {"鈻 | | 鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛6 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撳ぇ闆悆 鈻 鍙鏈変俊蹇冿紝浜烘案杩滀笉浼氭尗璐ャ 鈻"}, + {"鈻撯姍鈯欌姍鈻 鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {23, 17, 54, 3, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0 - {"■ ■"}, // 1 - {"■ ■"}, // 2 - {"■ ■"}, // 3 - {"■ ■"}, // 4 - {"■ _________ ■"}, // 5 - {"■ | | | =〓=〓=〓=〓=〓=〓〓=〓=〓=〓=■"}, // 6 - {"■ = 〓〓 | | =〓〓=〓=〓=〓=〓= 〓 〓= 〓=〓=■"}, // 7 - {"■ = 〓〓 = | 〓〓=〓〓=〓=〓=〓=〓=〓〓=〓=〓=〓=■"}, // 8 - {"■ 〓=〓=〓 〓= | | =〓〓=〓=〓〓〓=〓〓〓=〓=〓〓■"}, // 9 - {"■ Do Not Touch 〓== | =〓=〓=〓=〓〓〓=〓=〓=〓■"}, // 10 - {"■ The Snake 〓=〓 | =〓〓=〓=〓=〓=〓 =〓■"}, // 11 - {"■ 〓 ↓↓〓〓 | 〓〓==〓〓=〓=〓〓=〓■"}, // 12 - {"■ | | 〓〓=〓=〓〓〓=〓〓=■"}, // 13 - {"■ | ___/ ^ =〓〓=〓=〓 =〓 =■"}, // 14 - {"■ | ____/ |_| ■"}, // 15 - {"■ / ■"}, // 16 - {"■ | ■"}, // 17 - {"■ | =〓=〓〓=〓=〓=〓=〓= ■"}, // 18 - {"■ | 〓 〓== =〓 〓= =〓 ■"}, // 19 - {"■ | = 〓 = 〓〓 = =〓 ■"}, // 20 - {"■ | == =〓〓=〓〓= ■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:7 ▓ ▓"}, - {"▓⊙□⊙▓快乐桶 ▓ 人可以犯错,但是不可犯同一个错。 ▓"}, - {"▓⊙⊙⊙▓快乐玩蛇▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0 + {"鈻 鈻"}, // 1 + {"鈻 鈻"}, // 2 + {"鈻 鈻"}, // 3 + {"鈻 鈻"}, // 4 + {"鈻 _________ 鈻"}, // 5 + {"鈻 | | | =銆=銆=銆=銆=銆=銆撱=銆=銆=銆=鈻"}, // 6 + {"鈻 = 銆撱 | | =銆撱=銆=銆=銆=銆= 銆 銆= 銆=銆=鈻"}, // 7 + {"鈻 = 銆撱 = | 銆撱=銆撱=銆=銆=銆=銆=銆撱=銆=銆=銆=鈻"}, // 8 + {"鈻 銆=銆=銆 銆= | | =銆撱=銆=銆撱撱=銆撱撱=銆=銆撱撯枲"}, // 9 + {"鈻 Do Not Touch 銆== | =銆=銆=銆=銆撱撱=銆=銆=銆撯枲"}, // 10 + {"鈻 The Snake 銆=銆 | =銆撱=銆=銆=銆=銆 =銆撯枲"}, // 11 + {"鈻 銆 鈫撯啌銆撱 | 銆撱==銆撱=銆=銆撱=銆撯枲"}, // 12 + {"鈻 | | 銆撱=銆=銆撱撱=銆撱=鈻"}, // 13 + {"鈻 | ___/ ^ =銆撱=銆=銆 =銆 =鈻"}, // 14 + {"鈻 | ____/ |_| 鈻"}, // 15 + {"鈻 / 鈻"}, // 16 + {"鈻 | 鈻"}, // 17 + {"鈻 | =銆=銆撱=銆=銆=銆=銆= 鈻"}, // 18 + {"鈻 | 銆 銆== =銆 銆= =銆 鈻"}, // 19 + {"鈻 | = 銆 = 銆撱 = =銆 鈻"}, // 20 + {"鈻 | == =銆撱=銆撱= 鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛7 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撳揩涔愭《 鈻 浜哄彲浠ョ姱閿欙紝浣嗘槸涓嶅彲鐘悓涓涓敊銆 鈻"}, + {"鈻撯姍鈯欌姍鈻撳揩涔愮帺铔団枔 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {3, 16, 38, 2, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0 - {"■ || ■"}, // 1 - {"■ || ■"}, // 2 - {"■ -|| ■"}, // 3 - {"■ || ■"}, // 4 - {"■ _||_ ■"}, // 5 - {"■ \\| ◇|| ■"}, // 6 - {"■ | ◆ | ■"}, // 7 - {"■ || ◇|| ■"}, // 8 - {"■ | ◆ | ■"}, // 9 - {"■ | ◇|| ■"}, // 10 - {"■ _| ◆ | ■"}, // 11 - {"■ | ◇|| ■"}, // 12 - {"■ _____|_◆_|_____ ■"}, // 13 - {"■ __|________________|__ ■"}, // 14 - {"■ | | | | | | | ■"}, // 15 - {"■ | | | | | | | ■"}, // 16 - {"■ =〓=〓=〓〓=〓=〓 =〓==〓 =〓=〓=■"}, // 17 - {"■ =〓=〓=〓〓=〓=〓=〓==〓 =〓=〓=〓■"}, // 18 - {"■ =〓=〓=〓〓=〓=〓=〓==〓〓=〓=〓=〓■"}, // 19 - {"■ 〓 = = =〓=〓=〓=〓=〓〓=〓=〓=〓==〓〓=〓=〓=〓=■"}, // 20 - {"■ = = 〓=〓=〓=〓=〓〓=〓=〓=〓==〓〓=〓=〓=〓=■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:8 ▓ ▓"}, - {"▓⊙□⊙▓最终章 ▓ 仰望星空,成功就在眼前 ▓"}, - {"▓⊙⊙⊙▓通天塔 ▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0 + {"鈻 || 鈻"}, // 1 + {"鈻 || 鈻"}, // 2 + {"鈻 -|| 鈻"}, // 3 + {"鈻 || 鈻"}, // 4 + {"鈻 _||_ 鈻"}, // 5 + {"鈻 \\| 鈼噟| 鈻"}, // 6 + {"鈻 | 鈼 | 鈻"}, // 7 + {"鈻 || 鈼噟| 鈻"}, // 8 + {"鈻 | 鈼 | 鈻"}, // 9 + {"鈻 | 鈼噟| 鈻"}, // 10 + {"鈻 _| 鈼 | 鈻"}, // 11 + {"鈻 | 鈼噟| 鈻"}, // 12 + {"鈻 _____|_鈼哶|_____ 鈻"}, // 13 + {"鈻 __|________________|__ 鈻"}, // 14 + {"鈻 | | | | | | | 鈻"}, // 15 + {"鈻 | | | | | | | 鈻"}, // 16 + {"鈻 =銆=銆=銆撱=銆=銆 =銆==銆 =銆=銆=鈻"}, // 17 + {"鈻 =銆=銆=銆撱=銆=銆=銆==銆 =銆=銆=銆撯枲"}, // 18 + {"鈻 =銆=銆=銆撱=銆=銆=銆==銆撱=銆=銆=銆撯枲"}, // 19 + {"鈻 銆 = = =銆=銆=銆=銆=銆撱=銆=銆=銆==銆撱=銆=銆=銆=鈻"}, // 20 + {"鈻 = = 銆=銆=銆=銆=銆撱=銆=銆=銆==銆撱=銆=銆=銆=鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛8 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻撴渶缁堢珷 鈻 浠版湜鏄熺┖锛屾垚鍔熷氨鍦ㄧ溂鍓 鈻"}, + {"鈻撯姍鈯欌姍鈻撻氬ぉ濉 鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, {3, 6, 1, 1, - {{"■⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙■"}, // 0 - {"■回家 ■ end 恭喜顺利通关!!!! end ■"}, // 1 - {"■■■■■ 然而这破游戏并没有结局,Bennett Foddy只能选择回家■"}, // 2 - {"■■■■■ 后记: ■"}, // 3 - {"■ ■ 写这个游戏几乎用上了我大一上学的所有技巧 ■"}, // 4 - {"■ ■ ■"}, // 5 - {"■ ||■■ 相当于一个十分大的功能整合程序 ■"}, // 6 - {"■ || ■"}, // 7 - {"■ | 游戏里许多小细节的实现都是一个大程序 ■"}, // 8 - {"■ | ■"}, // 9 - {"■ | 但游戏重点还是游戏内容 ■"}, // 10 - {"■ | ■"}, // 11 - {"■ | 前面花费太多时间实现基本功能以至于内容有点赶 ■"}, // 12 - {"■ | ■"}, // 13 - {"■ | 最重要的是为了写这个,我被正版游戏虐到吐了 ■"}, // 14 - {"■ | ■"}, // 15 - {"■ | 为了构思关卡去玩正版,直接心态爆炸 ■"}, // 16 - {"■ | ■"}, // 17 - {"■ | 很少用时间去设置导致游戏内容效果不是太完美 ■"}, // 18 - {"■ | ■"}, // 19 - {"■ |〓 但框架写的真的舒服,感觉可以自己控制任意模块 =■"}, // 20 - {"■ | = =■"}, // 21 - {"■⊙⊙⊙⊙⊙⊙总之收获很大,2020加油 ⊙■"}, // 22 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}, - {"▓⊙⊙⊙▓Pass:o ▓ ▓"}, - {"▓⊙□⊙▓ END ▓ 有理想在的地方,地狱就是天堂。 ▓"}, - {"▓⊙⊙⊙▓ 回家 ▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}}, + {{"鈻犫姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈯欌姍鈻"}, // 0 + {"鈻犲洖瀹 鈻 end 鎭枩椤哄埄閫氬叧锛侊紒锛侊紒 end 鈻"}, // 1 + {"鈻犫枲鈻犫枲鈻 鐒惰岃繖鐮存父鎴忓苟娌℃湁缁撳眬锛孊ennett Foddy鍙兘閫夋嫨鍥炲鈻"}, // 2 + {"鈻犫枲鈻犫枲鈻 鍚庤锛 鈻"}, // 3 + {"鈻 鈻 鍐欒繖涓父鎴忓嚑涔庣敤涓婁簡鎴戝ぇ涓涓婂鐨勬墍鏈夋妧宸 鈻"}, // 4 + {"鈻 鈻 鈻"}, // 5 + {"鈻 ||鈻犫枲 鐩稿綋浜庝竴涓崄鍒嗗ぇ鐨勫姛鑳芥暣鍚堢▼搴 鈻"}, // 6 + {"鈻 || 鈻"}, // 7 + {"鈻 | 娓告垙閲岃澶氬皬缁嗚妭鐨勫疄鐜伴兘鏄竴涓ぇ绋嬪簭 鈻"}, // 8 + {"鈻 | 鈻"}, // 9 + {"鈻 | 浣嗘父鎴忛噸鐐硅繕鏄父鎴忓唴瀹 鈻"}, // 10 + {"鈻 | 鈻"}, // 11 + {"鈻 | 鍓嶉潰鑺辫垂澶鏃堕棿瀹炵幇鍩烘湰鍔熻兘浠ヨ嚦浜庡唴瀹规湁鐐硅刀 鈻"}, // 12 + {"鈻 | 鈻"}, // 13 + {"鈻 | 鏈閲嶈鐨勬槸涓轰簡鍐欒繖涓紝鎴戣姝g増娓告垙铏愬埌鍚愪簡 鈻"}, // 14 + {"鈻 | 鈻"}, // 15 + {"鈻 | 涓轰簡鏋勬濆叧鍗″幓鐜╂鐗堬紝鐩存帴蹇冩佺垎鐐 鈻"}, // 16 + {"鈻 | 鈻"}, // 17 + {"鈻 | 寰堝皯鐢ㄦ椂闂村幓璁剧疆瀵艰嚧娓告垙鍐呭鏁堟灉涓嶆槸澶畬缇 鈻"}, // 18 + {"鈻 | 鈻"}, // 19 + {"鈻 |銆 浣嗘鏋跺啓鐨勭湡鐨勮垝鏈嶏紝鎰熻鍙互鑷繁鎺у埗浠绘剰妯″潡 =鈻"}, // 20 + {"鈻 | = =鈻"}, // 21 + {"鈻犫姍鈯欌姍鈯欌姍鈯欐讳箣鏀惰幏寰堝ぇ锛2020鍔犳补 鈯欌枲"}, // 22 + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}, + {"鈻撯姍鈯欌姍鈻揚ass锛歰 鈻 鈻"}, + {"鈻撯姍鈻♀姍鈻 END 鈻 鏈夌悊鎯冲湪鐨勫湴鏂癸紝鍦扮嫳灏辨槸澶╁爞銆 鈻"}, + {"鈻撯姍鈯欌姍鈻 鍥炲 鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}}, }; char menu_message[10] [200] = { - {"┏---------┓"}, {"┗---------┚"}, {"| ◇新游戏 |"}, {"| ◇继续 |"}, {"| ◇设定 |"}, {"| ◇更多 |"}, {"| ◇退出 |"} /*6 37 49*/ /* 27 7 */}; + {"鈹---------鈹"}, {"鈹---------鈹"}, {"| 鈼囨柊娓告垙 |"}, {"| 鈼囩户缁 |"}, {"| 鈼囪瀹 |"}, {"| 鈼囨洿澶 |"}, {"| 鈼囬鍑 |"} /*6 37 49*/ /* 27 7 */}; char loading[200][800] = { - {"███████████████████████████████"}, - {"█ █"}, - {"█ ■■ Getting Over It with Bennett Foddy ■■ █"}, - {"█ █"}, - {"█ ■■ ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽ ■■ █"}, - {"█ ■■ ⊙程序名字: 掘地求升 ⊙ ■■ █"}, - {"█ ■■ ⊙ ⊙ ■■ █"}, - {"█ ■■ ⊙版本信息: o.o.o ⊙ ■■ █"}, - {"█ ■■ ⊙ ⊙ ■■ █"}, - {"█ ■■ ⊙程序作者: 404name ⊙ ■■ █"}, - {"█ ■■ △△△△△△△△△△△△△△△△△△ ■■ █"}, // 10 - {"█ █"}, - {"█ ⊙log ██████████████████ █"}, // 13,12 - {"█ █"}, - {"█ ██████████████████ █"}, - {"█ █"}, - {"█ ██████████████████ █"}, - {"█ █"}, - {"█ ██████████████████ █"}, - {"█ █"}, - {"█ ██████████████████ █"}, - {"█ █"}, - {"███████████████████████████████"}, // 22 - {"▓ L O A D I N G:□□□□□□□□□□□ ▓"}, - {"▓ 加载文档 : ◇ 0000/1000 ◇ ▓"}, // 27 24 - {"▓ ▓"}, // 34 25 - {"▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}; + {"鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻"}, + {"鈻 鈻"}, + {"鈻 鈻犫枲 Getting Over It with Bennett Foddy 鈻犫枲 鈻"}, + {"鈻 鈻"}, + {"鈻 鈻犫枲 鈻解柦鈻解柦鈻解柦鈻解柦鈻解柦鈻解柦鈻解柦鈻解柦鈻解柦 鈻犫枲 鈻"}, + {"鈻 鈻犫枲 鈯欑▼搴忓悕瀛楋細 鎺樺湴姹傚崌 鈯 鈻犫枲 鈻"}, + {"鈻 鈻犫枲 鈯 鈯 鈻犫枲 鈻"}, + {"鈻 鈻犫枲 鈯欑増鏈俊鎭細 o.o.o 鈯 鈻犫枲 鈻"}, + {"鈻 鈻犫枲 鈯 鈯 鈻犫枲 鈻"}, + {"鈻 鈻犫枲 鈯欑▼搴忎綔鑰咃細 404name 鈯 鈻犫枲 鈻"}, + {"鈻 鈻犫枲 鈻斥柍鈻斥柍鈻斥柍鈻斥柍鈻斥柍鈻斥柍鈻斥柍鈻斥柍鈻斥柍 鈻犫枲 鈻"}, // 10 + {"鈻 鈻"}, + {"鈻 鈯檒og 鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅 鈻"}, // 13,12 + {"鈻 鈻"}, + {"鈻 鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅 鈻"}, + {"鈻 鈻"}, + {"鈻 鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅 鈻"}, + {"鈻 鈻"}, + {"鈻 鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅 鈻"}, + {"鈻 鈻"}, + {"鈻 鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅 鈻"}, + {"鈻 鈻"}, + {"鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻"}, // 22 + {"鈻 L O A D I N G锛氣枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴 鈻"}, + {"鈻 鍔犺浇鏂囨。 : 鈼 0000/1000 鈼 鈻"}, // 27 24 + {"鈻 鈻"}, // 34 25 + {"鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}; /* - {"█ ■■ ⊙1.21 设置地图+整合游戏 ■■ █"}, + {"鈻 鈻犫枲 鈯1.21 璁剧疆鍦板浘+鏁村悎娓告垙 鈻犫枲 鈻"}, - {"█ █"},*/ + {"鈻 鈻"},*/ char end[200][800] = { - {"■■□□□■■□□□■■□□□□□□□□□□□□■■□■□□□"}, {"□■■□□□■□□□■■■■■□■■■■■■□□■■□■■□□"}, {"□□□■■■■■□■■■■■■□■■■■■■□□■■□□■□□"}, {"□□□■■■■■■■□□□□□□□□□□■■□□■■■■■■□"}, {"■■□□■■□□■□■■■■■□□□□□■■■■■■■■■■□"}, {"□■■□■■■■□□■■■■■□□■■□■■■■■■□□□□□"}, {"□□□□■■■■□□□□■■□□□■■□■■□□■■□□■□□"}, {"□□□□■■□■□■■■■■■□□□■■■□□□■■□■■□□"}, {"□□■□■■□■□■■■■■■□□□□■■□□□■■□■■□□"}, {"□□■□■■□■□□□■■□□□□□■■■■□□□■■■□□□"}, {"□■■□■■□■□□□■■□□□□■■□□■□□□■■□□□■"}, {"□■□□■■□■□□□■■□□□■■□□□□□□■■■■□■■"}, {"■■□■■■□■□□■■■□□□■□□□□□■■■□□■■■■"}, {"■■□■■□■■□□■■□□□□□□□□□□■■□□□□■■■"}, {"□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□"}, {"□□■■□□□□□■■□□□□□□□□□□□□■■□□□□□□"}, {"□□■■□□■■■■■■■■■□■■■■■■■■■■■■■■■"}, {"□■■□□□■■■■■■■■■□■■■■■■■■■■■■■■■"}, {"■■□□■■□□□■■□□□□□□□□□□□□■■□□□□□□"}, {"■■■■■■□■■■■■■■□□□□■■■■■■■■■■■■□"}, {"□□■■□□□■■■■■■■□□□□■■■■■■■■■■■■□"}, {"□■■□□□□□□□□□□□□□□□■■□□□■■□□□■■□"}, {"■■■■■■□■■■■■■■□□□□■■■■■■■■■■■■□"}, {"■■■■■■□■■■■■■■□□□□□□□■■■■■□□□□□"}, {"□□□□□□□■■□□□■■□□□□□□■■□■■■■□□□□"}, {"□□□■■■□■■□□□■■□□□□□■■□□■■□■■□□□"}, {"■■■■■■□■■■■■■■□□□■■■□□□■■□□■■■□"}, {"■■■□□□□■■■■■■■□□□■■□□□□■■□□□■■□"}, {"□□□□□□□■■□□□■■□□□□□□□□□■■□□□□□□"}}; + {"鈻犫枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻犫枲鈻♀枲鈻♀枴鈻"}, {"鈻♀枲鈻犫枴鈻♀枴鈻犫枴鈻♀枴鈻犫枲鈻犫枲鈻犫枴鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻犫枲鈻♀枲鈻犫枴鈻"}, {"鈻♀枴鈻♀枲鈻犫枲鈻犫枲鈻♀枲鈻犫枲鈻犫枲鈻犫枴鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻犫枲鈻♀枴鈻犫枴鈻"}, {"鈻♀枴鈻♀枲鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻犫枲鈻♀枴鈻犫枲鈻犫枲鈻犫枲鈻"}, {"鈻犫枲鈻♀枴鈻犫枲鈻♀枴鈻犫枴鈻犫枲鈻犫枲鈻犫枴鈻♀枴鈻♀枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, {"鈻♀枲鈻犫枴鈻犫枲鈻犫枲鈻♀枴鈻犫枲鈻犫枲鈻犫枴鈻♀枲鈻犫枴鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻"}, {"鈻♀枴鈻♀枴鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻犫枲鈻♀枴鈻♀枲鈻犫枴鈻犫枲鈻♀枴鈻犫枲鈻♀枴鈻犫枴鈻"}, {"鈻♀枴鈻♀枴鈻犫枲鈻♀枲鈻♀枲鈻犫枲鈻犫枲鈻犫枴鈻♀枴鈻犫枲鈻犫枴鈻♀枴鈻犫枲鈻♀枲鈻犫枴鈻"}, {"鈻♀枴鈻犫枴鈻犫枲鈻♀枲鈻♀枲鈻犫枲鈻犫枲鈻犫枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻♀枲鈻犫枴鈻"}, {"鈻♀枴鈻犫枴鈻犫枲鈻♀枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枴鈻犫枲鈻犫枲鈻♀枴鈻♀枲鈻犫枲鈻♀枴鈻"}, {"鈻♀枲鈻犫枴鈻犫枲鈻♀枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枲鈻犫枴鈻♀枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻"}, {"鈻♀枲鈻♀枴鈻犫枲鈻♀枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻♀枴鈻犫枲鈻犫枲鈻♀枲鈻"}, {"鈻犫枲鈻♀枲鈻犫枲鈻♀枲鈻♀枴鈻犫枲鈻犫枴鈻♀枴鈻犫枴鈻♀枴鈻♀枴鈻犫枲鈻犫枴鈻♀枲鈻犫枲鈻"}, {"鈻犫枲鈻♀枲鈻犫枴鈻犫枲鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻犫枲鈻"}, {"鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻"}, {"鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枴鈻"}, {"鈻♀枴鈻犫枲鈻♀枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, {"鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, {"鈻犫枲鈻♀枴鈻犫枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枴鈻"}, {"鈻犫枲鈻犫枲鈻犫枲鈻♀枲鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, {"鈻♀枴鈻犫枲鈻♀枴鈻♀枲鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, {"鈻♀枲鈻犫枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻犫枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻"}, {"鈻犫枲鈻犫枲鈻犫枲鈻♀枲鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻"}, {"鈻犫枲鈻犫枲鈻犫枲鈻♀枲鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻♀枴鈻♀枲鈻犫枲鈻犫枲鈻♀枴鈻♀枴鈻"}, {"鈻♀枴鈻♀枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻♀枴鈻犫枲鈻♀枲鈻犫枲鈻犫枴鈻♀枴鈻"}, {"鈻♀枴鈻♀枲鈻犫枲鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻♀枲鈻犫枴鈻♀枲鈻犫枴鈻犫枲鈻♀枴鈻"}, {"鈻犫枲鈻犫枲鈻犫枲鈻♀枲鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枲鈻犫枲鈻♀枴鈻♀枲鈻犫枴鈻♀枲鈻犫枲鈻"}, {"鈻犫枲鈻犫枴鈻♀枴鈻♀枲鈻犫枲鈻犫枲鈻犫枲鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻"}, {"鈻♀枴鈻♀枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻犫枲鈻♀枴鈻♀枴鈻♀枴鈻♀枴鈻♀枲鈻犫枴鈻♀枴鈻♀枴鈻"}}; char more_message[200][800] = { - {"懒得开发模块了"}, - {"按任意键继续"}, - {"游戏信息:掘地求升C语言版"}, - {"游戏作者:CTGU_LLZ "}, - {"游戏性质:寒假答辩作品"}, - {"开发日志:"}, - {"⊙1.15 实现跳跃与重力 "}, - {"⊙1.16-1.18 构建游戏框架 "}, - {"⊙1.19 实现关卡间跳跃 "}, - {"⊙1.20 写菜单+游戏整合 "}, - {"⊙1.21-later 丰富关卡+优化操作 "}, // 38 - {"更多相关内容:"}, - {"github:https://github.com/404name/C-game"}, - {"博客园:https://www.cnblogs.com/404name/"}, - {"启明星论坛:https://www.ctguqmx.com/article/category-14"}, - {"没了"}}; -char menu_message_1[10][20] = {{"取消"}, {"退出"}, {":开挂"}, {":返回"}, {":——"}, {":——"}}; + {"鎳掑緱寮鍙戞ā鍧椾簡"}, + {"鎸変换鎰忛敭缁х画"}, + {"娓告垙淇℃伅锛氭帢鍦版眰鍗嘋璇█鐗"}, + {"娓告垙浣滆咃細CTGU_LLZ "}, + {"娓告垙鎬ц川锛氬瘨鍋囩瓟杈╀綔鍝"}, + {"寮鍙戞棩蹇:"}, + {"鈯1.15 瀹炵幇璺宠穬涓庨噸鍔 "}, + {"鈯1.16-1.18 鏋勫缓娓告垙妗嗘灦 "}, + {"鈯1.19 瀹炵幇鍏冲崱闂磋烦璺 "}, + {"鈯1.20 鍐欒彍鍗+娓告垙鏁村悎 "}, + {"鈯1.21-later 涓板瘜鍏冲崱+浼樺寲鎿嶄綔 "}, // 38 + {"鏇村鐩稿叧鍐呭锛"}, + {"github锛歨ttps://github.com/404name/C-game"}, + {"鍗氬鍥細https://www.cnblogs.com/404name/"}, + {"鍚槑鏄熻鍧涳細https://www.ctguqmx.com/article/category-14"}, + {"娌′簡"}}; +char menu_message_1[10][20] = {{"鍙栨秷"}, {"閫鍑"}, {"锛氬紑鎸"}, {"锛氳繑鍥"}, {"锛氣斺"}, {"锛氣斺"}}; char loading_message[10][50] = { - {"⊙Bennett Foddy 通关游戏后飞向了太空 "}, - {"⊙他长时间暴露在宇宙射线下发生了变异 "}, - {"⊙变成了一只会玩锤子的可爱小白兔 M "}, - {"⊙并且只存活在C语言代码中 "}, - {"⊙你能帮他继续往上抡锤子吗 "}}; // 38 + {"鈯橞ennett Foddy 閫氬叧娓告垙鍚庨鍚戜簡澶┖ "}, + {"鈯欎粬闀挎椂闂存毚闇插湪瀹囧畽灏勭嚎涓嬪彂鐢熶簡鍙樺紓 "}, + {"鈯欏彉鎴愪簡涓鍙細鐜╅敜瀛愮殑鍙埍灏忕櫧鍏 M "}, + {"鈯欏苟涓斿彧瀛樻椿鍦–璇█浠g爜涓 "}, + {"鈯欎綘鑳藉府浠栫户缁線涓婃姟閿ゅ瓙鍚 "}}; // 38 char setting_message[8][100] = { - {"███████████████████████████████"}, - {"▓ ▓"}, - {"▓ 2 3 ▓"}, - {"▓ 4 5 ▓"}, - {"▓ ▓"}, // 27 42 + {"鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻"}, + {"鈻 鈻"}, + {"鈻 2 3 鈻"}, + {"鈻 4 5 鈻"}, + {"鈻 鈻"}, // 27 42 // 24-25 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}; + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}; char exit_message[8][100] = { - {"███████████████████████████████"}, - {"▓ ▓"}, - {"▓ 是 否 确 认 退 出 游 戏 ▓"}, - {"▓ 0 1 ▓"}, - {"▓ ▓"}, // 27 42 + {"鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻"}, + {"鈻 鈻"}, + {"鈻 鏄 鍚 纭 璁 閫 鍑 娓 鎴 鈻"}, + {"鈻 0 1 鈻"}, + {"鈻 鈻"}, // 27 42 // 24-25 - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}; + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}; char menu[200][800] = { - {"███████████████████████████████"}, - {"█■■■■■■■■■■■ █"}, - {"█■■■■■■■■■■■■ _________ █"}, - {"█■■ 和Bennett Foddy一起■ /_______◎\\ █"}, - {"█■■■■■■■■攻克难关■|____ ____\\ █"}, - {"█■■■■■■■■■■■■■■ |*| █"}, - {"█■■■■■■■■■■■■■■ |*| 0 █"}, - {"█■■■■■■■■■■■■■■■ |*| 2 █"}, - {"█■■■■■■■■■■■■■■■ |*| 1 █"}, - {"█■■■■■■■■■■■■■■■ |*| 0 █"}, - {"█■■■■■■■■■■■■■■■ |*| 3 █"}, - {"█■■■■■■■■■■■■■■■ |*| 1 █"}, - {"█■■■■■■■■■■■■■■■ |*| 0 █"}, - {"█■■■■■■■■■■■■■■■ |*| 4 █"}, - {"█■■■■■■■■■■■■■■■ |*| 1 █"}, - {"█■■■■■■■■■■■■■■◤ |*| 0 █"}, - {"█■■■■■■■■■■■■■■ |*| 5 █"}, - {"█■■■■■■■■■■■■■■ |*| 1 █"}, - {"█■■■■■■■■■■■■■◤ |*| 0 █"}, - {"█■■■■■■■■■■■■■ |*| 6 █"}, - {"█■■■■■■■■■■■■■ |*| 1 █"}, - {"█version o.o.o■■■■■◤ |*| █"}, - {"███████████████████████████████"}, - {"▓ L O A D I N G:■■■■■■■■■■■■ ▓"}, - {"▓ 加载文档 : 成 功 加 载 ▓"}, - {"▓ Tip : 方向键可控制上下左右 ▓"}, - {"▓ ▓"}, - {"▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓"}}; -char map[200][800]; //地图载体 -char message[10][3] = {{"⊙"}, {"●"}, {"□"}, {"■"}}; + {"鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻 _________ 鈻"}, + {"鈻堚枲鈻 鍜孊ennett Foddy涓璧封枲 /_______鈼嶾\ 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犳敾鍏嬮毦鍏斥枲|____ ____\\ 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻 |*| 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻 |*| 0 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 2 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 1 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 0 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 3 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 1 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 0 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 4 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 1 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫棨 |*| 0 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻 |*| 5 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻 |*| 1 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈼 |*| 0 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 6 鈻"}, + {"鈻堚枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲 |*| 1 鈻"}, + {"鈻坴ersion o.o.o鈻犫枲鈻犫枲鈻犫棨 |*| 鈻"}, + {"鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻"}, + {"鈻 L O A D I N G锛氣枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻犫枲鈻 鈻"}, + {"鈻 鍔犺浇鏂囨。 : 鎴 鍔 鍔 杞 鈻"}, + {"鈻 Tip : 鏂瑰悜閿彲鎺у埗涓婁笅宸﹀彸 鈻"}, + {"鈻 鈻"}, + {"鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻撯枔鈻"}}; +char map[200][800]; //鍦板浘杞戒綋 +char message[10][3] = {{"鈯"}, {"鈼"}, {"鈻"}, {"鈻"}}; char turn = '8', old_turn = turn; int now_pass = 0, old_pass = 0, back_to_last_pass_x = 0, if_back = 0; -int check[200] = {4, 5, 6, 7, 0, 1, 2, 3}; //让锤子位置和人位置相对相反 +int check[200] = {4, 5, 6, 7, 0, 1, 2, 3}; //璁╅敜瀛愪綅缃拰浜轰綅缃浉瀵圭浉鍙 int x = 7, y = 13, old_x = 7, old_y = 13, x_link = 7, y_link = 12, x_hammer = 7, y_hammer = 11, reset_x = x, reset_y = y; int direct_people = 6, old_direct_people = 6, direct_hammer = 2, @@ -475,23 +475,23 @@ int can_jump = 0, jumpturn = 8, jump_time = 0; int gravity_on = 1, jump_up_flag = 0, paste = 0, old_paste, G_flag = 0, game_end = 0; int next[8][2] = {{-1, 0}, {-1, -1}, {0, -1}, {1, -1}, {1, 0}, {1, 1}, {0, 1}, {-1, 1}}; -// 0左 1左上 2上 3右上 4右 5右下 6下 -// 7左下 +// 0宸 1宸︿笂 2涓 3鍙充笂 4鍙 5鍙充笅 6涓 +// 7宸︿笅 int jumpform[8][11] = { - //对应next - //两倍 - {1, 2}, // 0直接跳 (0下标为执行次数,后面记录状态) - {3, 4, 4, 6}, // 1右小跳 - {3, 0, 0, 6}, // 2左小跳 - {4, 2, 4, 4, 6}, // 3右翻越 - {4, 2, 0, 0, 6}, // 4左翻越 - {4, 0, 2, 2, 4}, // 5下 - {4, 2, 2, 0, 0}, // 6左上 - {4, 2, 2, 4, 4}, // 7右上 + //瀵瑰簲next + //涓ゅ + {1, 2}, // 0鐩存帴璺 (0涓嬫爣涓烘墽琛屾鏁,鍚庨潰璁板綍鐘舵) + {3, 4, 4, 6}, // 1鍙冲皬璺 + {3, 0, 0, 6}, // 2宸﹀皬璺 + {4, 2, 4, 4, 6}, // 3鍙崇炕瓒 + {4, 2, 0, 0, 6}, // 4宸︾炕瓒 + {4, 0, 2, 2, 4}, // 5涓 + {4, 2, 2, 0, 0}, // 6宸︿笂 + {4, 2, 2, 4, 4}, // 7鍙充笂 }; -int message_place[10][2] = {{0, 0}, {2, 26}, {4, 26}, {6, 26}, {2, 25}, {4, 25}, {6, 25}, {2, 24}, {4, 24}, {6, 24}}; // x 水平 +int message_place[10][2] = {{0, 0}, {2, 26}, {4, 26}, {6, 26}, {2, 25}, {4, 25}, {6, 25}, {2, 24}, {4, 24}, {6, 24}}; // x 姘村钩 int direct_hammer_to_message_place[8] = {4, 7, 8, 9, 6, 3, 2, 1}; -int jumpform_to_direct_hammer[8][11] = { // jump时保持锤子不动 两倍 +int jumpform_to_direct_hammer[8][11] = { // jump鏃朵繚鎸侀敜瀛愪笉鍔 涓ゅ {8, 8}, {8, 6, 7, 0}, {8, 6, 5, 4}, @@ -502,18 +502,18 @@ int jumpform_to_direct_hammer[8][11] = { // jump时 {8, 4, 5, 6, 7}}; int direct_people_to_jump[8] = {3, 1, 0, 2, 4, 6, 5, 7}; -int back_pass_trigger[80][80] = {0}; // 0没事 1返回上一关 -int next_pass_trigger[80][80] = {0}; // 0没事 1下一关 +int back_pass_trigger[80][80] = {0}; // 0娌′簨 1杩斿洖涓婁竴鍏 +int next_pass_trigger[80][80] = {0}; // 0娌′簨 1涓嬩竴鍏 int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, int xx, int yy) { - //主要函数 :灵活的实现选择指针; - //参数:开始坐标x y 限制活动空间 x左右 y 上下 移动距离 x y + //涓昏鍑芥暟 锛氱伒娲荤殑瀹炵幇閫夋嫨鎸囬拡锛 + //鍙傛暟锛氬紑濮嬪潗鏍噚 y 闄愬埗娲诲姩绌洪棿 x宸﹀彸 y 涓婁笅 绉诲姩璺濈 x y int tx = x, ty = y, i; gotoxy(x - 14, y); - printf("▉"); + printf("鈻"); gotoxy(x, y); - printf("▉"); //可自定义2个字节的指针图标 + printf("鈻"); //鍙嚜瀹氫箟2涓瓧鑺傜殑鎸囬拡鍥炬爣 char ch = '\0', ch1 = '\0'; char res[20]; while (ch != ' ') @@ -523,7 +523,7 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, ch != -32) continue; if (ch == -32) - { //同时启用wasd 和上下左右键 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 ch1 = getch(); switch (ch1) { @@ -569,9 +569,9 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, } ty = y, tx = x; gotoxy(x - 14, y); - printf("▉"); + printf("鈻"); gotoxy(x, y); - printf("▉"); + printf("鈻"); } return map[y][x] - '0'; } @@ -586,10 +586,10 @@ int init() check['6'] = 4; check['3'] = 5; check['2'] = 6; - check['1'] = 7; //直接让锤子移动对应next; + check['1'] = 7; //鐩存帴璁╅敜瀛愮Щ鍔ㄥ搴攏ext锛 check['a'] = 0; check['d'] = 4; - for (int i = 2; i < 60; i++) //触发坠落 + for (int i = 2; i < 60; i++) //瑙﹀彂鍧犺惤 { back_pass_trigger[22][i] = 1; } @@ -599,7 +599,7 @@ int init() } Sleep(200); gotoxy(13, 12); - printf("按任意键开始加载◇◇◇(按p直接跳过)"); + printf("鎸変换鎰忛敭寮濮嬪姞杞解棁鈼団棁(鎸塸鐩存帴璺宠繃)"); char temp = getch(); if (temp == 'p') return 1; @@ -615,7 +615,7 @@ int init() if (i % 91 == 0) { gotoxy(27 + (2 * flag_2), 23); - printf("■"); + printf("鈻"); flag_2++; } gotoxy(33, 24); @@ -623,10 +623,10 @@ int init() Sleep(load_speed); } gotoxy(12, 25); - printf("⊙帮助它(按任意键进入游戏)"); + printf("鈯欏府鍔╁畠(鎸変换鎰忛敭杩涘叆娓告垙)"); Sleep(200); gotoxy(12, 26); - printf("⊙玩个锤子的兔子啊(按P拒绝)"); + printf("鈯欑帺涓敜瀛愮殑鍏斿瓙鍟(鎸塒鎷掔粷)"); char ch = getch(); if (ch == 'p' || ch == 'P') return 0; @@ -634,7 +634,7 @@ int init() return 1; } -void load_game() //读取关卡信息 +void load_game() //璇诲彇鍏冲崱淇℃伅 { gotoxy(0, 0); int i, j; @@ -643,7 +643,7 @@ void load_game() // for (i = 0; i <= 27; i++) strcpy(map[i], s[now_pass].map[i]); if (back_to_last_pass_x == 0) - { //正常通关 + { //姝e父閫氬叧 x = s[now_pass].start_x; y = s[now_pass].start_y; } @@ -656,23 +656,23 @@ void load_game() // old_x = x, old_y = y; x_link = x, y_link = y - 1; x_hammer = x, y_hammer = x - 2; - for (i = 0; i < 8; i++) //新的下一关触发器设置 + for (i = 0; i < 8; i++) //鏂扮殑涓嬩竴鍏宠Е鍙戝櫒璁剧疆 next_pass_trigger[s[old_pass].next_y + next[i][1]] [s[old_pass].next_x + next[i][0]] = 0; - for (i = 0; i < 8; i++) //新的下一关触发器设置 + for (i = 0; i < 8; i++) //鏂扮殑涓嬩竴鍏宠Е鍙戝櫒璁剧疆 next_pass_trigger[s[now_pass].next_y + next[i][1]] [s[now_pass].next_x + next[i][0]] = 1; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); for (i = 0; i <= 22; i++) printf("%s\n", map[i]); - SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 8); //附加信息框 + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 8); //闄勫姞淇℃伅妗 for (i = 23; i <= 27; i++) printf("%s\n", map[i]); gotoxy(x, y); printf("%c", people); } -void show_move() //移动显示 +void show_move() //绉诲姩鏄剧ず { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 00); if (old_x != x || old_y != y) @@ -693,11 +693,11 @@ void show_move() // gotoxy(x_hammer, y_hammer); printf(" "); } - //消除上次 + //娑堥櫎涓婃 if (jump_time && jumpform_to_direct_hammer[jumpturn][jumpform[jumpturn][0] + 1 - jump_time] != 8) - { //锤子不动 + { //閿ゅ瓙涓嶅姩 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); gotoxy(message_place[direct_hammer_to_message_place[direct_hammer]][0], message_place[direct_hammer_to_message_place[direct_hammer]][1]); @@ -721,7 +721,7 @@ void show_move() // printf("%2s", message[1]); } else - { //锤子伴随人动 + { //閿ゅ瓙浼撮殢浜哄姩 x_link = x + next[direct_hammer][0]; y_link = y + next[direct_hammer][1]; x_hammer = x + 2 * next[direct_hammer][0]; @@ -739,16 +739,16 @@ void show_move() // map[y_hammer][x_hammer] = hammer; gotoxy(x_hammer, y_hammer); printf("%c", hammer); - } //更新下一次 + } //鏇存柊涓嬩竴娆 gotoxy(x, y); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 8); printf("%c", people); gotoxy(x, y); - /*gotoxy(0,30); //打印坐标信息 + /*gotoxy(0,30); //鎵撳嵃鍧愭爣淇℃伅 printf("x is %d\ny is %d",x,y); */ } -void autochange() //系统自动更新 +void autochange() //绯荤粺鑷姩鏇存柊 { old_paste = paste; old_x = x; @@ -824,7 +824,7 @@ void autochange() //系统 else if (gravity_on == 1 && (map[y + 1][x] == ' ' || map[y + 1][x] == link || map[y + 1][x] == hammer)) - { //重力下坠 + { //閲嶅姏涓嬪潬 y++; show_move(); Sleep(100); @@ -835,12 +835,12 @@ void autochange() //系统 jumpturn = 8; } gravity_on = 1; - paste = 0; //是否黏住 + paste = 0; //鏄惁榛忎綇 if (map[y_hammer][x_hammer] == - hammer) //若锤子固定 则取消重力 取消跳跃状态。 + hammer) //鑻ラ敜瀛愬浐瀹 鍒欏彇娑堥噸鍔 鍙栨秷璺宠穬鐘舵併 for (int i = 0; i < 8; i += 2) { - /*if (i == 2) //取消上方粘 + /*if (i == 2) //鍙栨秷涓婃柟绮 continue;*/ if (map[y_hammer + next[i][1]][x_hammer + next[i][0]] != link && map[y_hammer + next[i][1]][x_hammer + next[i][0]] != ' ') @@ -852,7 +852,7 @@ void autochange() //系统 } } if (old_paste != paste) - { //显示粘贴信息 + { //鏄剧ず绮樿创淇℃伅 gotoxy(message_place[5][0], message_place[5][1]); printf("%2s", message[paste + 2]); gotoxy(x, y); @@ -867,7 +867,7 @@ void autochange() //系统 else printf("no drop");*/ } -void manchange() //人为输入更新 +void manchange() //浜轰负杈撳叆鏇存柊 { if (kbhit()) { @@ -886,7 +886,7 @@ void manchange() // can_jump = 1; } /*else if (turn == 'a' || turn == 'd' || turn == 'w' || turn == 's') - //为了优化操作取消wasd控制人物 + //涓轰簡浼樺寲鎿嶄綔鍙栨秷wasd鎺у埗浜虹墿 { if (paste == 0 && (map[y + next[check[turn]][1]][x + next[check[turn]][0]] == ' ' || map[y + next[check[turn]][1]][x + @@ -967,7 +967,7 @@ void manchange() // { if_back = 1; } - /*else if (turn == 'q' || turn == 'e') //遇到障碍物会卡住 + /*else if (turn == 'q' || turn == 'e') //閬囧埌闅滅鐗╀細鍗′綇 { if (turn == 'q') direct_hammer--; @@ -980,8 +980,8 @@ void manchange() // direct_people = check[direct_hammer]; show_move(); }*/ - //困难模式开启0.0 - else if (turn >= '1' && turn <= '9' && turn != '5') //不卡住 + //鍥伴毦妯″紡寮鍚0.0 + else if (turn >= '1' && turn <= '9' && turn != '5') //涓嶅崱浣 { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); gotoxy( @@ -989,7 +989,7 @@ void manchange() // message_place[direct_hammer_to_message_place[direct_hammer]] [1]); printf("%2s", message[0]); - direct_hammer = check[turn]; //数字键盘快捷改变方向 + direct_hammer = check[turn]; //鏁板瓧閿洏蹇嵎鏀瑰彉鏂瑰悜 direct_people = check[direct_hammer]; gotoxy( message_place[direct_hammer_to_message_place[direct_hammer]][0], @@ -1017,7 +1017,7 @@ void manchange() // } } } -//后面是相应的首页菜单功能 +//鍚庨潰鏄浉搴旂殑棣栭〉鑿滃崟鍔熻兘 void more() { char ch; @@ -1044,7 +1044,7 @@ void exit() if (map[i][j] >= '0' && map[i][j] <= '9') { gotoxy(j - 11, i); - printf("◆ %s ◆", menu_message_1[map[i][j] - '0']); + printf("鈼 %s 鈼", menu_message_1[map[i][j] - '0']); gotoxy(j + 1, i); } else if (i == 0 || i == 22 || i == 23 || i == 27 || j == 1 || @@ -1062,7 +1062,7 @@ void exit() printf("\n"); } int flag = - move(27, 25, 27, 42, 25, 25, 15, 0); // 2新游戏 3选关卡 4更多 5退出 + move(27, 25, 27, 42, 25, 25, 15, 0); // 2鏂版父鎴 3閫夊叧鍗 4鏇村 5閫鍑 switch (flag) { case 0: @@ -1086,13 +1086,13 @@ void setting() if (map[i][j] == '2' && G_flag == 0) { gotoxy(j - 10, i); - printf("◇%s", menu_message_1[map[i][j] - '0']); + printf("鈼%s", menu_message_1[map[i][j] - '0']); gotoxy(j + 1, i); } else if (map[i][j] >= '0' && map[i][j] <= '9') { gotoxy(j - 10, i); - printf("◆%s", menu_message_1[map[i][j] - '0']); + printf("鈼%s", menu_message_1[map[i][j] - '0']); gotoxy(j + 1, i); } else if (i == 0 || i == 22 || i == 23 || i == 27 || j == 1 || @@ -1110,7 +1110,7 @@ void setting() printf("\n"); } int flag = move(27, 24, 27, 50, 24, 25, 15, - 1); // 2新游戏 3选关卡 4更多 5退出//28 43 24-25 + 1); // 2鏂版父鎴 3閫夊叧鍗 4鏇村 5閫鍑//28 43 24-25 switch (flag) { case 2: @@ -1184,7 +1184,7 @@ void game_system() void select() { - int flag = move(52, 7, 52, 52, 7, 19, 0, 3); // 2新游戏 3选关卡 4更多 5退出 + int flag = move(52, 7, 52, 52, 7, 19, 0, 3); // 2鏂版父鎴 3閫夊叧鍗 4鏇村 5閫鍑 switch (flag) { case 2: @@ -1215,7 +1215,7 @@ int main() { show_menu(); int flag = move(52, 7, 52, 52, 7, 19, 0, - 3); // 2新游戏 3选关卡 4更多 5退出 + 3); // 2鏂版父鎴 3閫夊叧鍗 4鏇村 5閫鍑 switch (flag) { case 2: @@ -1248,17 +1248,17 @@ int main() } Sleep(10000); system("cls"); - printf("游戏结束"); + printf("娓告垙缁撴潫"); return 0; } -// bug区 +// bug鍖 -//设置如何储存继续(p退出后直接进去就是继续,新游戏就会初始化) ok -//需要解决wasd移动左下角不变化 ok删除wasd -//解决进入下一关随机的bug ok -//解决hammer在触发器上没反应的情况 autochange里面 ok +//璁剧疆濡備綍鍌ㄥ瓨缁х画锛坧閫鍑哄悗鐩存帴杩涘幓灏辨槸缁х画锛屾柊娓告垙灏变細鍒濆鍖栵級 ok +//闇瑕佽В鍐硍asd绉诲姩宸︿笅瑙掍笉鍙樺寲 ok鍒犻櫎wasd +//瑙e喅杩涘叆涓嬩竴鍏抽殢鏈虹殑bug ok +//瑙e喅hammer鍦ㄨЕ鍙戝櫒涓婃病鍙嶅簲鐨勬儏鍐 autochange閲岄潰 ok -//优化区 -//设置颜色 ok淡色 -//设置更丰富的关卡 ok -//设置初始教程 ok +//浼樺寲鍖 +//璁剧疆棰滆壊 ok娣¤壊 +//璁剧疆鏇翠赴瀵岀殑鍏冲崱 ok +//璁剧疆鍒濆鏁欑▼ ok diff --git "a/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10_ver_3.0/\350\207\252\350\241\214\345\244\215\345\210\266\347\274\226\350\257\221\345\215\263\345\217\257.txt" "b/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10_ver_3.0/\350\207\252\350\241\214\345\244\215\345\210\266\347\274\226\350\257\221\345\215\263\345\217\257.txt" index fbab870..67698a7 100644 --- "a/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10_ver_3.0/\350\207\252\350\241\214\345\244\215\345\210\266\347\274\226\350\257\221\345\215\263\345\217\257.txt" +++ "b/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10_ver_3.0/\350\207\252\350\241\214\345\244\215\345\210\266\347\274\226\350\257\221\345\215\263\345\217\257.txt" @@ -1,58 +1,58 @@ /*--------------------------------------------------------- -程序: 模拟笔记本电脑 (纯C语言,可直接编译器运行) -作者: 404name -说明: 1.这个程序本意在模拟电脑的基本功能,重在实现键盘的输入与键盘的控制,模拟开机,输密,打开软件,关闭电脑,所以其他功能暂没开发,不用太失望。 - 2.不同的编码会有不同的长度显示,但运行出来的效果都是一样的 - 3.代码规范不到位,见谅。 - 4.大一上写的,一般写小游戏练手,也琢磨到一些特殊的处理方法,所以对一些功能处理上有一些难理解的地方。 - 5.emmm,没啥了 - 6.感觉大一下太难了。qwq,在家学习效率太低。尽力学点新东西把。 -程序进度: 于2.10号停止更新(目前不再会加入新功能了,模板搭建完了,功能已经全部写完,再加入一些东西也没太大意义,还是去学学java去了) -程序结构: 程序因为加入了打砖块,部分函数顺序需要调换,影响体验。此处给出按顺序的走法。 - 这里其实总体上是有顺序的,但代码太多看起来就很乱。 - 解决方案:先定义函数再在主函数后面分类写。并没有采用,因为习惯性写前面,嘿嘿。。 +绋嬪簭锛 妯℃嫙绗旇鏈數鑴 锛堢函C璇█锛屽彲鐩存帴缂栬瘧鍣ㄨ繍琛岋級 +浣滆咃細 404name +璇存槑锛 1.杩欎釜绋嬪簭鏈剰鍦ㄦā鎷熺數鑴戠殑鍩烘湰鍔熻兘锛岄噸鍦ㄥ疄鐜伴敭鐩樼殑杈撳叆涓庨敭鐩樼殑鎺у埗锛屾ā鎷熷紑鏈猴紝杈撳瘑锛屾墦寮杞欢锛屽叧闂數鑴戯紝鎵浠ュ叾浠栧姛鑳芥殏娌″紑鍙戯紝涓嶇敤澶け鏈涖 + 2.涓嶅悓鐨勭紪鐮佷細鏈変笉鍚岀殑闀垮害鏄剧ず锛屼絾杩愯鍑烘潵鐨勬晥鏋滈兘鏄竴鏍风殑 + 3.浠g爜瑙勮寖涓嶅埌浣嶏紝瑙佽皡銆 + 4.澶т竴涓婂啓鐨勶紝涓鑸啓灏忔父鎴忕粌鎵嬶紝涔熺悽纾ㄥ埌涓浜涚壒娈婄殑澶勭悊鏂规硶锛屾墍浠ュ涓浜涘姛鑳藉鐞嗕笂鏈変竴浜涢毦鐞嗚В鐨勫湴鏂广 + 5.emmm锛屾病鍟ヤ簡 + 6.鎰熻澶т竴涓嬪お闅句簡銆俼wq锛屽湪瀹跺涔犳晥鐜囧お浣庛傚敖鍔涘鐐规柊涓滆タ鎶娿 +绋嬪簭杩涘害锛 浜2.10鍙峰仠姝㈡洿鏂帮紙鐩墠涓嶅啀浼氬姞鍏ユ柊鍔熻兘浜嗭紝妯℃澘鎼缓瀹屼簡锛屽姛鑳藉凡缁忓叏閮ㄥ啓瀹岋紝鍐嶅姞鍏ヤ竴浜涗笢瑗夸篃娌″お澶ф剰涔夛紝杩樻槸鍘诲瀛ava鍘讳簡锛 +绋嬪簭缁撴瀯锛 绋嬪簭鍥犱负鍔犲叆浜嗘墦鐮栧潡锛岄儴鍒嗗嚱鏁伴『搴忛渶瑕佽皟鎹紝褰卞搷浣撻獙銆傛澶勭粰鍑烘寜椤哄簭鐨勮蛋娉曘 + 杩欓噷鍏跺疄鎬讳綋涓婃槸鏈夐『搴忕殑锛屼絾浠g爜澶鐪嬭捣鏉ュ氨寰堜贡銆 + 瑙e喅鏂规锛氬厛瀹氫箟鍑芥暟鍐嶅湪涓诲嚱鏁板悗闈㈠垎绫诲啓銆傚苟娌℃湁閲囩敤锛屽洜涓轰範鎯у啓鍓嶉潰锛屽樋鍢裤傘 - |变量区:(数组+变量) - |子函数区: - ·系统自带函数:光标隐藏+gotoxy - ·汉诺塔执行相关函数 - ·主程序init函数 - ·主程序界面加载函数: - ·开机画面 - ·关机画面 - ·蓝屏画面 - ·更多信息画面 - ·电脑系统配置画面 - ·打砖块执行相关函数 - ·主程序功能函数: - ·处理返回的字符型按键函数 - ·处理返回的功能型按键函数 - |主函数: - ·主循环 -修复历史: - (2020) - 3.10修复字符显示乱码 - 3.15修复关机仍能输入密码 - 3.15加入光标隐藏(关闭前往init函数第一行) - 3.19加入可移动游戏简洁版,可前往main函数自己开关 - 4.07丰富细节,更加贴近xp系统。 - ·密码输入优化,输入的密码会在下一次输入变成不可视。 - ·优化打砖块对角碰撞算法,更加真实。 - ·新增“此电脑”可查看电脑配置. - ·新增关机画面。 - ·优化细节. -指路区: 1.自制地图插入 前往my_map[][]数组 大概300多行处修改; - 2.打砖块抛物线算法解析 前往autochange()函数 1000多行处 + |鍙橀噺鍖猴細锛堟暟缁+鍙橀噺锛 + |瀛愬嚱鏁板尯锛 + 路绯荤粺鑷甫鍑芥暟锛氬厜鏍囬殣钘+gotoxy + 路姹夎濉旀墽琛岀浉鍏冲嚱鏁 + 路涓荤▼搴廼nit鍑芥暟 + 路涓荤▼搴忕晫闈㈠姞杞藉嚱鏁帮細 + 路寮鏈虹敾闈 + 路鍏虫満鐢婚潰 + 路钃濆睆鐢婚潰 + 路鏇村淇℃伅鐢婚潰 + 路鐢佃剳绯荤粺閰嶇疆鐢婚潰 + 路鎵撶爾鍧楁墽琛岀浉鍏冲嚱鏁 + 路涓荤▼搴忓姛鑳藉嚱鏁帮細 + 路澶勭悊杩斿洖鐨勫瓧绗﹀瀷鎸夐敭鍑芥暟 + 路澶勭悊杩斿洖鐨勫姛鑳藉瀷鎸夐敭鍑芥暟 + |涓诲嚱鏁帮細 + 路涓诲惊鐜 +淇鍘嗗彶锛 + 锛2020锛 + 3.10淇瀛楃鏄剧ず涔辩爜 + 3.15淇鍏虫満浠嶈兘杈撳叆瀵嗙爜 + 3.15鍔犲叆鍏夋爣闅愯棌锛堝叧闂墠寰init鍑芥暟绗竴琛岋級 + 3.19鍔犲叆鍙Щ鍔ㄦ父鎴忕畝娲佺増锛屽彲鍓嶅線main鍑芥暟鑷繁寮鍏 + 4.07涓板瘜缁嗚妭锛屾洿鍔犺创杩憍p绯荤粺銆 + 路瀵嗙爜杈撳叆浼樺寲锛岃緭鍏ョ殑瀵嗙爜浼氬湪涓嬩竴娆¤緭鍏ュ彉鎴愪笉鍙銆 + 路浼樺寲鎵撶爾鍧楀瑙掔鎾炵畻娉曪紝鏇村姞鐪熷疄銆 + 路鏂板鈥滄鐢佃剳鈥濆彲鏌ョ湅鐢佃剳閰嶇疆. + 路鏂板鍏虫満鐢婚潰銆 + 路浼樺寲缁嗚妭. +鎸囪矾鍖猴細 1.鑷埗鍦板浘鎻掑叆 鍓嶅線my_map[][]鏁扮粍 澶ф300澶氳澶勪慨鏀癸紱 + 2.鎵撶爾鍧楁姏鐗╃嚎绠楁硶瑙f瀽 鍓嶅線autochange()鍑芥暟 1000澶氳澶 ---------------------------------------------------------*/ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include #include #include #include #define pi 3.14 -const double g = 10; //标准数越模糊,轨迹越连贯。 -char start[20][500] = { //图形界面 - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, +const double g = 10; //鏍囧噯鏁拌秺妯$硦锛岃建杩硅秺杩炶疮銆 +char start[20][500] = { //鍥惧舰鐣岄潰 + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ /"}, {" \\ /"}, {" \\ /"}, @@ -64,50 +64,50 @@ char start[20][500] = { //图 {" \\ \\/ \\/ | | | |_| |_| \\/\\/ __/ /"}, {" \\ /"}, {" \\ _____________________ /"}, - {" \\ │ │ /"}, - {" \\ └────────────────────┘ /"}, + {" \\ 鈹 鈹 /"}, + {" \\ 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ /"}, - {" \\ Copyright Θ Microsoft Corporation Microsoft /"}, + {" \\ Copyright 螛 Microsoft Corporation Microsoft /"}, {" \\ __________________________________________________________________________________________/"}}; char password[20][500] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ /"}, {" \\ ------------------------------------------------------------------------------------------------------------------ /"}, {" \\ /"}, {" \\ | /"}, {" \\ | /"}, - {" \\ | ┌───────────────────────────────────────────── /"}, - {" \\ /~/~/ | │┌─────┐ Administrator /"}, - {" \\ /~/~/ __XP | ││ [] │ 输入密码 /"}, - {" \\ \\ /\\ / - _ _| _ ~ ~ /_ | │└─────┘ 【| 】ck[→] /"}, - {" \\ \\/ \\/ | | | |_| |_| \\/\\/ __/ | └─────────────────────────────────────── /"}, + {" \\ | 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, + {" \\ /~/~/ | 鈹傗攲鈹鈹鈹鈹鈹鈹 Administrator /"}, + {" \\ /~/~/ __XP | 鈹傗攤 [] 鈹 杈撳叆瀵嗙爜 /"}, + {" \\ \\ /\\ / - _ _| _ ~ ~ /_ | 鈹傗敂鈹鈹鈹鈹鈹鈹 銆恷 銆慶k[鈫抅 /"}, + {" \\ \\/ \\/ | | | |_| |_| \\/\\/ __/ | 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ | /"}, - {" \\ 要开始,请单击您的用户名 | /"}, + {" \\ 瑕佸紑濮嬶紝璇峰崟鍑绘偍鐨勭敤鎴峰悕 | /"}, {" \\ | /"}, {" \\ /"}, {" \\ ---------------------------------------------------------------------------------------- /"}, {" \\ __________________________________________________________________________________________/"}}; char desktop[20][500] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" \\ ───── ───── ───── ┌────┐ ┌────┐ /"}, - {" \\ \\ \\ \\ \\ \\ \\ │ │ │ing │ /"}, - {" \\ ───── ───── ───── └────┘ └────┘ /"}, - {" \\ 汉诺塔 打砖块 我的电脑 相关 待开发 /"}, - {" \\ ───── /"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" \\ 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹屸攢鈹鈹鈹鈹 鈹屸攢鈹鈹鈹鈹 /"}, + {" \\ \\ \\ \\ \\ \\ \\ 鈹 鈹 鈹俰ng 鈹 /"}, + {" \\ 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹斺攢鈹鈹鈹鈹 鈹斺攢鈹鈹鈹鈹 /"}, + {" \\ 姹夎濉 鎵撶爾鍧 鎴戠殑鐢佃剳 鐩稿叧 寰呭紑鍙 /"}, + {" \\ 鈹鈹鈹鈹鈹 /"}, {" \\ \\ \\ /"}, - {" \\ ───── __ --------------- __ __ /"}, - {" \\ IE浏览器__-- --- __ -------_ -------_------____ /"}, + {" \\ 鈹鈹鈹鈹鈹 __ --------------- __ __ /"}, + {" \\ IE娴忚鍣╛_-- --- __ -------_ -------_------____ /"}, {" \\ ____ __--__ -- __ -------_ --- - __ --- __ --------------______ /"}, {" \\__ -------_--__ ------- __ ---------- __ ------ __ ------ __ --- __ ---------____ /"}, {" \\ -------_---__ ------- _---- __ -------_ ---_ -------_ -_ ----------_ -_---_ -_ ------_ -_ /"}, {" \\--__ -- __ ----- __ ------ __ -------_ --- ---- __ -------_ -_ ---------_ -_ ------_ -_ ------ /"}, {" \\ -_--__ ------- _---- __ -------_ ------- __ -------_ -- __ -------_ -_ --------__---_ -_ ------/"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | | 12:00 /"}, + {" \\ 寮濮 \\ qq2010 | | 12:00 /"}, {" \\ __________________________________________________________________________________________/"}}; char game_hnt[20][500] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" \\ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ /"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" \\ 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ /"}, {" \\ /"}, {" \\ /"}, @@ -119,48 +119,48 @@ char game_hnt[20][500] = { {" \\ /"}, {" \\ /"}, {" \\ /"}, - {" \\ └───────────────────────────────────────────────────────────────────────────────────────────┘ /"}, + {" \\ 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 汉诺塔自动演示小游戏 | | 12:08 /"}, + {" \\ 寮濮 \\ qq2010 | 姹夎濉旇嚜鍔ㄦ紨绀哄皬娓告垙 | | 12:08 /"}, {" \\ __________________________________________________________________________________________/"}}; char MyComputer[20][500] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" \\ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ /"}, - {" \\ \\系统属性| |?| X / /"}, - {" \\ \\= 常规 =|计算机名|硬件|高级|自动更新|远程| / /"}, - {" \\ \\ 系统: / /"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" \\ 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, + {" \\ \\绯荤粺灞炴 |锛焲 X / /"}, + {" \\ \\= 甯歌 =|璁$畻鏈哄悕|纭欢|楂樼骇|鑷姩鏇存柊|杩滅▼| / /"}, + {" \\ \\ 绯荤粺锛 / /"}, {" \\ \\ +------------+ Microsoft Windows XP/ /"}, {" \\ \\ | /~/~/ | Professional / /"}, - {" \\ \\ | /~/~/ | 版本 2.3.3.3 / /"}, + {" \\ \\ | /~/~/ | 鐗堟湰 2.3.3.3 / /"}, {" \\ \\ +------------+ / /"}, - {" \\ \\ ---- 绝伦 && 404name / /"}, - {" \\ \\ 制造商和技术支持商 : Pentium(R) Core CPU / /"}, - {" \\ \\ M i c r o s o f t 2.52GHz, 1.99GB内存 / /"}, - {" \\ \\ 技术支持信息(S) / /"}, - {" \\ └───────────────────────────────────────────────────────────────────────────────────────────┘ /"}, + {" \\ \\ ---- 缁濅鸡 && 404name / /"}, + {" \\ \\ 鍒堕犲晢鍜屾妧鏈敮鎸佸晢 : Pentium(R) Core CPU / /"}, + {" \\ \\ M i c r o s o f t 2.52GHz, 1.99GB鍐呭瓨 / /"}, + {" \\ \\ 鎶鏈敮鎸佷俊鎭(S) / /"}, + {" \\ 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 系统属性 | | 12:08 /"}, + {" \\ 寮濮 \\ qq2010 | 绯荤粺灞炴 | | 12:08 /"}, {" \\ __________________________________________________________________________________________/"}}; char thinking[30][500] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" \\ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ /"}, - {" \\ 这里是相关:(最后更新2020.2.11) /"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" \\ 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, + {" \\ 杩欓噷鏄浉鍏筹細锛堟渶鍚庢洿鏂2020.2.11锛 /"}, {" \\ /"}, - {" \\ 寒假太颓废了,没劲学习,游戏玩腻,然后开始发呆。安静下来时才有灵感 ,看着笔记本,就想着我也编一个电脑系统吧 /"}, + {" \\ 瀵掑亣澶搴熶簡锛屾病鍔插涔狅紝娓告垙鐜╄吇锛岀劧鍚庡紑濮嬪彂鍛嗐傚畨闈欎笅鏉ユ椂鎵嶆湁鐏垫劅 锛岀湅鐫绗旇鏈紝灏辨兂鐫鎴戜篃缂栦竴涓數鑴戠郴缁熷惂 /"}, {" \\ /"}, - {" \\ 就想把大一上学到的一些东西总着来练练手。。然后发现写电脑系统就是痴人说梦了,我还是写个模拟计算机吧。 /"}, + {" \\ 灏辨兂鎶婂ぇ涓涓婂鍒扮殑涓浜涗笢瑗挎荤潃鏉ョ粌缁冩墜銆傘傜劧鍚庡彂鐜板啓鐢佃剳绯荤粺灏辨槸鐥翠汉璇存ⅵ浜嗭紝鎴戣繕鏄啓涓ā鎷熻绠楁満鍚с /"}, {" \\ /"}, - {" \\ 对着自己笔记本的键盘一个一个的还原,然后思考如何体现屏幕,如何移动键盘,如何读取键盘把信息传给我的 /"}, + {" \\ 瀵圭潃鑷繁绗旇鏈殑閿洏涓涓竴涓殑杩樺師锛岀劧鍚庢濊冨浣曚綋鐜板睆骞曪紝濡備綍绉诲姩閿洏锛屽浣曡鍙栭敭鐩樻妸淇℃伅浼犵粰鎴戠殑 /"}, {" \\ /"}, - {" \\ 虚拟电脑,如何模拟开机实现基本功能 ,一口气写完真心爽,最后想做互动游戏的,但这斜着的屏幕,emmm /"}, + {" \\ 铏氭嫙鐢佃剳锛屽浣曟ā鎷熷紑鏈哄疄鐜板熀鏈姛鑳 锛屼竴鍙f皵鍐欏畬鐪熷績鐖斤紝鏈鍚庢兂鍋氫簰鍔ㄦ父鎴忕殑锛屼絾杩欐枩鐫鐨勫睆骞曪紝emmm /"}, {" \\ /"}, - {" \\ 所以最后电脑只能运行汉诺塔,其他功能实现也简单,但还是把时间放在我突然又燃起的学习小火苗上吧/"}, - {" \\ └───────────────────────────────────────────────────────────────────────────────────────────┘ /"}, + {" \\ 鎵浠ユ渶鍚庣數鑴戝彧鑳借繍琛屾眽璇哄锛屽叾浠栧姛鑳藉疄鐜颁篃绠鍗曪紝浣嗚繕鏄妸鏃堕棿鏀惧湪鎴戠獊鐒跺張鐕冭捣鐨勫涔犲皬鐏嫍涓婂惂/"}, + {" \\ 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 感想.txt | | 12:15 /"}, + {" \\ 寮濮 \\ qq2010 | 鎰熸兂.txt | | 12:15 /"}, {" \\ __________________________________________________________________________________________/"}}; char ending[30][500] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ An unknown error has occurred with Internet explorer due to low computer configuration /"}, {" \\ /"}, {" \\ If this is the first time you've seen this error on screen. /"}, @@ -174,11 +174,11 @@ char ending[30][500] = { {" \\ Once installed, your old computer might be able to run Internet explorer. That's cool. /"}, {" \\ /"}, {" \\ Technical information: /"}, - {" \\ ****** STOP 0x0000008E (0xc0000005,0xBF856CA8,0xB0F07A40,0x00000000) /"}, + {" \\ ****** STOP 0x0000008E 锛0xc0000005锛0xBF856CA8锛0xB0F07A40锛0x00000000锛 /"}, {" \\ ****** win32k.sys - Address BF853CA8 base at BF800000, DateStamp 5900ef5f /"}, {" \\ __________________________________________________________________________________________/"}}; char map[1000][1000] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ /"}, {" \\ /"}, {" \\ /"}, @@ -195,32 +195,32 @@ char map[1000][1000] = { {" \\ /"}, {" \\ /"}, {" \\ __________________________________________________________________________________________/"}, - {" ┌──────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" │ ──── │"}, - {" │──────────────────────────────────────────────────────────────────────────────────────────│"}, - {" │┌─────┐ ┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┐ │"}, - {" ││ Esc │ │ F1│ F2│ F3│ F4││ F5│ F6│ F7│ F8││ F9│F10│F11│F12││Prt│Scr│Pau│ ┌┐ ┌┐ ┌┐ ┌┐ │"}, - {" │└─────┘ └───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┘ └┘ └┘ └┘ └┘ │"}, - {" │┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐┌───┬───┬───┐┌───┬───┬───┬───┐│"}, - {" ││ `~ │ 1!│ 2@│ 3#│ 4$│ 5%│ 6^│ 7&│ 8*│ 9(│ 0)│ -─│ =+│ ←--││Ins│Hom│Pgu││Num│ / │ * │ - ││"}, - {" │├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤├───┼───┼───┤├───┼───┼───┼───┤│"}, - {" ││ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [{│ ]}│ \\| ││Del│End│Pgd││ 7 │ 8 │ 9 │ ││"}, - {" │├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴────┤└───┴───┴───┘├───┼───┼───┤ + ││"}, - {" ││ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ;:│ \'\"│ Enter │ │ 4 │ 5 │ 6 │ ││"}, - {" │├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───────┤ ┌───┐ ├───┼───┼───┼───┤│"}, - {" ││ Shift │ Z │ X │ C │ V │ B │ N │ M │ ,<│ .>│ /?│ Shift │ │ ↑│ │ 1 │ 2 │ 3 │ │││"}, - {" │├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───╪───┬──────┤┌───┼───┼───┐├───┴───┼───┤ │││"}, - {" ││ Ctr│ win│ Alt│ ──── │ Alt│ Fn│ Ctrl ││← │ ↓│ →││ 0ins │.de│←┘││"}, - {" │└────┴────┴────┴───────────────────────────┴────┴───┴──────┘└───┴───┴───┘└───────┴───┴───┘│"}, - {" │ ┌───────────────────────────────┐ │"}, - {" │ │ │ │"}, - {" │ │ │ │"}, - {" │ │───────────────┬───────────────│ │"}, - {" │ └───────────────┴───────────────┘ │"}, - {" └──────────────────────────────────────────────────────────────────────────────────────────┘"}}; -//功能数组 + {" 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" 鈹 鈹鈹鈹鈹 鈹"}, + {" 鈹傗攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" 鈹傗攲鈹鈹鈹鈹鈹鈹 鈹屸攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹 鈹"}, + {" 鈹傗攤 Esc 鈹 鈹 F1鈹 F2鈹 F3鈹 F4鈹傗攤 F5鈹 F6鈹 F7鈹 F8鈹傗攤 F9鈹侳10鈹侳11鈹侳12鈹傗攤Prt鈹係cr鈹侾au鈹 鈹屸攼 鈹屸攼 鈹屸攼 鈹屸攼 鈹"}, + {" 鈹傗敂鈹鈹鈹鈹鈹鈹 鈹斺攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹 鈹斺敇 鈹斺敇 鈹斺敇 鈹斺敇 鈹"}, + {" 鈹傗攲鈹鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攤"}, + {" 鈹傗攤 `~ 鈹 1!鈹 2@鈹 3#鈹 4$鈹 5%鈹 6^鈹 7&鈹 8*鈹 9(鈹 0)鈹 -鈹鈹 =+鈹 鈫--鈹傗攤Ins鈹侶om鈹侾gu鈹傗攤Num鈹 / 鈹 * 鈹 - 鈹傗攤"}, + {" 鈹傗敎鈹鈹鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹鈹鈹も敎鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹も敎鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹も攤"}, + {" 鈹傗攤 Tab 鈹 Q 鈹 W 鈹 E 鈹 R 鈹 T 鈹 Y 鈹 U 鈹 I 鈹 O 鈹 P 鈹 [{鈹 ]}鈹 \\| 鈹傗攤Del鈹侲nd鈹侾gd鈹傗攤 7 鈹 8 鈹 9 鈹 鈹傗攤"}, + {" 鈹傗敎鈹鈹鈹鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹攢鈹鈹鈹鈹も敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敎鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹 + 鈹傗攤"}, + {" 鈹傗攤 Caps 鈹 A 鈹 S 鈹 D 鈹 F 鈹 G 鈹 H 鈹 J 鈹 K 鈹 L 鈹 ;:鈹 \'\"鈹 Enter 鈹 鈹 4 鈹 5 鈹 6 鈹 鈹傗攤"}, + {" 鈹傗敎鈹鈹鈹鈹鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹鈹 鈹屸攢鈹鈹鈹 鈹溾攢鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹も攤"}, + {" 鈹傗攤 Shift 鈹 Z 鈹 X 鈹 C 鈹 V 鈹 B 鈹 N 鈹 M 鈹 ,<鈹 .>鈹 /?鈹 Shift 鈹 鈹 鈫戔攤 鈹 1 鈹 2 鈹 3 鈹 鈹傗攤鈹"}, + {" 鈹傗敎鈹鈹鈹鈹鈹攢鈹鈹粹攢鈹攢鈹粹攢鈹鈹敶鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹敶鈹鈹鈹鈺攢鈹鈹鈹攢鈹鈹鈹鈹鈹鈹も攲鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹愨敎鈹鈹鈹鈹粹攢鈹鈹鈹尖攢鈹鈹鈹 鈹傗攤鈹"}, + {" 鈹傗攤 Ctr鈹 win鈹 Alt鈹 鈹鈹鈹鈹 鈹 Alt鈹 Fn鈹 Ctrl 鈹傗攤鈫 鈹 鈫撯攤 鈫掆攤鈹 0ins 鈹.de鈹傗啇鈹樷攤鈹"}, + {" 鈹傗敂鈹鈹鈹鈹鈹粹攢鈹鈹鈹鈹粹攢鈹鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹粹攢鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷攤"}, + {" 鈹 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 鈹"}, + {" 鈹 鈹 鈹 鈹"}, + {" 鈹 鈹 鈹 鈹"}, + {" 鈹 鈹傗攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 鈹"}, + {" 鈹 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 鈹"}, + {" 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}}; +//鍔熻兘鏁扮粍 int keyboard[20][30] = { - //把键盘看成一个地图让move函数在上面移动返回的数值对应下面的 board_place[120][5]是对应按键的全部信息 + //鎶婇敭鐩樼湅鎴愪竴涓湴鍥捐move鍑芥暟鍦ㄤ笂闈㈢Щ鍔ㄨ繑鍥炵殑鏁板煎搴斾笅闈㈢殑 board_place[120][5]鏄搴旀寜閿殑鍏ㄩ儴淇℃伅 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 104, 104, 104, 104}, {0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37}, @@ -229,14 +229,14 @@ int keyboard[20][30] = { {0, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 86, 86, 0, 87, 0, 88, 89, 90, 91}, {0, 92, 93, 94, 95, 95, 95, 95, 95, 95, 95, 96, 97, 98, 98, 99, 100, 101, 102, 102, 103, 91}, }; -int next[9][2] = {{0}, {0}, {0}, {0}, {0}, {-1, 0}, {0, -1}, {1, 0}, {0, 1}}; //给键盘传给虚拟键盘的键盘控制虚拟电脑用 -int computer_map[3][8] = {{0, 0, 0, 0, 0}, {0, 1, 2, 3, 4}, {0, 5, 0, 0, 0}}; //对应的移动操作记录 +int next[9][2] = {{0}, {0}, {0}, {0}, {0}, {-1, 0}, {0, -1}, {1, 0}, {0, 1}}; //缁欓敭鐩樹紶缁欒櫄鎷熼敭鐩樼殑閿洏鎺у埗铏氭嫙鐢佃剳鐢 +int computer_map[3][8] = {{0, 0, 0, 0, 0}, {0, 1, 2, 3, 4}, {0, 5, 0, 0, 0}}; //瀵瑰簲鐨勭Щ鍔ㄦ搷浣滆褰 int computer_map_place[6][2] = {{0}, {2, 9}, {2, 19}, {2, 29}, {2, 40}, {6, 12}}; int cx, cy, tcx, tcy, lcx, lcy; -int board_place[120][5] = { //这是按键的信息 下标依次对应 -返回值 -按下shift下的返回值2 -键盘字符长度 -字符坐标x -y - {0, 0, 0, 0, 0}, //第一项如果是字符那么那就是返回字符 如果是数字1-9那么就是功能按键功能对应如下 +int board_place[120][5] = { //杩欐槸鎸夐敭鐨勪俊鎭 涓嬫爣渚濇瀵瑰簲 -杩斿洖鍊 -鎸変笅shift涓嬬殑杩斿洖鍊2 -閿洏瀛楃闀垮害 -瀛楃鍧愭爣x -y + {0, 0, 0, 0, 0}, //绗竴椤瑰鏋滄槸瀛楃閭d箞閭e氨鏄繑鍥炲瓧绗 濡傛灉鏄暟瀛1-9閭d箞灏辨槸鍔熻兘鎸夐敭鍔熻兘瀵瑰簲濡備笅 {1, 1, 3, 21, 19}, //1-10 - {0, 0, 2, 21, 28}, //1 ~ 返回 2 ~删除 3确认 4shift 5上 6左 7下 8又 9开机 + {0, 0, 2, 21, 28}, //1 ~ 杩斿洖 2 ~鍒犻櫎 3纭 4shift 5涓 6宸 7涓 8鍙 9寮鏈 {0, 0, 2, 21, 32}, {0, 0, 2, 21, 36}, {0, 0, 2, 21, 40}, @@ -340,25 +340,25 @@ int board_place[120][5] = { // {'.', '.', 4, 32, 99}, {9, 9, 4, 18, 99}}; -// 程序功能变量 -int flag, function, if_shift, if_start, if_input_password, if_into_desktop, if_game, qpz; //0表示输入无效,1表示是输入电脑键 2表示是功能键 +// 绋嬪簭鍔熻兘鍙橀噺 +int flag, function, if_shift, if_start, if_input_password, if_into_desktop, if_game, qpz; //0琛ㄧず杈撳叆鏃犳晥锛1琛ㄧず鏄緭鍏ョ數鑴戦敭 2琛ㄧず鏄姛鑳介敭 char letter; int x, y, tx, ty, num, lx, ly; char temp[6] = {"====="}; char put_in_computer[20]; -char password_0[20] = {"WHJY"}; // 密码 +char password_0[20] = {"WHJY"}; // 瀵嗙爜 int put_in_num, if_input, input_x, input_y, input_max; -// 汉诺塔游戏变量 +// 姹夎濉旀父鎴忓彉閲 int mid_x, mid_y; int len, width, left, mid, right, time; int ttx, tty; char game_map[80][1000]; -int game_next[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //上0下1左2右3; +int game_next[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //涓0涓1宸2鍙3锛 -int turn[2][3] = {{0, 3, 1}, //a -> b b -> c a -> c 上右下 - {0, 2, 1}}; //b -> a c -> b c -> a 上左下 //实现自动移动的路线储存 +int turn[2][3] = {{0, 3, 1}, //a -> b b -> c a -> c 涓婂彸涓 + {0, 2, 1}}; //b -> a c -> b c -> a 涓婂乏涓 //瀹炵幇鑷姩绉诲姩鐨勮矾绾垮偍瀛 -//打砖块游戏变量 +//鎵撶爾鍧楁父鎴忓彉閲 char map2[1000][1000]; char End[20][50] = { {" ## ## ## "}, @@ -375,11 +375,11 @@ char End[20][50] = { {"###### ####### ### ## ### "}, {"### ####### ## ## ## "}, {" ## ## ## "}, - {" 按 任 意 键 继 续 "}, + {" 鎸 浠 鎰 閿 缁 缁 "}, }; //----------------------------------------------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------------------------------- -//此处是人工地图接口(开启请前往main函数里面设置下面0为1并且自己改变图案) +//姝ゅ鏄汉宸ュ湴鍥炬帴鍙o紙寮鍚鍓嶅線main鍑芥暟閲岄潰璁剧疆涓嬮潰0涓1骞朵笖鑷繁鏀瑰彉鍥炬锛 int if_my_map; char my_map[50][500] = {{"#############################################################################################################################"}, {"## life: | | | ##"}, @@ -398,36 +398,36 @@ char my_map[50][500] = {{"###################################################### {"############### ###############"}, {"################ ########### ################"}, {"#############################################################################################################################"}}; -//修改规则: -//显然电脑屏幕外是不能动的只能修改里面梯形 -// 墙~# 砖块~0 空气~' ' -//小球在倒数第七行 23~27列之间随机生成,不能占位 -//左下角是木板生成地,左上是生命 不可改(要改需调参数) +//淇敼瑙勫垯锛 +//鏄剧劧鐢佃剳灞忓箷澶栨槸涓嶈兘鍔ㄧ殑鍙兘淇敼閲岄潰姊舰 +// 澧檦# 鐮栧潡~0 绌烘皵~' ' +//灏忕悆鍦ㄥ掓暟绗竷琛 23~27鍒椾箣闂撮殢鏈虹敓鎴愶紝涓嶈兘鍗犱綅 +//宸︿笅瑙掓槸鏈ㄦ澘鐢熸垚鍦帮紝宸︿笂鏄敓鍛 涓嶅彲鏀癸紙瑕佹敼闇璋冨弬鏁帮級 //----------------------------------------------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------------------------------- -//全局变量区,在init里面改变 +//鍏ㄥ眬鍙橀噺鍖猴紝鍦╥nit閲岄潰鏀瑰彉 char wall, food, air, brick; int width2, length2; -double X2, Y2, x2, y2, Vx, Vy, t2, V; //默认向下向右为正 +double X2, Y2, x2, y2, Vx, Vy, t2, V; //榛樿鍚戜笅鍚戝彸涓烘 int old_x2, old_y2, head2, tail2, max2, step2, if_miss, food_num, goal, color, add_x, add_y, cnt; -int if_load_snake_mod, debug, life; //debug模式调成1手动开启 -int temp_x2, temp_y2, menu_x, menu_y, left2, right2; //临时坐标 -double C[8] = {0, 10, 30, 55, 90}; //初始斜抛的角度,自右向上转角(目前已调整好最好的角度) +int if_load_snake_mod, debug, life; //debug妯″紡璋冩垚1鎵嬪姩寮鍚 +int temp_x2, temp_y2, menu_x, menu_y, left2, right2; //涓存椂鍧愭爣 +double C[8] = {0, 10, 30, 55, 90}; //鍒濆鏂滄姏鐨勮搴︼紝鑷彸鍚戜笂杞(鐩墠宸茶皟鏁村ソ鏈濂界殑瑙掑害) -struct Step //轨迹 +struct Step //杞ㄨ抗 { int x2; int y2; } s[1000]; -void HideCursor() //光标隐藏 +void HideCursor() //鍏夋爣闅愯棌 { - CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见 + CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -436,7 +436,7 @@ void gotoxy(int x, int y) // SetConsoleCursorPosition(handle, pos); } void init_game(int n) -{ //初始化汉诺塔 +{ //鍒濆鍖栨眽璇哄 int i, j; mid_x = 7, mid_y = 60; ttx = 10, tty = 10; @@ -458,12 +458,12 @@ void init_game(int n) if (num && (i >= 1 && i <= width - 1) && j % 2 != 0 && j < mid) { game_map[i][j] = -95; - game_map[i][j + 1] = -10; //打印 ■ ■占2个字节可以拆开来 + game_map[i][j + 1] = -10; //鎵撳嵃 鈻 鈻犲崰2涓瓧鑺傚彲浠ユ媶寮鏉 num--; } } } - //容易出现东西卡顿 + //瀹规槗鍑虹幇涓滆タ鍗¢】 for (i = 0; i <= width; i++) { gotoxy(tty, ttx + i); @@ -474,14 +474,14 @@ void init_game(int n) } void play(int x, int y) -{ //显示汉诺塔移动轨迹 +{ //鏄剧ず姹夎濉旂Щ鍔ㄨ建杩 int turn_0, n = 0, i, j, k, tx, ty, flag = 0; if ((x == mid && y == right) || (x == left && y == mid) || (x == left && y == right)) - turn_0 = 0; //往右 + turn_0 = 0; //寰鍙 else if ((x == mid && y == left) || (x == right && y == left) || (x == right && y == mid)) - turn_0 = 1; //往左 + turn_0 = 1; //寰宸 for (i = 1, j = y; i <= width; i++) - { //目的地 + { //鐩殑鍦 if (game_map[i][j] != 0) { tx = i - 1; @@ -490,7 +490,7 @@ void play(int x, int y) } } for (i = 1, j = x; i <= width; i++) - { //出发点 + { //鍑哄彂鐐 if (game_map[i][j] != 0) { break; @@ -527,7 +527,7 @@ void play(int x, int y) printf("%c", game_map[i][j + k]); } } - n++; //改变方向; + n++; //鏀瑰彉鏂瑰悜; if (i == tx && j == ty) return; if (turn_0 == 0) @@ -558,7 +558,7 @@ void play(int x, int y) } void move_hnt(int a, int b, int c, char aa, char bb, char cc, int n) -{ //正常的汉诺塔递归程序 +{ //姝e父鐨勬眽璇哄閫掑綊绋嬪簭 if (n == 1) { //printf("from %c to %c",aa,cc); @@ -573,9 +573,9 @@ void move_hnt(int a, int b, int c, char aa, char bb, char cc, int n) } void init() { - int i, j, k; //初始化整个程序 + int i, j, k; //鍒濆鍖栨暣涓▼搴 char ch; - HideCursor(); //决定是否开启光标隐藏 + HideCursor(); //鍐冲畾鏄惁寮鍚厜鏍囬殣钘 cx = 1, cy = 1; lcx = cx, lcy = cy; mid_x = 7, mid_y = 60; @@ -583,34 +583,34 @@ void init() flag = 0, function, if_shift = 0, if_start = 0, if_input_password = 0, if_into_desktop = 0, if_game = 0; put_in_num = 0, if_input = 0; system("mode con cols=125 lines=60"); - printf("【程序信息】:\n"); - printf(" 程序名称:模拟笔记本电脑\n"); - printf(" 程序作者:404name\n"); - printf(" 完成时间:2020.2.01\n"); - printf(" 最后更新:2020.4.07\n"); - printf(" 项目地址:https://github.com/404name/winter (有问题可以去联系我)\n\n"); - printf("【更新记录】(2020)\n"); - printf(" 3.10 修复bug:不同平台显示乱码\n"); - printf(" 3.15 修复bug:关机仍能输入密码\n"); - printf(" 3.15 优化体验:加入光标隐藏(关闭前往init函数第一行)\n"); - printf(" 3.19 完善功能:加入可移动游戏简洁版,可自制地图,方法前往源程序my_map数组处查看\n"); - printf(" 4.07 完善功能:(桌面软件全部更新,功能完善,更加贴近xp系统。)\n"); - printf(" ·密码输入优化,输入的密码会在下一次输入变成不可视。\n"); - printf(" ·优化打砖块对角碰撞算法,更加真实。\n"); - printf(" ·新增“此电脑”可查看电脑配置.\n"); - printf(" ·新增关机画面。\n"); - printf(" ·加入蓝屏,更加快乐(点击浏览器触发)\n"); - printf(" ·优化更多细节.\n\n"); - printf("【程序补充】\n"); - printf(" ·这里差不多把坑填完了,之前反应的要有能操控的游戏,输入密码可见不真实,关机画面没模拟等等\n"); - printf(" ·都弄完了,至于网上冲浪,打lol,写编译器就有生之年吧。对了,因此我还特意加入了蓝屏(滑稽)。\n\n"); - printf("【程序说明】\n"); - printf(" ·有问题,有bug,不兼容,欢迎去git反馈交流\n"); - printf(" ·操作方法:↑ ↓ ← → 空格 控制光标即可。\n"); - printf(" ·进入程序电源键处按一次空格||输入密码WHJY即可登录||请在虚拟键盘上开启大写再输入||\n"); - printf(" ·欢迎使用XP模拟笔记本电脑!\n"); - printf(" 1.按两下回车进入(未能解决bug:移动时周围可能会有蓝色的闪频)\n"); - printf(" 2.按1再按回车进入 (开启清除闪频,但光标背景变成透明,不好鉴别)\n"); + printf("銆愮▼搴忎俊鎭戯細\n"); + printf(" 绋嬪簭鍚嶇О锛氭ā鎷熺瑪璁版湰鐢佃剳\n"); + printf(" 绋嬪簭浣滆咃細404name\n"); + printf(" 瀹屾垚鏃堕棿锛2020.2.01\n"); + printf(" 鏈鍚庢洿鏂帮細2020.4.07\n"); + printf(" 椤圭洰鍦板潃锛歨ttps://github.com/404name/winter 锛堟湁闂鍙互鍘昏仈绯绘垜锛塡n\n"); + printf("銆愭洿鏂拌褰曘戯紙2020锛塡n"); + printf(" 3.10 淇bug锛氫笉鍚屽钩鍙版樉绀轰贡鐮乗n"); + printf(" 3.15 淇bug锛氬叧鏈轰粛鑳借緭鍏ュ瘑鐮乗n"); + printf(" 3.15 浼樺寲浣撻獙锛氬姞鍏ュ厜鏍囬殣钘忥紙鍏抽棴鍓嶅線init鍑芥暟绗竴琛岋級\n"); + printf(" 3.19 瀹屽杽鍔熻兘锛氬姞鍏ュ彲绉诲姩娓告垙绠娲佺増锛屽彲鑷埗鍦板浘锛屾柟娉曞墠寰婧愮▼搴弇y_map鏁扮粍澶勬煡鐪媆n"); + printf(" 4.07 瀹屽杽鍔熻兘锛氾紙妗岄潰杞欢鍏ㄩ儴鏇存柊锛屽姛鑳藉畬鍠勶紝鏇村姞璐磋繎xp绯荤粺銆傦級\n"); + printf(" 路瀵嗙爜杈撳叆浼樺寲锛岃緭鍏ョ殑瀵嗙爜浼氬湪涓嬩竴娆¤緭鍏ュ彉鎴愪笉鍙銆俓n"); + printf(" 路浼樺寲鎵撶爾鍧楀瑙掔鎾炵畻娉曪紝鏇村姞鐪熷疄銆俓n"); + printf(" 路鏂板鈥滄鐢佃剳鈥濆彲鏌ョ湅鐢佃剳閰嶇疆.\n"); + printf(" 路鏂板鍏虫満鐢婚潰銆俓n"); + printf(" 路鍔犲叆钃濆睆锛屾洿鍔犲揩涔愶紙鐐瑰嚮娴忚鍣ㄨЕ鍙戯級\n"); + printf(" 路浼樺寲鏇村缁嗚妭.\n\n"); + printf("銆愮▼搴忚ˉ鍏呫慭n"); + printf(" 路杩欓噷宸笉澶氭妸鍧戝~瀹屼簡锛屼箣鍓嶅弽搴旂殑瑕佹湁鑳芥搷鎺х殑娓告垙锛岃緭鍏ュ瘑鐮佸彲瑙佷笉鐪熷疄锛屽叧鏈虹敾闈㈡病妯℃嫙绛夌瓑\n"); + printf(" 路閮藉紕瀹屼簡锛岃嚦浜庣綉涓婂啿娴紝鎵搇ol锛屽啓缂栬瘧鍣ㄥ氨鏈夌敓涔嬪勾鍚с傚浜嗭紝鍥犳鎴戣繕鐗规剰鍔犲叆浜嗚摑灞忥紙婊戠ń锛夈俓n\n"); + printf("銆愮▼搴忚鏄庛慭n"); + printf(" 路鏈夐棶棰橈紝鏈塨ug锛屼笉鍏煎锛屾杩庡幓git鍙嶉浜ゆ祦\n"); + printf(" 路鎿嶄綔鏂规硶锛氣啈 鈫 鈫 鈫 绌烘牸 鎺у埗鍏夋爣鍗冲彲銆俓n"); + printf(" 路杩涘叆绋嬪簭鐢垫簮閿鎸変竴娆$┖鏍紎|杈撳叆瀵嗙爜WHJY鍗冲彲鐧诲綍||璇峰湪铏氭嫙閿洏涓婂紑鍚ぇ鍐欏啀杈撳叆||\n"); + printf(" 路娆㈣繋浣跨敤XP妯℃嫙绗旇鏈數鑴戯紒\n"); + printf(" 1.鎸変袱涓嬪洖杞﹁繘鍏ワ紙鏈兘瑙e喅bug:绉诲姩鏃跺懆鍥村彲鑳戒細鏈夎摑鑹茬殑闂锛塡n"); + printf(" 2.鎸1鍐嶆寜鍥炶溅杩涘叆 锛堝紑鍚竻闄ら棯棰戯紝浣嗗厜鏍囪儗鏅彉鎴愰忔槑锛屼笉濂介壌鍒級\n"); ch = getchar(); getchar(); if (ch == '1') @@ -636,7 +636,7 @@ void init() } void init_start() -{ // 开机 + 动态加载页面 + 打开输入密码权限 +{ // 寮鏈 + 鍔ㄦ佸姞杞介〉闈 + 鎵撳紑杈撳叆瀵嗙爜鏉冮檺 int i, l, j; gotoxy(0, 0); for (i = 0; i <= 16; i++) @@ -646,7 +646,7 @@ void init_start() } for (l = 0; l < 3; l++) - { //动态加载 + { //鍔ㄦ佸姞杞 for (i = 53; i <= 71; i = i + 2) { for (j = i - 4; j <= i; j = j + 2) @@ -674,13 +674,13 @@ void init_start() printf("%s\n", password[i]); Sleep(10); } - if_input = 1; // 9 77 18个 + if_input = 1; // 9 77 18涓 input_x = 9; input_y = 77; input_max = 18; } void load_desktop() -{ //加载桌面 +{ //鍔犺浇妗岄潰 int i; cx = 1, cy = 1; if_into_desktop = 1; @@ -694,12 +694,12 @@ void load_desktop() } } void end() -{ //加载关机 +{ //鍔犺浇鍏虫満 int i; system("color 70"); - //Windows 正在关机... - char temp1[30] = {"│ 正在注销.... │"}; - char temp2[30] = {"│ Windows 正在关机...│"}; + //Windows 姝e湪鍏虫満... + char temp1[30] = {"鈹 姝e湪娉ㄩ攢.... 鈹"}; + char temp2[30] = {"鈹 Windows 姝e湪鍏虫満...鈹"}; gotoxy(0, 0); if_input = 0; gotoxy(0, 0); @@ -721,14 +721,14 @@ void end() Sleep(10); } } -void blue_screen() //蓝屏 +void blue_screen() //钃濆睆 { int i, j, l = 2, r = 122, hei = 16, len = 124; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); gotoxy(0, 0); if_into_desktop = 0; for (i = 1; i <= hei; i++) - { //打印地图 + { //鎵撳嵃鍦板浘 for (j = 0; j <= len; j++) { if (j >= l && j <= r) @@ -770,7 +770,7 @@ void my_computer() } void load_more() -{ //更多信息 +{ //鏇村淇℃伅 int i; gotoxy(0, 0); @@ -782,7 +782,7 @@ void load_more() } } void load_game() -{ //加载汉诺塔程序 +{ //鍔犺浇姹夎濉旂▼搴 int i; if_into_desktop = 0; gotoxy(0, 0); @@ -794,14 +794,14 @@ void load_game() } if_game = 1; gotoxy(mid_y - 16, mid_x); - printf("请输入你要递归的汉诺塔数目_"); + printf("璇疯緭鍏ヤ綘瑕侀掑綊鐨勬眽璇哄鏁扮洰_"); input_x = mid_x; input_y = mid_y - 16 + 27; input_max = 1; if_input = 1; } int move() -{ //控制虚拟键盘的指针移动函数 +{ //鎺у埗铏氭嫙閿洏鐨勬寚閽堢Щ鍔ㄥ嚱鏁 int i, k, flag = 1; char ch, ch1, ch2; while (ch != ' ') @@ -813,7 +813,7 @@ int move() continue; lx = x, ly = y; if (ch == -32) - { //同时启用wasd 和上下左右键 //如果读取到第一个是-32那么 继续读取一个字符 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 //濡傛灉璇诲彇鍒扮涓涓槸-32閭d箞 缁х画璇诲彇涓涓瓧绗 ch1 = getch(); switch (ch1) { @@ -900,7 +900,7 @@ int move() } } -//----------------------------------------------------------------------------打砖块/----------------------------------------------------------------------------- +//----------------------------------------------------------------------------鎵撶爾鍧/----------------------------------------------------------------------------- void init_brick() { int l, r, i, j, a, b; @@ -910,8 +910,8 @@ void init_brick() width2 = 16, length2 = 124; wall = '#', food = '*', air = ' ', brick = 'O'; head2 = 0, tail2 = 0, max2 = 20, step2 = 0, if_miss = 0, food_num = 400, goal = 0, color = 0; - debug = 0, life = 3; //debug模式调成1手动开启 - temp_x2 = 2, temp_y2 = 2, menu_x = 18, menu_y = 68, left2 = 25, right2 = 35; //临时坐标 + debug = 0, life = 3; //debug妯″紡璋冩垚1鎵嬪姩寮鍚 + temp_x2 = 2, temp_y2 = 2, menu_x = 18, menu_y = 68, left2 = 25, right2 = 35; //涓存椂鍧愭爣 gotoxy(0, 0); memset(s, 0, sizeof(s)); r = length2; @@ -919,7 +919,7 @@ void init_brick() if (if_my_map == 0) { for (i = 0; i <= width2; i++) - { //生成地图模板 + { //鐢熸垚鍦板浘妯℃澘 for (j = 0; j <= length2; j++) { if (i == 0 || i == width2) @@ -940,7 +940,7 @@ void init_brick() { food_num = 400; while (food_num--) - { //贪吃蛇生成食物 + { //璐悆铔囩敓鎴愰鐗 a = rand() % width2; b = rand() % length2; if ((a >= width2 / 3 && a <= width2 * 2 / 3) && (b >= length2 * 2 / 5 && b <= length2 * 3 / 5) || a == 0 || b == 0) @@ -949,7 +949,7 @@ void init_brick() } } for (i = 0; i <= width2; i++) - { //布置砖块brick + { //甯冪疆鐮栧潡brick for (j = 0; j <= length2; j++) { if (((i >= width2 * 2 / 3 && i <= width2 * 2 / 3 + 1) && (j >= 0 && j <= length2 / 5)) || ((i >= width2 * 2 / 3 && i <= width2 * 2 / 3 + 1) && (j >= length2 * 4 / 5 && j <= length2))) @@ -970,7 +970,7 @@ void init_brick() l = 0; gotoxy(0, 0); for (i = 0; i <= width2; i++) - { //打印地图 + { //鎵撳嵃鍦板浘 for (j = 0; j <= length2; j++) { if (j >= l && j <= r) @@ -987,7 +987,7 @@ void init_brick() Sleep(50); printf("\n"); } - //构建初始位置以及速度和方向角度 + //鏋勫缓鍒濆浣嶇疆浠ュ強閫熷害鍜屾柟鍚戣搴 X2 = width2 - 6; Y2 = rand() % 5 + 23; old_x2 = (int)X2; @@ -995,13 +995,13 @@ void init_brick() s[step2].x2 = old_x2; s[step2].y2 = old_y2; V = 15; - Vx = -V * sin(C[3] * pi / 180.0); //速度向右向下为正方向 + Vx = -V * sin(C[3] * pi / 180.0); //閫熷害鍚戝彸鍚戜笅涓烘鏂瑰悜 Vy = V * cos(C[3] * pi / 180.0); gotoxy(4, 1); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); printf("life:"); for (i = 0; i < life; i++) - printf("■"); + printf("鈻"); } void end_brick() @@ -1017,7 +1017,7 @@ void end_brick() step2 += max2; gotoxy(s[step2].y2, s[step2].x2); map2[s[step2].x2][s[step2].y2]--; - if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //防止自己吃自己 + if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //闃叉鑷繁鍚冭嚜宸 printf("%c", air); s[step2].x2 = 0; s[step2].y2 = 0; @@ -1039,9 +1039,9 @@ void end_brick() if_into_desktop = 1; } -void manchange(char ch) //人为输入更新 +void manchange(char ch) //浜轰负杈撳叆鏇存柊 { - if (ch == 'a' || ch == 's' || ch == 'd' || ch == 'w' || ch == ' ' || ch == 'p' || ch == 'b') //目前只开放aswd + if (ch == 'a' || ch == 's' || ch == 'd' || ch == 'w' || ch == ' ' || ch == 'p' || ch == 'b') //鐩墠鍙紑鏀綼swd { if (ch == 'a' && map2[width2 - 1][left2 - 1] != wall) { @@ -1071,7 +1071,7 @@ void manchange(char ch) // else if (ch == 'p') { /*gotoxy(2, width2 + 5); - printf("游戏暂停,按'p'继续游戏"); + printf("娓告垙鏆傚仠锛屾寜'p'缁х画娓告垙"); ch2 = getch(); while (ch2 != 'p') { @@ -1088,7 +1088,7 @@ void manchange(char ch) // //function = move(&temp_x2,&temp_y2,0,width2,0,length2,1,1,ch); //function = move(&menu_x,&menu_y,18,24,68,68,2,0,ch); } -void autochange() //自动更新 +void autochange() //鑷姩鏇存柊 { int flag = 1, i; double t1, t2; @@ -1098,50 +1098,50 @@ void autochange() // double x2_t1; double x3_t1; double x4_t1; - //更具体请前往https://github.com/404name/winter 打砖块子目录下下载demo文件参考抛物线原理 - //这里的“轨迹”是存在“循环队列”的结构体中的 - //map数组一开始只打印一次,随后在原数组上的改变不会作用显示。 - //显示轨迹的其实还是打印空格,但不同的是颜色 - //消去轨迹也打印白色的空格:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); + //鏇村叿浣撹鍓嶅線https://github.com/404name/winter 鎵撶爾鍧楀瓙鐩綍涓嬩笅杞絛emo鏂囦欢鍙傝冩姏鐗╃嚎鍘熺悊 + //杩欓噷鐨勨滆建杩光濇槸瀛樺湪鈥滃惊鐜槦鍒椻濈殑缁撴瀯浣撲腑鐨 + //map鏁扮粍涓寮濮嬪彧鎵撳嵃涓娆★紝闅忓悗鍦ㄥ師鏁扮粍涓婄殑鏀瑰彉涓嶄細浣滅敤鏄剧ず銆 + //鏄剧ず杞ㄨ抗鐨勫叾瀹炶繕鏄墦鍗扮┖鏍硷紝浣嗕笉鍚岀殑鏄鑹 + //娑堝幓杞ㄨ抗涔熸墦鍗扮櫧鑹茬殑绌烘牸锛歋etConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); /*------------------------------------------------------- - 核心公式: X = X0 + Vx * t + 1/2 * VX * t * t; + 鏍稿績鍏紡锛 X = X0 + Vx * t + 1/2 * VX * t * t; Y = Y0 + Vy * t; - 核心思想: ·如果选择时间作为移动参考,则每秒会出现点相差太远 - 难以实现连续。 - ·这里反过来,以连续为前提,尝试找出每移动一个单位 - 需要多少时间,则能依次找出一个连续的曲线。 + 鏍稿績鎬濇兂锛 路濡傛灉閫夋嫨鏃堕棿浣滀负绉诲姩鍙傝冿紝鍒欐瘡绉掍細鍑虹幇鐐圭浉宸お杩 + 闅句互瀹炵幇杩炵画銆 + 路杩欓噷鍙嶈繃鏉ワ紝浠ヨ繛缁负鍓嶆彁锛屽皾璇曟壘鍑烘瘡绉诲姩涓涓崟浣 + 闇瑕佸灏戞椂闂达紝鍒欒兘渚濇鎵惧嚭涓涓繛缁殑鏇茬嚎銆 - 出现问题: c语言数组只能是整数,所以移动方向只能存在水平和竖直, - 不能依照运动方向实现往某个特定的角度移动一个单位。 - 并且要排除断节问题(即打印的曲线断断续续) + 鍑虹幇闂锛 c璇█鏁扮粍鍙兘鏄暣鏁帮紝鎵浠ョЩ鍔ㄦ柟鍚戝彧鑳藉瓨鍦ㄦ按骞冲拰绔栫洿锛 + 涓嶈兘渚濈収杩愬姩鏂瑰悜瀹炵幇寰鏌愪釜鐗瑰畾鐨勮搴︾Щ鍔ㄤ竴涓崟浣嶃 + 骞朵笖瑕佹帓闄ゆ柇鑺傞棶棰橈紙鍗虫墦鍗扮殑鏇茬嚎鏂柇缁画锛 - 解决方法: 把特移动方向移动单位分解到X,Y上。 - 分别算出 X 增加一个单位长度 应该增加的 Y 的距离 s1 <=> flag == 1 - Y 增加一个单位长度 应该增加的 X 的距离 s2 <=> flag == 2 + 瑙e喅鏂规硶锛 鎶婄壒绉诲姩鏂瑰悜绉诲姩鍗曚綅鍒嗚В鍒癤锛孻涓娿 + 鍒嗗埆绠楀嚭 X 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 Y 鐨勮窛绂 s1 <=> flag == 1 + Y 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 X 鐨勮窛绂 s2 <=> flag == 2 - 优先选择更短的min(s1,s2),然后以flag对应不同的模式作为下一次移动的基准。 - 这样操作能保证线段仅仅只在水平与竖直方向移动时线段仍能连续 + 浼樺厛閫夋嫨鏇寸煭鐨刴in锛坰1,s2),鐒跺悗浠lag瀵瑰簲涓嶅悓鐨勬ā寮忎綔涓轰笅涓娆$Щ鍔ㄧ殑鍩哄噯銆 + 杩欐牱鎿嶄綔鑳戒繚璇佺嚎娈典粎浠呭彧鍦ㄦ按骞充笌绔栫洿鏂瑰悜绉诲姩鏃剁嚎娈典粛鑳借繛缁 - 打个比方:一段斜率为2的直线 - x增加1 Y增加2你看,这里Y脱节了会一下子在Y上移动了2格。 - 但实际上我们看 - Y增加1 X实际上只增加0.5. - 所以一段曲线,他的微元构成的直线不管斜率多偏僻,都能连续打印。 - 这就是为什么取min(s1,s2)决定移动模式的原因。 - 这样能保证仅仅只在上移动一个单位int(Y),而int(X)是不增加的,浮点型的X又把量累计到下一次在判断。 + 鎵撲釜姣旀柟锛氫竴娈垫枩鐜囦负2鐨勭洿绾 + x澧炲姞1 Y澧炲姞2浣犵湅锛岃繖閲孻鑴辫妭浜嗕細涓涓嬪瓙鍦╕涓婄Щ鍔ㄤ簡2鏍笺 + 浣嗗疄闄呬笂鎴戜滑鐪 + Y澧炲姞1 X瀹為檯涓婂彧澧炲姞0.5. + 鎵浠ヤ竴娈垫洸绾匡紝浠栫殑寰厓鏋勬垚鐨勭洿绾夸笉绠℃枩鐜囧鍋忓兓锛岄兘鑳借繛缁墦鍗般 + 杩欏氨鏄负浠涔堝彇min锛坰1,s2锛夊喅瀹氱Щ鍔ㄦā寮忕殑鍘熷洜銆 + 杩欐牱鑳戒繚璇佷粎浠呭彧鍦ㄤ笂绉诲姩涓涓崟浣峣nt锛圷锛夛紝鑰宨nt锛圶锛夋槸涓嶅鍔犵殑锛屾诞鐐瑰瀷鐨刋鍙堟妸閲忕疮璁″埌涓嬩竴娆″湪鍒ゆ柇銆 - 最后实现: - X,Y用double储存,保证实际叠加能连续; - 而实际打印,是不能说(5,6.28)这样的浮点型能在c语言上打印,所以我们采用int整型的old_x,old_y来承接X,Y以便于打印在屏幕上。 + 鏈鍚庡疄鐜帮細 + X锛孻鐢╠ouble鍌ㄥ瓨锛屼繚璇佸疄闄呭彔鍔犺兘杩炵画锛 + 鑰屽疄闄呮墦鍗帮紝鏄笉鑳借锛5,6.28锛夎繖鏍风殑娴偣鍨嬭兘鍦╟璇█涓婃墦鍗帮紝鎵浠ユ垜浠噰鐢╥nt鏁村瀷鐨刼ld_x,old_y鏉ユ壙鎺锛孻浠ヤ究浜庢墦鍗板湪灞忓箷涓娿 - 我们按照时间为循环只能在屏幕上打印一串断断续续的类抛物线的点。 - 但我们按照走一个“方向单位”,依次类叠,我们就能得到一串连续的线。 + 鎴戜滑鎸夌収鏃堕棿涓哄惊鐜彧鑳藉湪灞忓箷涓婃墦鍗颁竴涓叉柇鏂画缁殑绫绘姏鐗╃嚎鐨勭偣銆 + 浣嗘垜浠寜鐓ц蛋涓涓滄柟鍚戝崟浣嶁濓紝渚濇绫诲彔锛屾垜浠氨鑳藉緱鍒颁竴涓茶繛缁殑绾裤 - 结果实现: 由于,算法偏向不严谨,可能会出现小部分开局断节bug,但随着循环推迟,后期能100%连续!! + 缁撴灉瀹炵幇锛 鐢变簬锛岀畻娉曞亸鍚戜笉涓ヨ皑锛屽彲鑳戒細鍑虹幇灏忛儴鍒嗗紑灞鏂妭bug锛屼絾闅忕潃寰幆鎺ㄨ繜锛屽悗鏈熻兘100%杩炵画锛侊紒 - 加入人为修正 + 鍔犲叆浜轰负淇 - 经测试小范围的数据能完美打印出物理抛物线!!! + 缁忔祴璇曞皬鑼冨洿鐨勬暟鎹兘瀹岀編鎵撳嵃鍑虹墿鐞嗘姏鐗╃嚎锛侊紒锛 ------------------------------------------------------------*/ x1_t1 = (-Vx + sqrt(Vx * Vx + 20)) / 10; @@ -1160,7 +1160,7 @@ void autochange() // temp = 10; t1 = t1 < temp ? t1 : temp; s1 = t1 * Vy; - //当Y2增加一个单位方向时 + //褰揧2澧炲姞涓涓崟浣嶆柟鍚戞椂 t2 = 1.0 / fabs(Vy); s2 = Vx * t2 + 0.5 * g * t2 * t2; if ((int)s1 == 0) @@ -1170,7 +1170,7 @@ void autochange() // else flag = s1 < s2 ? 1 : 2; - //选择最优进行处理 + //閫夋嫨鏈浼樿繘琛屽鐞 if (flag == 1) { X2 = X2 + Vx * t1 + 5 * t1 * t1; @@ -1185,14 +1185,14 @@ void autochange() // } /*else{ for( i = 0; i < 4; i++) - 放弃判断对角了选择其他方式解决(详细见开头注释) + 鏀惧純鍒ゆ柇瀵硅浜嗛夋嫨鍏朵粬鏂瑰紡瑙e喅锛堣缁嗚寮澶存敞閲婏級 } } */ //--------------------------------- old_x2 = (int)X2; old_y2 = (int)Y2; - //常规的判断碰撞 + //甯歌鐨勫垽鏂鎾 if (map2[old_x2 + 1][old_y2] == wall && Vx >= 0 && map2[old_x2][old_y2 + 1] != wall && map2[old_x2][old_y2 - 1] != wall) { color = (color + 1) % 5; @@ -1269,7 +1269,7 @@ void autochange() // } else if (map2[old_x2 + 1][old_y2 + 1] == brick && Vx > 0 && Vy > 0 || map2[old_x2 + 1][old_y2 - 1] == brick && Vx > 0 && Vy < 0 || map2[old_x2 - 1][old_y2 + 1] == brick && Vx < 0 && Vy > 0 || map2[old_x2 - 1][old_y2 - 1] == brick && Vx < 0 && Vy < 0) { - color = (color + 1) % 5; //对角碰改变颜色方便区分 + color = (color + 1) % 5; //瀵硅纰版敼鍙橀鑹叉柟渚垮尯鍒 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); if (Vx > 0 && Vy > 0) { @@ -1322,7 +1322,7 @@ void autochange() // SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); gotoxy(s[step2].y2, s[step2].x2); map2[s[step2].x2][s[step2].y2]--; - if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //防止自己吃自己 + if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //闃叉鑷繁鍚冭嚜宸 printf("%c", air); } s[step2].x2 = old_x2; @@ -1336,19 +1336,19 @@ void autochange() // { case 0: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 60); - break; //蓝色 + break; //钃濊壊 case 1: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 70); - break; //红色 + break; //绾㈣壊 case 2: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 40); - break; //绿色 + break; //缁胯壊 case 3: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); - break; //深蓝色 + break; //娣辫摑鑹 case 4: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 128); - break; //紫色 + break; //绱壊 } gotoxy(s[step2].y2, s[step2].x2); if (map2[s[step2].x2][s[step2].y2] == brick) @@ -1359,7 +1359,7 @@ void autochange() // if (debug == 0 && !(s[step2].x2 == 0 && s[step2].y2 == 0)) printf("%c", air); else - printf("%d", step2 % 10); //debug模式 + printf("%d", step2 % 10); //debug妯″紡 step2++; if (step2 >= max2) { @@ -1375,7 +1375,7 @@ void autochange() // cnt = 0; color = (color + 1) % 5; } - Sleep(150 - 2 * old_x2); //模拟下坠的时候速度加快--对应画面更新更快 + Sleep(150 - 2 * old_x2); //妯℃嫙涓嬪潬鐨勬椂鍊欓熷害鍔犲揩--瀵瑰簲鐢婚潰鏇存柊鏇村揩 if (map[old_x2][old_y2] == wall) { Vx = -Vx; @@ -1391,10 +1391,10 @@ void autochange() // end_brick(); } } -//-----------------------------------------------------------------------------打砖块/----------------------------------------------------------------------------- +//-----------------------------------------------------------------------------鎵撶爾鍧/----------------------------------------------------------------------------- void put_letter_to_computer(char letter) -{ //把字符传输给电脑屏幕,如果电脑if_input为零就禁止显示 +{ //鎶婂瓧绗︿紶杈撶粰鐢佃剳灞忓箷锛屽鏋滅數鑴慽f_input涓洪浂灏辩姝㈡樉绀 int i; if (if_input == 1 && put_in_num < input_max) { @@ -1417,11 +1417,11 @@ void put_letter_to_computer(char letter) printf("%s", put_in_computer); } void put_function_to_computer(int function) -{ //电脑处理相应共呢 1 ~ 返回 2 ~删除 3确认 4shift 5上 6左 7下 8又 9开机 +{ //鐢佃剳澶勭悊鐩稿簲鍏卞憿 1 ~ 杩斿洖 2 ~鍒犻櫎 3纭 4shift 5涓 6宸 7涓 8鍙 9寮鏈 int ncx, ncy; char ch; if (function == 9) - { //开机 + { //寮鏈 system("color 70"); if (if_start == 0) { @@ -1440,7 +1440,7 @@ void put_function_to_computer(int function) } } if (function == 2 && put_in_num > 0 && if_input == 1) - { //删除字符,但不可越界 + { //鍒犻櫎瀛楃锛屼絾涓嶅彲瓒婄晫 put_in_num--; put_in_computer[put_in_num] = '\0'; if (if_input_password == 1) @@ -1456,14 +1456,14 @@ void put_function_to_computer(int function) } } if (function == 4) - { //切换大小写 + { //鍒囨崲澶у皬鍐 if (if_shift) if_shift = 0; else if_shift = 1; } if (function == 3 && if_input == 1 && if_game == 0) - { //确认对应不同模式下的不同功能 + { //纭瀵瑰簲涓嶅悓妯″紡涓嬬殑涓嶅悓鍔熻兘 if (strcmp(password_0, put_in_computer) == 0) { if_input_password = 0; @@ -1477,7 +1477,7 @@ void put_function_to_computer(int function) put_in_num = 0; put_in_computer[put_in_num] = '\0'; gotoxy(input_y, input_x); - printf("密 码 错 误 !!!"); + printf("瀵 鐮 閿 璇 锛侊紒锛"); gotoxy(input_y, input_x); Sleep(1200); printf(" "); @@ -1510,10 +1510,10 @@ void put_function_to_computer(int function) put_in_num = 0; put_in_computer[0] = '\0'; } - //if(if_game == 1 && function >= 5 && function <= 8)) 移动类型游戏暂未开放 (3.19更新可用了) + //if(if_game == 1 && function >= 5 && function <= 8)) 绉诲姩绫诲瀷娓告垙鏆傛湭寮鏀 (3.19鏇存柊鍙敤浜) else if (if_game == 2 && function >= 5 && function <= 8) { - //5上 6左 7下 8又 + //5涓 6宸 7涓 8鍙 ch = 'a'; switch (function) { @@ -1535,12 +1535,12 @@ void put_function_to_computer(int function) } else if (function == 3 && if_into_desktop) { - if (computer_map[cx][cy] == 1) //1 - 汉诺塔 2 - 打砖块 + if (computer_map[cx][cy] == 1) //1 - 姹夎濉 2 - 鎵撶爾鍧 { load_game(); if_game = 1; } - else if (computer_map[cx][cy] == 2) //打砖块 + else if (computer_map[cx][cy] == 2) //鎵撶爾鍧 { if_into_desktop = 0; init_brick(); @@ -1548,10 +1548,10 @@ void put_function_to_computer(int function) system("color 07"); } else if (computer_map[cx][cy] == 3) - { //(我的电脑) + { //锛堟垜鐨勭數鑴戯級 my_computer(); } - else if (computer_map[cx][cy] == 4) // 更多信息 + else if (computer_map[cx][cy] == 4) // 鏇村淇℃伅 { load_more(); getch(); @@ -1560,7 +1560,7 @@ void put_function_to_computer(int function) load_desktop(); } else if (computer_map[cx][cy] == 5) - { //浏览器(因为不支持,所以使用就蓝屏(滑稽)) + { //娴忚鍣紙鍥犱负涓嶆敮鎸侊紝鎵浠ヤ娇鐢ㄥ氨钃濆睆锛堟粦绋斤級锛 blue_screen(); } } @@ -1580,37 +1580,37 @@ void put_function_to_computer(int function) } } if (function == 1 && if_into_desktop) - { //返回 + { //杩斿洖 load_desktop(); } } int main() { - if_my_map = 0; //是否加载自己设置的关卡,改成1后 my_map数组就是内置地图 + if_my_map = 0; //鏄惁鍔犺浇鑷繁璁剧疆鐨勫叧鍗★紝鏀规垚1鍚 my_map鏁扮粍灏辨槸鍐呯疆鍦板浘 HideCursor(); init(); - /*load_desktop(); //直接进入桌面 + /*load_desktop(); //鐩存帴杩涘叆妗岄潰 if_start = 1; if_into_desktop = 1;*/ HideCursor(); while (1) - { //主循环w - if (if_game == 2) //打砖块 + { //涓诲惊鐜痺 + if (if_game == 2) //鎵撶爾鍧 autochange(); if (kbhit()) { - flag = move(); //move提取读取的键盘按键并判断类型 + flag = move(); //move鎻愬彇璇诲彇鐨勯敭鐩樻寜閿苟鍒ゆ柇绫诲瀷 switch (flag) { case 0: - break; //暂无效果的按键 + break; //鏆傛棤鏁堟灉鐨勬寜閿 case 1: put_letter_to_computer(letter); - break; //返回字符型按键给电脑 + break; //杩斿洖瀛楃鍨嬫寜閿粰鐢佃剳 case 2: put_function_to_computer(function); - break; //返回功能型按键给电脑 + break; //杩斿洖鍔熻兘鍨嬫寜閿粰鐢佃剳 } } } diff --git "a/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10\344\273\245\344\270\213_ver_3.0\357\274\210\346\227\247\346\216\247\345\210\266\345\217\260\357\274\211/\350\207\252\350\241\214\347\274\226\350\257\221.txt" "b/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10\344\273\245\344\270\213_ver_3.0\357\274\210\346\227\247\346\216\247\345\210\266\345\217\260\357\274\211/\350\207\252\350\241\214\347\274\226\350\257\221.txt" index baf4a29..eebefd3 100644 --- "a/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10\344\273\245\344\270\213_ver_3.0\357\274\210\346\227\247\346\216\247\345\210\266\345\217\260\357\274\211/\350\207\252\350\241\214\347\274\226\350\257\221.txt" +++ "b/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\346\213\223\345\261\225\345\256\214\345\226\204\347\211\210\357\274\211/win10\344\273\245\344\270\213_ver_3.0\357\274\210\346\227\247\346\216\247\345\210\266\345\217\260\357\274\211/\350\207\252\350\241\214\347\274\226\350\257\221.txt" @@ -1,57 +1,57 @@ /*--------------------------------------------------------- -程序: 模拟笔记本电脑 (纯C语言,可直接编译器运行) -作者: 404name -说明: 1.这个程序本意在模拟电脑的基本功能,重在实现键盘的输入与键盘的控制,模拟开机,输密,打开软件,关闭电脑,所以其他功能暂没开发,不用太失望。 - 2.不同的编码会有不同的长度显示,但运行出来的效果都是一样的 - 3.代码规范不到位,见谅。 - 4.大一上写的,一般写小游戏练手,也琢磨到一些特殊的处理方法,所以对一些功能处理上有一些难理解的地方。 - 5.emmm,没啥了 - 6.感觉大一下太难了。qwq,在家学习效率太低。尽力学点新东西把。 -程序进度: 于2.10号停止更新(目前不再会加入新功能了,模板搭建完了,功能已经全部写完,再加入一些东西也没太大意义,还是去学学java去了) -程序结构: 程序因为加入了打砖块,部分函数顺序需要调换,影响体验。此处给出按顺序的走法。 - 这里其实总体上是有顺序的,但代码太多看起来就很乱。 - 解决方案:先定义函数再在主函数后面分类写。并没有采用,因为习惯性写前面,嘿嘿。。 +绋嬪簭锛 妯℃嫙绗旇鏈數鑴 锛堢函C璇█锛屽彲鐩存帴缂栬瘧鍣ㄨ繍琛岋級 +浣滆咃細 404name +璇存槑锛 1.杩欎釜绋嬪簭鏈剰鍦ㄦā鎷熺數鑴戠殑鍩烘湰鍔熻兘锛岄噸鍦ㄥ疄鐜伴敭鐩樼殑杈撳叆涓庨敭鐩樼殑鎺у埗锛屾ā鎷熷紑鏈猴紝杈撳瘑锛屾墦寮杞欢锛屽叧闂數鑴戯紝鎵浠ュ叾浠栧姛鑳芥殏娌″紑鍙戯紝涓嶇敤澶け鏈涖 + 2.涓嶅悓鐨勭紪鐮佷細鏈変笉鍚岀殑闀垮害鏄剧ず锛屼絾杩愯鍑烘潵鐨勬晥鏋滈兘鏄竴鏍风殑 + 3.浠g爜瑙勮寖涓嶅埌浣嶏紝瑙佽皡銆 + 4.澶т竴涓婂啓鐨勶紝涓鑸啓灏忔父鎴忕粌鎵嬶紝涔熺悽纾ㄥ埌涓浜涚壒娈婄殑澶勭悊鏂规硶锛屾墍浠ュ涓浜涘姛鑳藉鐞嗕笂鏈変竴浜涢毦鐞嗚В鐨勫湴鏂广 + 5.emmm锛屾病鍟ヤ簡 + 6.鎰熻澶т竴涓嬪お闅句簡銆俼wq锛屽湪瀹跺涔犳晥鐜囧お浣庛傚敖鍔涘鐐规柊涓滆タ鎶娿 +绋嬪簭杩涘害锛 浜2.10鍙峰仠姝㈡洿鏂帮紙鐩墠涓嶅啀浼氬姞鍏ユ柊鍔熻兘浜嗭紝妯℃澘鎼缓瀹屼簡锛屽姛鑳藉凡缁忓叏閮ㄥ啓瀹岋紝鍐嶅姞鍏ヤ竴浜涗笢瑗夸篃娌″お澶ф剰涔夛紝杩樻槸鍘诲瀛ava鍘讳簡锛 +绋嬪簭缁撴瀯锛 绋嬪簭鍥犱负鍔犲叆浜嗘墦鐮栧潡锛岄儴鍒嗗嚱鏁伴『搴忛渶瑕佽皟鎹紝褰卞搷浣撻獙銆傛澶勭粰鍑烘寜椤哄簭鐨勮蛋娉曘 + 杩欓噷鍏跺疄鎬讳綋涓婃槸鏈夐『搴忕殑锛屼絾浠g爜澶鐪嬭捣鏉ュ氨寰堜贡銆 + 瑙e喅鏂规锛氬厛瀹氫箟鍑芥暟鍐嶅湪涓诲嚱鏁板悗闈㈠垎绫诲啓銆傚苟娌℃湁閲囩敤锛屽洜涓轰範鎯у啓鍓嶉潰锛屽樋鍢裤傘 - |变量区:(数组+变量) - |子函数区: - ·系统自带函数:光标隐藏+gotoxy - ·汉诺塔执行相关函数 - ·主程序init函数 - ·主程序界面加载函数: - ·开机画面 - ·关机画面 - ·蓝屏画面 - ·更多信息画面 - ·电脑系统配置画面 - ·打砖块执行相关函数 - ·主程序功能函数: - ·处理返回的字符型按键函数 - ·处理返回的功能型按键函数 - |主函数: - ·主循环 -修复历史: - (2020) - 3.10修复字符显示乱码 - 3.15修复关机仍能输入密码 - 3.15加入光标隐藏(关闭前往init函数第一行) - 3.19加入可移动游戏简洁版,可前往main函数自己开关 - 4.07丰富细节,更加贴近xp系统。 - ·密码输入优化,输入的密码会在下一次输入变成不可视。 - ·优化打砖块对角碰撞算法,更加真实。 - ·新增“此电脑”可查看电脑配置. - ·新增关机画面。 - ·优化细节. -指路区: 1.自制地图插入 前往my_map[][]数组 大概300多行处修改; - 2.打砖块抛物线算法解析 前往autochange()函数 1000多行处 + |鍙橀噺鍖猴細锛堟暟缁+鍙橀噺锛 + |瀛愬嚱鏁板尯锛 + 路绯荤粺鑷甫鍑芥暟锛氬厜鏍囬殣钘+gotoxy + 路姹夎濉旀墽琛岀浉鍏冲嚱鏁 + 路涓荤▼搴廼nit鍑芥暟 + 路涓荤▼搴忕晫闈㈠姞杞藉嚱鏁帮細 + 路寮鏈虹敾闈 + 路鍏虫満鐢婚潰 + 路钃濆睆鐢婚潰 + 路鏇村淇℃伅鐢婚潰 + 路鐢佃剳绯荤粺閰嶇疆鐢婚潰 + 路鎵撶爾鍧楁墽琛岀浉鍏冲嚱鏁 + 路涓荤▼搴忓姛鑳藉嚱鏁帮細 + 路澶勭悊杩斿洖鐨勫瓧绗﹀瀷鎸夐敭鍑芥暟 + 路澶勭悊杩斿洖鐨勫姛鑳藉瀷鎸夐敭鍑芥暟 + |涓诲嚱鏁帮細 + 路涓诲惊鐜 +淇鍘嗗彶锛 + 锛2020锛 + 3.10淇瀛楃鏄剧ず涔辩爜 + 3.15淇鍏虫満浠嶈兘杈撳叆瀵嗙爜 + 3.15鍔犲叆鍏夋爣闅愯棌锛堝叧闂墠寰init鍑芥暟绗竴琛岋級 + 3.19鍔犲叆鍙Щ鍔ㄦ父鎴忕畝娲佺増锛屽彲鍓嶅線main鍑芥暟鑷繁寮鍏 + 4.07涓板瘜缁嗚妭锛屾洿鍔犺创杩憍p绯荤粺銆 + 路瀵嗙爜杈撳叆浼樺寲锛岃緭鍏ョ殑瀵嗙爜浼氬湪涓嬩竴娆¤緭鍏ュ彉鎴愪笉鍙銆 + 路浼樺寲鎵撶爾鍧楀瑙掔鎾炵畻娉曪紝鏇村姞鐪熷疄銆 + 路鏂板鈥滄鐢佃剳鈥濆彲鏌ョ湅鐢佃剳閰嶇疆. + 路鏂板鍏虫満鐢婚潰銆 + 路浼樺寲缁嗚妭. +鎸囪矾鍖猴細 1.鑷埗鍦板浘鎻掑叆 鍓嶅線my_map[][]鏁扮粍 澶ф300澶氳澶勪慨鏀癸紱 + 2.鎵撶爾鍧楁姏鐗╃嚎绠楁硶瑙f瀽 鍓嶅線autochange()鍑芥暟 1000澶氳澶 ---------------------------------------------------------*/ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include #include #include #include #define pi 3.14 -const double g = 10; //标准数越模糊,轨迹越连贯。 -char start[20][500] = { //图形界面 +const double g = 10; //鏍囧噯鏁拌秺妯$硦锛岃建杩硅秺杩炶疮銆 +char start[20][500] = { //鍥惧舰鐣岄潰 {"+--------------------------------------------------------------------------------------------------------------------------+"}, {" \\ /"}, {" \\ /"}, @@ -67,7 +67,7 @@ char start[20][500] = { //图 {" \\ | | /"}, {" \\ +--------------------+ /"}, {" \\ /"}, - {" \\ Copyright Θ Microsoft Corporation Microsoft /"}, + {" \\ Copyright 螛 Microsoft Corporation Microsoft /"}, {" \\ __________________________________________________________________________________________/"}}; char password[20][500] = { {"+--------------------------------------------------------------------------------------------------------------------------+"}, @@ -78,11 +78,11 @@ char password[20][500] = { {" \\ | /"}, {" \\ | +--------------------------------------------- /"}, {" \\ /~/~/ | |+-----+ Administrator /"}, - {" \\ /~/~/ __XP | || [] | 输入密码 /"}, - {" \\ \\ /\\ / - _ _| _ ~ ~ /_ | |+-----+ 【| 】ck[→] /"}, + {" \\ /~/~/ __XP | || [] | 杈撳叆瀵嗙爜 /"}, + {" \\ \\ /\\ / - _ _| _ ~ ~ /_ | |+-----+ 銆恷 銆慶k[鈫抅 /"}, {" \\ \\/ \\/ | | | |_| |_| \\/\\/ __/ | +--------------------------------------- /"}, {" \\ | /"}, - {" \\ 要开始,请单击您的用户名 | /"}, + {" \\ 瑕佸紑濮嬶紝璇峰崟鍑绘偍鐨勭敤鎴峰悕 | /"}, {" \\ | /"}, {" \\ /"}, {" \\ ---------------------------------------------------------------------------------------- /"}, @@ -92,18 +92,18 @@ char desktop[20][500] = { {" \\ ----- ----- ----- +----+ +----+ /"}, {" \\ \\ \\ \\ \\ \\ \\ | | |ing | /"}, {" \\ ----- ----- ----- +----+ +----+ /"}, - {" \\ 汉诺塔 打砖块 我的电脑 相关 待开发 /"}, + {" \\ 姹夎濉 鎵撶爾鍧 鎴戠殑鐢佃剳 鐩稿叧 寰呭紑鍙 /"}, {" \\ ----- /"}, {" \\ \\ \\ /"}, {" \\ ----- __ --------------- __ __ /"}, - {" \\ IE浏览器__-- --- __ -------_ -------_------____ /"}, + {" \\ IE娴忚鍣╛_-- --- __ -------_ -------_------____ /"}, {" \\ ____ __--__ -- __ -------_ --- - __ --- __ --------------______ /"}, {" \\__ -------_--__ ------- __ ---------- __ ------ __ ------ __ --- __ ---------____ /"}, {" \\ -------_---__ ------- _---- __ -------_ ---_ -------_ -_ ----------_ -_---_ -_ ------_ -_ /"}, {" \\--__ -- __ ----- __ ------ __ -------_ --- ---- __ -------_ -_ ---------_ -_ ------_ -_ ------ /"}, {" \\ -_--__ ------- _---- __ -------_ ------- __ -------_ -- __ -------_ -_ --------__---_ -_ ------/"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | | 12:00 /"}, + {" \\ 寮濮 \\ qq2010 | | 12:00 /"}, {" \\ __________________________________________________________________________________________/"}}; char game_hnt[20][500] = { {"+--------------------------------------------------------------------------------------------------------------------------+"}, @@ -121,43 +121,43 @@ char game_hnt[20][500] = { {" \\ /"}, {" \\ +-------------------------------------------------------------------------------------------+ /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 汉诺塔自动演示小游戏 | | 12:08 /"}, + {" \\ 寮濮 \\ qq2010 | 姹夎濉旇嚜鍔ㄦ紨绀哄皬娓告垙 | | 12:08 /"}, {" \\ __________________________________________________________________________________________/"}}; char MyComputer[20][500] = { {"+--------------------------------------------------------------------------------------------------------------------------+"}, {" \\ +----------------------------------------------------------------------------------------------------------------+ /"}, - {" \\ \\系统属性| |?| X / /"}, - {" \\ \\= 常规 =|计算机名|硬件|高级|自动更新|远程| / /"}, - {" \\ \\ 系统: / /"}, + {" \\ \\绯荤粺灞炴 |锛焲 X / /"}, + {" \\ \\= 甯歌 =|璁$畻鏈哄悕|纭欢|楂樼骇|鑷姩鏇存柊|杩滅▼| / /"}, + {" \\ \\ 绯荤粺锛 / /"}, {" \\ \\ +------------+ Microsoft Windows XP/ /"}, {" \\ \\ | /~/~/ | Professional / /"}, - {" \\ \\ | /~/~/ | 版本 2.3.3.3 / /"}, + {" \\ \\ | /~/~/ | 鐗堟湰 2.3.3.3 / /"}, {" \\ \\ +------------+ / /"}, - {" \\ \\ ---- 绝伦 && 404name / /"}, - {" \\ \\ 制造商和技术支持商 : Pentium(R) Core CPU / /"}, - {" \\ \\ M i c r o s o f t 2.52GHz, 1.99GB内存 / /"}, - {" \\ \\ 技术支持信息(S) / /"}, + {" \\ \\ ---- 缁濅鸡 && 404name / /"}, + {" \\ \\ 鍒堕犲晢鍜屾妧鏈敮鎸佸晢 : Pentium(R) Core CPU / /"}, + {" \\ \\ M i c r o s o f t 2.52GHz, 1.99GB鍐呭瓨 / /"}, + {" \\ \\ 鎶鏈敮鎸佷俊鎭(S) / /"}, {" \\ +-------------------------------------------------------------------------------------------+ /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 系统属性 | | 12:08 /"}, + {" \\ 寮濮 \\ qq2010 | 绯荤粺灞炴 | | 12:08 /"}, {" \\ __________________________________________________________________________________________/"}}; char thinking[30][500] = { {"+--------------------------------------------------------------------------------------------------------------------------+"}, {" \\ +----------------------------------------------------------------------------------------------------------------+ /"}, - {" \\ 这里是相关:(最后更新2020.2.11) /"}, + {" \\ 杩欓噷鏄浉鍏筹細锛堟渶鍚庢洿鏂2020.2.11锛 /"}, {" \\ /"}, - {" \\ 寒假太颓废了,没劲学习,游戏玩腻,然后开始发呆。安静下来时才有灵感 ,看着笔记本,就想着我也编一个电脑系统吧 /"}, + {" \\ 瀵掑亣澶搴熶簡锛屾病鍔插涔狅紝娓告垙鐜╄吇锛岀劧鍚庡紑濮嬪彂鍛嗐傚畨闈欎笅鏉ユ椂鎵嶆湁鐏垫劅 锛岀湅鐫绗旇鏈紝灏辨兂鐫鎴戜篃缂栦竴涓數鑴戠郴缁熷惂 /"}, {" \\ /"}, - {" \\ 就想把大一上学到的一些东西总着来练练手。。然后发现写电脑系统就是痴人说梦了,我还是写个模拟计算机吧。 /"}, + {" \\ 灏辨兂鎶婂ぇ涓涓婂鍒扮殑涓浜涗笢瑗挎荤潃鏉ョ粌缁冩墜銆傘傜劧鍚庡彂鐜板啓鐢佃剳绯荤粺灏辨槸鐥翠汉璇存ⅵ浜嗭紝鎴戣繕鏄啓涓ā鎷熻绠楁満鍚с /"}, {" \\ /"}, - {" \\ 对着自己笔记本的键盘一个一个的还原,然后思考如何体现屏幕,如何移动键盘,如何读取键盘把信息传给我的 /"}, + {" \\ 瀵圭潃鑷繁绗旇鏈殑閿洏涓涓竴涓殑杩樺師锛岀劧鍚庢濊冨浣曚綋鐜板睆骞曪紝濡備綍绉诲姩閿洏锛屽浣曡鍙栭敭鐩樻妸淇℃伅浼犵粰鎴戠殑 /"}, {" \\ /"}, - {" \\ 虚拟电脑,如何模拟开机实现基本功能 ,一口气写完真心爽,最后想做互动游戏的,但这斜着的屏幕,emmm /"}, + {" \\ 铏氭嫙鐢佃剳锛屽浣曟ā鎷熷紑鏈哄疄鐜板熀鏈姛鑳 锛屼竴鍙f皵鍐欏畬鐪熷績鐖斤紝鏈鍚庢兂鍋氫簰鍔ㄦ父鎴忕殑锛屼絾杩欐枩鐫鐨勫睆骞曪紝emmm /"}, {" \\ /"}, - {" \\ 所以最后电脑只能运行汉诺塔,其他功能实现也简单,但还是把时间放在我突然又燃起的学习小火苗上吧/"}, + {" \\ 鎵浠ユ渶鍚庣數鑴戝彧鑳借繍琛屾眽璇哄锛屽叾浠栧姛鑳藉疄鐜颁篃绠鍗曪紝浣嗚繕鏄妸鏃堕棿鏀惧湪鎴戠獊鐒跺張鐕冭捣鐨勫涔犲皬鐏嫍涓婂惂/"}, {" \\ +-------------------------------------------------------------------------------------------+ /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 感想.txt | | 12:15 /"}, + {" \\ 寮濮 \\ qq2010 | 鎰熸兂.txt | | 12:15 /"}, {" \\ __________________________________________________________________________________________/"}}; char ending[30][500] = { {"+--------------------------------------------------------------------------------------------------------------------------+"}, @@ -174,7 +174,7 @@ char ending[30][500] = { {" \\ Once installed, your old computer might be able to run Internet explorer. That's cool. /"}, {" \\ /"}, {" \\ Technical information: /"}, - {" \\ ****** STOP 0x0000008E (0xc0000005,0xBF856CA8,0xB0F07A40,0x00000000) /"}, + {" \\ ****** STOP 0x0000008E 锛0xc0000005锛0xBF856CA8锛0xB0F07A40锛0x00000000锛 /"}, {" \\ ****** win32k.sys - Address BF853CA8 base at BF800000, DateStamp 5900ef5f /"}, {" \\ __________________________________________________________________________________________/"}}; char map[1000][1000] = { @@ -202,15 +202,15 @@ char map[1000][1000] = { {" || Esc | | F1| F2| F3| F4|| F5| F6| F7| F8|| F9|F10|F11|F12||Prt|Scr|Pau| ++ ++ ++ ++ |"}, {" |+-----+ +---+---+---+---++---+---+---+---++---+---+---+---++---+---+---+ ++ ++ ++ ++ |"}, {" |+----+---+---+---+---+---+---+---+---+---+---+---+---+-----++---+---+---++---+---+---+---+|"}, - {" || `~ | 1!| 2@| 3#| 4$| 5%| 6^| 7&| 8*| 9(| 0)| --| =+| ←--||Ins|Hom|Pgu||Num| / | * | - ||"}, + {" || `~ | 1!| 2@| 3#| 4$| 5%| 6^| 7&| 8*| 9(| 0)| --| =+| 鈫--||Ins|Hom|Pgu||Num| / | * | - ||"}, {" |+----++--++--++--++--++--++--++--++--++--++--++--++--++----++---+---+---++---+---+---+---+|"}, {" || Tab | Q | W | E | R | T | Y | U | I | O | P | [{| ]}| \\| ||Del|End|Pgd|| 7 | 8 | 9 | ||"}, {" |+-----++--++--++--++--++--++--++--++--++--++--++--++--+----++---+---+---++---+---+---+ + ||"}, {" || Caps | A | S | D | F | G | H | J | K | L | ;:| \'\"| Enter | | 4 | 5 | 6 | ||"}, {" |+------++--++--++--++--++--++--++--++--++--++--++--+-------+ +---+ +---+---+---+---+|"}, - {" || Shift | Z | X | C | V | B | N | M | ,<| .>| /?| Shift | | ↑| | 1 | 2 | 3 | |||"}, - {" |+----+--+-+-+--++---+---+---+---+---+---+--++---╪---+------++---+---+---++---+---+---+ |||"}, - {" || Ctr| win| Alt| ---- | Alt| Fn| Ctrl ||← | ↓| →|| 0ins |.de|←+||"}, + {" || Shift | Z | X | C | V | B | N | M | ,<| .>| /?| Shift | | 鈫憒 | 1 | 2 | 3 | |||"}, + {" |+----+--+-+-+--++---+---+---+---+---+---+--++---鈺---+------++---+---+---++---+---+---+ |||"}, + {" || Ctr| win| Alt| ---- | Alt| Fn| Ctrl ||鈫 | 鈫搢 鈫抾| 0ins |.de|鈫+||"}, {" |+----+----+----+---------------------------+----+---+------++---+---+---++-------+---+---+|"}, {" | +-------------------------------+ |"}, {" | | | |"}, @@ -218,9 +218,9 @@ char map[1000][1000] = { {" | |---------------+---------------| |"}, {" | +---------------+---------------+ |"}, {" +------------------------------------------------------------------------------------------+"}}; -//功能数组 +//鍔熻兘鏁扮粍 int keyboard[20][30] = { - //把键盘看成一个地图让move函数在上面移动返回的数值对应下面的 board_place[120][5]是对应按键的全部信息 + //鎶婇敭鐩樼湅鎴愪竴涓湴鍥捐move鍑芥暟鍦ㄤ笂闈㈢Щ鍔ㄨ繑鍥炵殑鏁板煎搴斾笅闈㈢殑 board_place[120][5]鏄搴旀寜閿殑鍏ㄩ儴淇℃伅 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 104, 104, 104, 104}, {0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37}, @@ -229,14 +229,14 @@ int keyboard[20][30] = { {0, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 86, 86, 0, 87, 0, 88, 89, 90, 91}, {0, 92, 93, 94, 95, 95, 95, 95, 95, 95, 95, 96, 97, 98, 98, 99, 100, 101, 102, 102, 103, 91}, }; -int next[9][2] = {{0}, {0}, {0}, {0}, {0}, {-1, 0}, {0, -1}, {1, 0}, {0, 1}}; //给键盘传给虚拟键盘的键盘控制虚拟电脑用 -int computer_map[3][8] = {{0, 0, 0, 0, 0}, {0, 1, 2, 3, 4}, {0, 5, 0, 0, 0}}; //对应的移动操作记录 +int next[9][2] = {{0}, {0}, {0}, {0}, {0}, {-1, 0}, {0, -1}, {1, 0}, {0, 1}}; //缁欓敭鐩樹紶缁欒櫄鎷熼敭鐩樼殑閿洏鎺у埗铏氭嫙鐢佃剳鐢 +int computer_map[3][8] = {{0, 0, 0, 0, 0}, {0, 1, 2, 3, 4}, {0, 5, 0, 0, 0}}; //瀵瑰簲鐨勭Щ鍔ㄦ搷浣滆褰 int computer_map_place[6][2] = {{0}, {2, 9}, {2, 19}, {2, 29}, {2, 40}, {6, 12}}; int cx, cy, tcx, tcy, lcx, lcy; -int board_place[120][5] = { //这是按键的信息 下标依次对应 -返回值 -按下shift下的返回值2 -键盘字符长度 -字符坐标x -y - {0, 0, 0, 0, 0}, //第一项如果是字符那么那就是返回字符 如果是数字1-9那么就是功能按键功能对应如下 +int board_place[120][5] = { //杩欐槸鎸夐敭鐨勪俊鎭 涓嬫爣渚濇瀵瑰簲 -杩斿洖鍊 -鎸変笅shift涓嬬殑杩斿洖鍊2 -閿洏瀛楃闀垮害 -瀛楃鍧愭爣x -y + {0, 0, 0, 0, 0}, //绗竴椤瑰鏋滄槸瀛楃閭d箞閭e氨鏄繑鍥炲瓧绗 濡傛灉鏄暟瀛1-9閭d箞灏辨槸鍔熻兘鎸夐敭鍔熻兘瀵瑰簲濡備笅 {1, 1, 3, 21, 19}, //1-10 - {0, 0, 2, 21, 28}, //1 ~ 返回 2 ~删除 3确认 4shift 5上 6左 7下 8又 9开机 + {0, 0, 2, 21, 28}, //1 ~ 杩斿洖 2 ~鍒犻櫎 3纭 4shift 5涓 6宸 7涓 8鍙 9寮鏈 {0, 0, 2, 21, 32}, {0, 0, 2, 21, 36}, {0, 0, 2, 21, 40}, @@ -340,25 +340,25 @@ int board_place[120][5] = { // {'.', '.', 4, 32, 99}, {9, 9, 4, 18, 99}}; -// 程序功能变量 -int flag, function, if_shift, if_start, if_input_password, if_into_desktop, if_game, qpz; //0表示输入无效,1表示是输入电脑键 2表示是功能键 +// 绋嬪簭鍔熻兘鍙橀噺 +int flag, function, if_shift, if_start, if_input_password, if_into_desktop, if_game, qpz; //0琛ㄧず杈撳叆鏃犳晥锛1琛ㄧず鏄緭鍏ョ數鑴戦敭 2琛ㄧず鏄姛鑳介敭 char letter; int x, y, tx, ty, num, lx, ly; char temp[6] = {"====="}; char put_in_computer[20]; -char password_0[20] = {"WHJY"}; // 密码 +char password_0[20] = {"WHJY"}; // 瀵嗙爜 int put_in_num, if_input, input_x, input_y, input_max; -// 汉诺塔游戏变量 +// 姹夎濉旀父鎴忓彉閲 int mid_x, mid_y; int len, width, left, mid, right, time; int ttx, tty; char game_map[80][1000]; -int game_next[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //上0下1左2右3; +int game_next[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //涓0涓1宸2鍙3锛 -int turn[2][3] = {{0, 3, 1}, //a -> b b -> c a -> c 上右下 - {0, 2, 1}}; //b -> a c -> b c -> a 上左下 //实现自动移动的路线储存 +int turn[2][3] = {{0, 3, 1}, //a -> b b -> c a -> c 涓婂彸涓 + {0, 2, 1}}; //b -> a c -> b c -> a 涓婂乏涓 //瀹炵幇鑷姩绉诲姩鐨勮矾绾垮偍瀛 -//打砖块游戏变量 +//鎵撶爾鍧楁父鎴忓彉閲 char map2[1000][1000]; char End[20][50] = { {" ## ## ## "}, @@ -375,11 +375,11 @@ char End[20][50] = { {"###### ####### ### ## ### "}, {"### ####### ## ## ## "}, {" ## ## ## "}, - {" 按 任 意 键 继 续 "}, + {" 鎸 浠 鎰 閿 缁 缁 "}, }; //----------------------------------------------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------------------------------- -//此处是人工地图接口(开启请前往main函数里面设置下面0为1并且自己改变图案) +//姝ゅ鏄汉宸ュ湴鍥炬帴鍙o紙寮鍚鍓嶅線main鍑芥暟閲岄潰璁剧疆涓嬮潰0涓1骞朵笖鑷繁鏀瑰彉鍥炬锛 int if_my_map; char my_map[50][500] = {{"#############################################################################################################################"}, {"## life: | | | ##"}, @@ -398,36 +398,36 @@ char my_map[50][500] = {{"###################################################### {"############### ###############"}, {"################ ########### ################"}, {"#############################################################################################################################"}}; -//修改规则: -//显然电脑屏幕外是不能动的只能修改里面梯形 -// 墙~# 砖块~0 空气~' ' -//小球在倒数第七行 23~27列之间随机生成,不能占位 -//左下角是木板生成地,左上是生命 不可改(要改需调参数) +//淇敼瑙勫垯锛 +//鏄剧劧鐢佃剳灞忓箷澶栨槸涓嶈兘鍔ㄧ殑鍙兘淇敼閲岄潰姊舰 +// 澧檦# 鐮栧潡~0 绌烘皵~' ' +//灏忕悆鍦ㄥ掓暟绗竷琛 23~27鍒椾箣闂撮殢鏈虹敓鎴愶紝涓嶈兘鍗犱綅 +//宸︿笅瑙掓槸鏈ㄦ澘鐢熸垚鍦帮紝宸︿笂鏄敓鍛 涓嶅彲鏀癸紙瑕佹敼闇璋冨弬鏁帮級 //----------------------------------------------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------------------------------- -//全局变量区,在init里面改变 +//鍏ㄥ眬鍙橀噺鍖猴紝鍦╥nit閲岄潰鏀瑰彉 char wall, food, air, brick; int width2, length2; -double X2, Y2, x2, y2, Vx, Vy, t2, V; //默认向下向右为正 +double X2, Y2, x2, y2, Vx, Vy, t2, V; //榛樿鍚戜笅鍚戝彸涓烘 int old_x2, old_y2, head2, tail2, max2, step2, if_miss, food_num, goal, color, add_x, add_y, cnt; -int if_load_snake_mod, debug, life; //debug模式调成1手动开启 -int temp_x2, temp_y2, menu_x, menu_y, left2, right2; //临时坐标 -double C[8] = {0, 10, 30, 55, 90}; //初始斜抛的角度,自右向上转角(目前已调整好最好的角度) +int if_load_snake_mod, debug, life; //debug妯″紡璋冩垚1鎵嬪姩寮鍚 +int temp_x2, temp_y2, menu_x, menu_y, left2, right2; //涓存椂鍧愭爣 +double C[8] = {0, 10, 30, 55, 90}; //鍒濆鏂滄姏鐨勮搴︼紝鑷彸鍚戜笂杞(鐩墠宸茶皟鏁村ソ鏈濂界殑瑙掑害) -struct Step //轨迹 +struct Step //杞ㄨ抗 { int x2; int y2; } s[1000]; -void HideCursor() //光标隐藏 +void HideCursor() //鍏夋爣闅愯棌 { - CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //后边的0代表光标不可见 + CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -436,7 +436,7 @@ void gotoxy(int x, int y) // SetConsoleCursorPosition(handle, pos); } void init_game(int n) -{ //初始化汉诺塔 +{ //鍒濆鍖栨眽璇哄 int i, j; mid_x = 7, mid_y = 60; ttx = 10, tty = 10; @@ -458,12 +458,12 @@ void init_game(int n) if (num && (i >= 1 && i <= width - 1) && j % 2 != 0 && j < mid) { game_map[i][j] = -95; - game_map[i][j + 1] = -10; //打印 ■ ■占2个字节可以拆开来 + game_map[i][j + 1] = -10; //鎵撳嵃 鈻 鈻犲崰2涓瓧鑺傚彲浠ユ媶寮鏉 num--; } } } - //容易出现东西卡顿 + //瀹规槗鍑虹幇涓滆タ鍗¢】 for (i = 0; i <= width; i++) { gotoxy(tty, ttx + i); @@ -474,14 +474,14 @@ void init_game(int n) } void play(int x, int y) -{ //显示汉诺塔移动轨迹 +{ //鏄剧ず姹夎濉旂Щ鍔ㄨ建杩 int turn_0, n = 0, i, j, k, tx, ty, flag = 0; if ((x == mid && y == right) || (x == left && y == mid) || (x == left && y == right)) - turn_0 = 0; //往右 + turn_0 = 0; //寰鍙 else if ((x == mid && y == left) || (x == right && y == left) || (x == right && y == mid)) - turn_0 = 1; //往左 + turn_0 = 1; //寰宸 for (i = 1, j = y; i <= width; i++) - { //目的地 + { //鐩殑鍦 if (game_map[i][j] != 0) { tx = i - 1; @@ -490,7 +490,7 @@ void play(int x, int y) } } for (i = 1, j = x; i <= width; i++) - { //出发点 + { //鍑哄彂鐐 if (game_map[i][j] != 0) { break; @@ -527,7 +527,7 @@ void play(int x, int y) printf("%c", game_map[i][j + k]); } } - n++; //改变方向; + n++; //鏀瑰彉鏂瑰悜; if (i == tx && j == ty) return; if (turn_0 == 0) @@ -558,7 +558,7 @@ void play(int x, int y) } void move_hnt(int a, int b, int c, char aa, char bb, char cc, int n) -{ //正常的汉诺塔递归程序 +{ //姝e父鐨勬眽璇哄閫掑綊绋嬪簭 if (n == 1) { //printf("from %c to %c",aa,cc); @@ -573,9 +573,9 @@ void move_hnt(int a, int b, int c, char aa, char bb, char cc, int n) } void init() { - int i, j, k; //初始化整个程序 + int i, j, k; //鍒濆鍖栨暣涓▼搴 char ch; - HideCursor(); //决定是否开启光标隐藏 + HideCursor(); //鍐冲畾鏄惁寮鍚厜鏍囬殣钘 cx = 1, cy = 1; lcx = cx, lcy = cy; mid_x = 7, mid_y = 60; @@ -583,34 +583,34 @@ void init() flag = 0, function, if_shift = 0, if_start = 0, if_input_password = 0, if_into_desktop = 0, if_game = 0; put_in_num = 0, if_input = 0; system("mode con cols=125 lines=60"); - printf("【程序信息】:\n"); - printf(" 程序名称:模拟笔记本电脑\n"); - printf(" 程序作者:404name\n"); - printf(" 完成时间:2020.2.01\n"); - printf(" 最后更新:2020.4.07\n"); - printf(" 项目地址:https://github.com/404name/winter (有问题可以去联系我)\n\n"); - printf("【更新记录】(2020)\n"); - printf(" 3.10 修复bug:不同平台显示乱码\n"); - printf(" 3.15 修复bug:关机仍能输入密码\n"); - printf(" 3.15 优化体验:加入光标隐藏(关闭前往init函数第一行)\n"); - printf(" 3.19 完善功能:加入可移动游戏简洁版,可自制地图,方法前往源程序my_map数组处查看\n"); - printf(" 4.07 完善功能:(桌面软件全部更新,功能完善,更加贴近xp系统。)\n"); - printf(" ·密码输入优化,输入的密码会在下一次输入变成不可视。\n"); - printf(" ·优化打砖块对角碰撞算法,更加真实。\n"); - printf(" ·新增“此电脑”可查看电脑配置.\n"); - printf(" ·新增关机画面。\n"); - printf(" ·加入蓝屏,更加快乐(点击浏览器触发)\n"); - printf(" ·优化更多细节.\n\n"); - printf("【程序补充】\n"); - printf(" ·这里差不多把坑填完了,之前反应的要有能操控的游戏,输入密码可见不真实,关机画面没模拟等等\n"); - printf(" ·都弄完了,至于网上冲浪,打lol,写编译器就有生之年吧。对了,因此我还特意加入了蓝屏(滑稽)。\n\n"); - printf("【程序说明】\n"); - printf(" ·有问题,有bug,不兼容,欢迎去git反馈交流\n"); - printf(" ·操作方法:↑ ↓ ← → 空格 控制光标即可。\n"); - printf(" ·进入程序电源键处按一次空格||输入密码WHJY即可登录||请在虚拟键盘上开启大写再输入||\n"); - printf(" ·欢迎使用XP模拟笔记本电脑!\n"); - printf(" 1.按两下回车进入(未能解决bug移动时周围可能会有蓝色的闪频)\n"); - printf(" 2.按1再按回车进入 (开启清除闪频,光标背景由蓝色变成底色)\n"); + printf("銆愮▼搴忎俊鎭戯細\n"); + printf(" 绋嬪簭鍚嶇О锛氭ā鎷熺瑪璁版湰鐢佃剳\n"); + printf(" 绋嬪簭浣滆咃細404name\n"); + printf(" 瀹屾垚鏃堕棿锛2020.2.01\n"); + printf(" 鏈鍚庢洿鏂帮細2020.4.07\n"); + printf(" 椤圭洰鍦板潃锛歨ttps://github.com/404name/winter 锛堟湁闂鍙互鍘昏仈绯绘垜锛塡n\n"); + printf("銆愭洿鏂拌褰曘戯紙2020锛塡n"); + printf(" 3.10 淇bug锛氫笉鍚屽钩鍙版樉绀轰贡鐮乗n"); + printf(" 3.15 淇bug锛氬叧鏈轰粛鑳借緭鍏ュ瘑鐮乗n"); + printf(" 3.15 浼樺寲浣撻獙锛氬姞鍏ュ厜鏍囬殣钘忥紙鍏抽棴鍓嶅線init鍑芥暟绗竴琛岋級\n"); + printf(" 3.19 瀹屽杽鍔熻兘锛氬姞鍏ュ彲绉诲姩娓告垙绠娲佺増锛屽彲鑷埗鍦板浘锛屾柟娉曞墠寰婧愮▼搴弇y_map鏁扮粍澶勬煡鐪媆n"); + printf(" 4.07 瀹屽杽鍔熻兘锛氾紙妗岄潰杞欢鍏ㄩ儴鏇存柊锛屽姛鑳藉畬鍠勶紝鏇村姞璐磋繎xp绯荤粺銆傦級\n"); + printf(" 路瀵嗙爜杈撳叆浼樺寲锛岃緭鍏ョ殑瀵嗙爜浼氬湪涓嬩竴娆¤緭鍏ュ彉鎴愪笉鍙銆俓n"); + printf(" 路浼樺寲鎵撶爾鍧楀瑙掔鎾炵畻娉曪紝鏇村姞鐪熷疄銆俓n"); + printf(" 路鏂板鈥滄鐢佃剳鈥濆彲鏌ョ湅鐢佃剳閰嶇疆.\n"); + printf(" 路鏂板鍏虫満鐢婚潰銆俓n"); + printf(" 路鍔犲叆钃濆睆锛屾洿鍔犲揩涔愶紙鐐瑰嚮娴忚鍣ㄨЕ鍙戯級\n"); + printf(" 路浼樺寲鏇村缁嗚妭.\n\n"); + printf("銆愮▼搴忚ˉ鍏呫慭n"); + printf(" 路杩欓噷宸笉澶氭妸鍧戝~瀹屼簡锛屼箣鍓嶅弽搴旂殑瑕佹湁鑳芥搷鎺х殑娓告垙锛岃緭鍏ュ瘑鐮佸彲瑙佷笉鐪熷疄锛屽叧鏈虹敾闈㈡病妯℃嫙绛夌瓑\n"); + printf(" 路閮藉紕瀹屼簡锛岃嚦浜庣綉涓婂啿娴紝鎵搇ol锛屽啓缂栬瘧鍣ㄥ氨鏈夌敓涔嬪勾鍚с傚浜嗭紝鍥犳鎴戣繕鐗规剰鍔犲叆浜嗚摑灞忥紙婊戠ń锛夈俓n\n"); + printf("銆愮▼搴忚鏄庛慭n"); + printf(" 路鏈夐棶棰橈紝鏈塨ug锛屼笉鍏煎锛屾杩庡幓git鍙嶉浜ゆ祦\n"); + printf(" 路鎿嶄綔鏂规硶锛氣啈 鈫 鈫 鈫 绌烘牸 鎺у埗鍏夋爣鍗冲彲銆俓n"); + printf(" 路杩涘叆绋嬪簭鐢垫簮閿鎸変竴娆$┖鏍紎|杈撳叆瀵嗙爜WHJY鍗冲彲鐧诲綍||璇峰湪铏氭嫙閿洏涓婂紑鍚ぇ鍐欏啀杈撳叆||\n"); + printf(" 路娆㈣繋浣跨敤XP妯℃嫙绗旇鏈數鑴戯紒\n"); + printf(" 1.鎸変袱涓嬪洖杞﹁繘鍏ワ紙鏈兘瑙e喅bug绉诲姩鏃跺懆鍥村彲鑳戒細鏈夎摑鑹茬殑闂锛塡n"); + printf(" 2.鎸1鍐嶆寜鍥炶溅杩涘叆 锛堝紑鍚竻闄ら棯棰戯紝鍏夋爣鑳屾櫙鐢辫摑鑹插彉鎴愬簳鑹诧級\n"); ch = getchar(); getchar(); if (ch == '1') @@ -637,7 +637,7 @@ void init() } void init_start() -{ // 开机 + 动态加载页面 + 打开输入密码权限 +{ // 寮鏈 + 鍔ㄦ佸姞杞介〉闈 + 鎵撳紑杈撳叆瀵嗙爜鏉冮檺 int i, l, j; gotoxy(0, 0); for (i = 0; i <= 16; i++) @@ -647,7 +647,7 @@ void init_start() } for (l = 0; l < 3; l++) - { //动态加载 + { //鍔ㄦ佸姞杞 for (i = 53; i <= 71; i = i + 2) { for (j = i - 4; j <= i; j = j + 2) @@ -675,13 +675,13 @@ void init_start() printf("%s\n", password[i]); Sleep(10); } - if_input = 1; // 9 77 18个 + if_input = 1; // 9 77 18涓 input_x = 9; input_y = 77; input_max = 18; } void load_desktop() -{ //加载桌面 +{ //鍔犺浇妗岄潰 int i; cx = 1, cy = 1; if_into_desktop = 1; @@ -695,12 +695,12 @@ void load_desktop() } } void end() -{ //加载关机 +{ //鍔犺浇鍏虫満 int i; - char temp1[30] = {"| 正在注销.... |"}; - char temp2[30] = {"| Windows 正在关机...|"}; + char temp1[30] = {"| 姝e湪娉ㄩ攢.... |"}; + char temp2[30] = {"| Windows 姝e湪鍏虫満...|"}; system("color 70"); - //Windows 正在关机... + //Windows 姝e湪鍏虫満... gotoxy(0, 0); if_input = 0; gotoxy(0, 0); @@ -722,14 +722,14 @@ void end() Sleep(10); } } -void blue_screen() //蓝屏 +void blue_screen() //钃濆睆 { int i, j, l = 2, r = 122, hei = 16, len = 124; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); gotoxy(0, 0); if_into_desktop = 0; for (i = 1; i <= hei; i++) - { //打印地图 + { //鎵撳嵃鍦板浘 for (j = 0; j <= len; j++) { if (j >= l && j <= r) @@ -771,7 +771,7 @@ void my_computer() } void load_more() -{ //更多信息 +{ //鏇村淇℃伅 int i; gotoxy(0, 0); @@ -783,7 +783,7 @@ void load_more() } } void load_game() -{ //加载汉诺塔程序 +{ //鍔犺浇姹夎濉旂▼搴 int i; if_into_desktop = 0; gotoxy(0, 0); @@ -795,14 +795,14 @@ void load_game() } if_game = 1; gotoxy(mid_y - 16, mid_x); - printf("请输入你要递归的汉诺塔数目_"); + printf("璇疯緭鍏ヤ綘瑕侀掑綊鐨勬眽璇哄鏁扮洰_"); input_x = mid_x; input_y = mid_y - 16 + 27; input_max = 1; if_input = 1; } int move() -{ //控制虚拟键盘的指针移动函数 +{ //鎺у埗铏氭嫙閿洏鐨勬寚閽堢Щ鍔ㄥ嚱鏁 int i, k, flag = 1; char ch, ch1, ch2; while (ch != ' ') @@ -814,7 +814,7 @@ int move() continue; lx = x, ly = y; if (ch == -32) - { //同时启用wasd 和上下左右键 //如果读取到第一个是-32那么 继续读取一个字符 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 //濡傛灉璇诲彇鍒扮涓涓槸-32閭d箞 缁х画璇诲彇涓涓瓧绗 ch1 = getch(); switch (ch1) { @@ -901,7 +901,7 @@ int move() } } -//----------------------------------------------------------------------------打砖块/----------------------------------------------------------------------------- +//----------------------------------------------------------------------------鎵撶爾鍧/----------------------------------------------------------------------------- void init_brick() { int l, r, i, j, a, b; @@ -911,8 +911,8 @@ void init_brick() width2 = 16, length2 = 124; wall = '#', food = '*', air = ' ', brick = 'O'; head2 = 0, tail2 = 0, max2 = 20, step2 = 0, if_miss = 0, food_num = 400, goal = 0, color = 0; - debug = 0, life = 3; //debug模式调成1手动开启 - temp_x2 = 2, temp_y2 = 2, menu_x = 18, menu_y = 68, left2 = 25, right2 = 35; //临时坐标 + debug = 0, life = 3; //debug妯″紡璋冩垚1鎵嬪姩寮鍚 + temp_x2 = 2, temp_y2 = 2, menu_x = 18, menu_y = 68, left2 = 25, right2 = 35; //涓存椂鍧愭爣 gotoxy(0, 0); memset(s, 0, sizeof(s)); r = length2; @@ -920,7 +920,7 @@ void init_brick() if (if_my_map == 0) { for (i = 0; i <= width2; i++) - { //生成地图模板 + { //鐢熸垚鍦板浘妯℃澘 for (j = 0; j <= length2; j++) { if (i == 0 || i == width2) @@ -941,7 +941,7 @@ void init_brick() { food_num = 400; while (food_num--) - { //贪吃蛇生成食物 + { //璐悆铔囩敓鎴愰鐗 a = rand() % width2; b = rand() % length2; if ((a >= width2 / 3 && a <= width2 * 2 / 3) && (b >= length2 * 2 / 5 && b <= length2 * 3 / 5) || a == 0 || b == 0) @@ -950,7 +950,7 @@ void init_brick() } } for (i = 0; i <= width2; i++) - { //布置砖块brick + { //甯冪疆鐮栧潡brick for (j = 0; j <= length2; j++) { if (((i >= width2 * 2 / 3 && i <= width2 * 2 / 3 + 1) && (j >= 0 && j <= length2 / 5)) || ((i >= width2 * 2 / 3 && i <= width2 * 2 / 3 + 1) && (j >= length2 * 4 / 5 && j <= length2))) @@ -971,7 +971,7 @@ void init_brick() l = 0; gotoxy(0, 0); for (i = 0; i <= width2; i++) - { //打印地图 + { //鎵撳嵃鍦板浘 for (j = 0; j <= length2; j++) { if (j >= l && j <= r) @@ -988,7 +988,7 @@ void init_brick() Sleep(50); printf("\n"); } - //构建初始位置以及速度和方向角度 + //鏋勫缓鍒濆浣嶇疆浠ュ強閫熷害鍜屾柟鍚戣搴 X2 = width2 - 6; Y2 = rand() % 5 + 23; old_x2 = (int)X2; @@ -996,13 +996,13 @@ void init_brick() s[step2].x2 = old_x2; s[step2].y2 = old_y2; V = 15; - Vx = -V * sin(C[3] * pi / 180.0); //速度向右向下为正方向 + Vx = -V * sin(C[3] * pi / 180.0); //閫熷害鍚戝彸鍚戜笅涓烘鏂瑰悜 Vy = V * cos(C[3] * pi / 180.0); gotoxy(4, 1); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); printf("life:"); for (i = 0; i < life; i++) - printf("■"); + printf("鈻"); } void end_brick() @@ -1018,7 +1018,7 @@ void end_brick() step2 += max2; gotoxy(s[step2].y2, s[step2].x2); map2[s[step2].x2][s[step2].y2]--; - if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //防止自己吃自己 + if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //闃叉鑷繁鍚冭嚜宸 printf("%c", air); s[step2].x2 = 0; s[step2].y2 = 0; @@ -1040,9 +1040,9 @@ void end_brick() if_into_desktop = 1; } -void manchange(char ch) //人为输入更新 +void manchange(char ch) //浜轰负杈撳叆鏇存柊 { - if (ch == 'a' || ch == 's' || ch == 'd' || ch == 'w' || ch == ' ' || ch == 'p' || ch == 'b') //目前只开放aswd + if (ch == 'a' || ch == 's' || ch == 'd' || ch == 'w' || ch == ' ' || ch == 'p' || ch == 'b') //鐩墠鍙紑鏀綼swd { if (ch == 'a' && map2[width2 - 1][left2 - 1] != wall) { @@ -1072,7 +1072,7 @@ void manchange(char ch) // else if (ch == 'p') { /*gotoxy(2, width2 + 5); - printf("游戏暂停,按'p'继续游戏"); + printf("娓告垙鏆傚仠锛屾寜'p'缁х画娓告垙"); ch2 = getch(); while (ch2 != 'p') { @@ -1089,7 +1089,7 @@ void manchange(char ch) // //function = move(&temp_x2,&temp_y2,0,width2,0,length2,1,1,ch); //function = move(&menu_x,&menu_y,18,24,68,68,2,0,ch); } -void autochange() //自动更新 +void autochange() //鑷姩鏇存柊 { int flag = 1, i; double t1, t2; @@ -1099,50 +1099,50 @@ void autochange() // double x2_t1; double x3_t1; double x4_t1; - //更具体请前往https://github.com/404name/winter 打砖块子目录下下载demo文件参考抛物线原理 - //这里的“轨迹”是存在“循环队列”的结构体中的 - //map数组一开始只打印一次,随后在原数组上的改变不会作用显示。 - //显示轨迹的其实还是打印空格,但不同的是颜色 - //消去轨迹也打印白色的空格:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); + //鏇村叿浣撹鍓嶅線https://github.com/404name/winter 鎵撶爾鍧楀瓙鐩綍涓嬩笅杞絛emo鏂囦欢鍙傝冩姏鐗╃嚎鍘熺悊 + //杩欓噷鐨勨滆建杩光濇槸瀛樺湪鈥滃惊鐜槦鍒椻濈殑缁撴瀯浣撲腑鐨 + //map鏁扮粍涓寮濮嬪彧鎵撳嵃涓娆★紝闅忓悗鍦ㄥ師鏁扮粍涓婄殑鏀瑰彉涓嶄細浣滅敤鏄剧ず銆 + //鏄剧ず杞ㄨ抗鐨勫叾瀹炶繕鏄墦鍗扮┖鏍硷紝浣嗕笉鍚岀殑鏄鑹 + //娑堝幓杞ㄨ抗涔熸墦鍗扮櫧鑹茬殑绌烘牸锛歋etConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); /*------------------------------------------------------- - 核心公式: X = X0 + Vx * t + 1/2 * VX * t * t; + 鏍稿績鍏紡锛 X = X0 + Vx * t + 1/2 * VX * t * t; Y = Y0 + Vy * t; - 核心思想: ·如果选择时间作为移动参考,则每秒会出现点相差太远 - 难以实现连续。 - ·这里反过来,以连续为前提,尝试找出每移动一个单位 - 需要多少时间,则能依次找出一个连续的曲线。 + 鏍稿績鎬濇兂锛 路濡傛灉閫夋嫨鏃堕棿浣滀负绉诲姩鍙傝冿紝鍒欐瘡绉掍細鍑虹幇鐐圭浉宸お杩 + 闅句互瀹炵幇杩炵画銆 + 路杩欓噷鍙嶈繃鏉ワ紝浠ヨ繛缁负鍓嶆彁锛屽皾璇曟壘鍑烘瘡绉诲姩涓涓崟浣 + 闇瑕佸灏戞椂闂达紝鍒欒兘渚濇鎵惧嚭涓涓繛缁殑鏇茬嚎銆 - 出现问题: c语言数组只能是整数,所以移动方向只能存在水平和竖直, - 不能依照运动方向实现往某个特定的角度移动一个单位。 - 并且要排除断节问题(即打印的曲线断断续续) + 鍑虹幇闂锛 c璇█鏁扮粍鍙兘鏄暣鏁帮紝鎵浠ョЩ鍔ㄦ柟鍚戝彧鑳藉瓨鍦ㄦ按骞冲拰绔栫洿锛 + 涓嶈兘渚濈収杩愬姩鏂瑰悜瀹炵幇寰鏌愪釜鐗瑰畾鐨勮搴︾Щ鍔ㄤ竴涓崟浣嶃 + 骞朵笖瑕佹帓闄ゆ柇鑺傞棶棰橈紙鍗虫墦鍗扮殑鏇茬嚎鏂柇缁画锛 - 解决方法: 把特移动方向移动单位分解到X,Y上。 - 分别算出 X 增加一个单位长度 应该增加的 Y 的距离 s1 <=> flag == 1 - Y 增加一个单位长度 应该增加的 X 的距离 s2 <=> flag == 2 + 瑙e喅鏂规硶锛 鎶婄壒绉诲姩鏂瑰悜绉诲姩鍗曚綅鍒嗚В鍒癤锛孻涓娿 + 鍒嗗埆绠楀嚭 X 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 Y 鐨勮窛绂 s1 <=> flag == 1 + Y 澧炲姞涓涓崟浣嶉暱搴 搴旇澧炲姞鐨 X 鐨勮窛绂 s2 <=> flag == 2 - 优先选择更短的min(s1,s2),然后以flag对应不同的模式作为下一次移动的基准。 - 这样操作能保证线段仅仅只在水平与竖直方向移动时线段仍能连续 + 浼樺厛閫夋嫨鏇寸煭鐨刴in锛坰1,s2),鐒跺悗浠lag瀵瑰簲涓嶅悓鐨勬ā寮忎綔涓轰笅涓娆$Щ鍔ㄧ殑鍩哄噯銆 + 杩欐牱鎿嶄綔鑳戒繚璇佺嚎娈典粎浠呭彧鍦ㄦ按骞充笌绔栫洿鏂瑰悜绉诲姩鏃剁嚎娈典粛鑳借繛缁 - 打个比方:一段斜率为2的直线 - x增加1 Y增加2你看,这里Y脱节了会一下子在Y上移动了2格。 - 但实际上我们看 - Y增加1 X实际上只增加0.5. - 所以一段曲线,他的微元构成的直线不管斜率多偏僻,都能连续打印。 - 这就是为什么取min(s1,s2)决定移动模式的原因。 - 这样能保证仅仅只在上移动一个单位int(Y),而int(X)是不增加的,浮点型的X又把量累计到下一次在判断。 + 鎵撲釜姣旀柟锛氫竴娈垫枩鐜囦负2鐨勭洿绾 + x澧炲姞1 Y澧炲姞2浣犵湅锛岃繖閲孻鑴辫妭浜嗕細涓涓嬪瓙鍦╕涓婄Щ鍔ㄤ簡2鏍笺 + 浣嗗疄闄呬笂鎴戜滑鐪 + Y澧炲姞1 X瀹為檯涓婂彧澧炲姞0.5. + 鎵浠ヤ竴娈垫洸绾匡紝浠栫殑寰厓鏋勬垚鐨勭洿绾夸笉绠℃枩鐜囧鍋忓兓锛岄兘鑳借繛缁墦鍗般 + 杩欏氨鏄负浠涔堝彇min锛坰1,s2锛夊喅瀹氱Щ鍔ㄦā寮忕殑鍘熷洜銆 + 杩欐牱鑳戒繚璇佷粎浠呭彧鍦ㄤ笂绉诲姩涓涓崟浣峣nt锛圷锛夛紝鑰宨nt锛圶锛夋槸涓嶅鍔犵殑锛屾诞鐐瑰瀷鐨刋鍙堟妸閲忕疮璁″埌涓嬩竴娆″湪鍒ゆ柇銆 - 最后实现: - X,Y用double储存,保证实际叠加能连续; - 而实际打印,是不能说(5,6.28)这样的浮点型能在c语言上打印,所以我们采用int整型的old_x,old_y来承接X,Y以便于打印在屏幕上。 + 鏈鍚庡疄鐜帮細 + X锛孻鐢╠ouble鍌ㄥ瓨锛屼繚璇佸疄闄呭彔鍔犺兘杩炵画锛 + 鑰屽疄闄呮墦鍗帮紝鏄笉鑳借锛5,6.28锛夎繖鏍风殑娴偣鍨嬭兘鍦╟璇█涓婃墦鍗帮紝鎵浠ユ垜浠噰鐢╥nt鏁村瀷鐨刼ld_x,old_y鏉ユ壙鎺锛孻浠ヤ究浜庢墦鍗板湪灞忓箷涓娿 - 我们按照时间为循环只能在屏幕上打印一串断断续续的类抛物线的点。 - 但我们按照走一个“方向单位”,依次类叠,我们就能得到一串连续的线。 + 鎴戜滑鎸夌収鏃堕棿涓哄惊鐜彧鑳藉湪灞忓箷涓婃墦鍗颁竴涓叉柇鏂画缁殑绫绘姏鐗╃嚎鐨勭偣銆 + 浣嗘垜浠寜鐓ц蛋涓涓滄柟鍚戝崟浣嶁濓紝渚濇绫诲彔锛屾垜浠氨鑳藉緱鍒颁竴涓茶繛缁殑绾裤 - 结果实现: 由于,算法偏向不严谨,可能会出现小部分开局断节bug,但随着循环推迟,后期能100%连续!! + 缁撴灉瀹炵幇锛 鐢变簬锛岀畻娉曞亸鍚戜笉涓ヨ皑锛屽彲鑳戒細鍑虹幇灏忛儴鍒嗗紑灞鏂妭bug锛屼絾闅忕潃寰幆鎺ㄨ繜锛屽悗鏈熻兘100%杩炵画锛侊紒 - 加入人为修正 + 鍔犲叆浜轰负淇 - 经测试小范围的数据能完美打印出物理抛物线!!! + 缁忔祴璇曞皬鑼冨洿鐨勬暟鎹兘瀹岀編鎵撳嵃鍑虹墿鐞嗘姏鐗╃嚎锛侊紒锛 ------------------------------------------------------------*/ x1_t1 = (-Vx + sqrt(Vx * Vx + 20)) / 10; @@ -1161,7 +1161,7 @@ void autochange() // temp = 10; t1 = t1 < temp ? t1 : temp; s1 = t1 * Vy; - //当Y2增加一个单位方向时 + //褰揧2澧炲姞涓涓崟浣嶆柟鍚戞椂 t2 = 1.0 / fabs(Vy); s2 = Vx * t2 + 0.5 * g * t2 * t2; if ((int)s1 == 0) @@ -1171,7 +1171,7 @@ void autochange() // else flag = s1 < s2 ? 1 : 2; - //选择最优进行处理 + //閫夋嫨鏈浼樿繘琛屽鐞 if (flag == 1) { X2 = X2 + Vx * t1 + 5 * t1 * t1; @@ -1186,14 +1186,14 @@ void autochange() // } /*else{ for( i = 0; i < 4; i++) - 放弃判断对角了选择其他方式解决(详细见开头注释) + 鏀惧純鍒ゆ柇瀵硅浜嗛夋嫨鍏朵粬鏂瑰紡瑙e喅锛堣缁嗚寮澶存敞閲婏級 } } */ //--------------------------------- old_x2 = (int)X2; old_y2 = (int)Y2; - //常规的判断碰撞 + //甯歌鐨勫垽鏂鎾 if (map2[old_x2 + 1][old_y2] == wall && Vx >= 0 && map2[old_x2][old_y2 + 1] != wall && map2[old_x2][old_y2 - 1] != wall) { color = (color + 1) % 5; @@ -1270,7 +1270,7 @@ void autochange() // } else if (map2[old_x2 + 1][old_y2 + 1] == brick && Vx > 0 && Vy > 0 || map2[old_x2 + 1][old_y2 - 1] == brick && Vx > 0 && Vy < 0 || map2[old_x2 - 1][old_y2 + 1] == brick && Vx < 0 && Vy > 0 || map2[old_x2 - 1][old_y2 - 1] == brick && Vx < 0 && Vy < 0) { - color = (color + 1) % 5; //对角碰改变颜色方便区分 + color = (color + 1) % 5; //瀵硅纰版敼鍙橀鑹叉柟渚垮尯鍒 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); if (Vx > 0 && Vy > 0) { @@ -1323,7 +1323,7 @@ void autochange() // SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 07); gotoxy(s[step2].y2, s[step2].x2); map2[s[step2].x2][s[step2].y2]--; - if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //防止自己吃自己 + if (map2[s[step2].x2][s[step2].y2] == air && !(s[step2].x2 == 0 && s[step2].y2 == 0)) //闃叉鑷繁鍚冭嚜宸 printf("%c", air); } s[step2].x2 = old_x2; @@ -1337,19 +1337,19 @@ void autochange() // { case 0: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 60); - break; //蓝色 + break; //钃濊壊 case 1: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 70); - break; //红色 + break; //绾㈣壊 case 2: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 40); - break; //绿色 + break; //缁胯壊 case 3: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); - break; //深蓝色 + break; //娣辫摑鑹 case 4: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 128); - break; //紫色 + break; //绱壊 } gotoxy(s[step2].y2, s[step2].x2); if (map2[s[step2].x2][s[step2].y2] == brick) @@ -1360,7 +1360,7 @@ void autochange() // if (debug == 0 && !(s[step2].x2 == 0 && s[step2].y2 == 0)) printf("%c", air); else - printf("%d", step2 % 10); //debug模式 + printf("%d", step2 % 10); //debug妯″紡 step2++; if (step2 >= max2) { @@ -1376,7 +1376,7 @@ void autochange() // cnt = 0; color = (color + 1) % 5; } - Sleep(150 - 2 * old_x2); //模拟下坠的时候速度加快--对应画面更新更快 + Sleep(150 - 2 * old_x2); //妯℃嫙涓嬪潬鐨勬椂鍊欓熷害鍔犲揩--瀵瑰簲鐢婚潰鏇存柊鏇村揩 if (map[old_x2][old_y2] == wall) { Vx = -Vx; @@ -1392,10 +1392,10 @@ void autochange() // end_brick(); } } -//-----------------------------------------------------------------------------打砖块/----------------------------------------------------------------------------- +//-----------------------------------------------------------------------------鎵撶爾鍧/----------------------------------------------------------------------------- void put_letter_to_computer(char letter) -{ //把字符传输给电脑屏幕,如果电脑if_input为零就禁止显示 +{ //鎶婂瓧绗︿紶杈撶粰鐢佃剳灞忓箷锛屽鏋滅數鑴慽f_input涓洪浂灏辩姝㈡樉绀 int i; if (if_input == 1 && put_in_num < input_max) { @@ -1418,11 +1418,11 @@ void put_letter_to_computer(char letter) printf("%s", put_in_computer); } void put_function_to_computer(int function) -{ //电脑处理相应共呢 1 ~ 返回 2 ~删除 3确认 4shift 5上 6左 7下 8又 9开机 +{ //鐢佃剳澶勭悊鐩稿簲鍏卞憿 1 ~ 杩斿洖 2 ~鍒犻櫎 3纭 4shift 5涓 6宸 7涓 8鍙 9寮鏈 int ncx, ncy; char ch; if (function == 9) - { //开机 + { //寮鏈 system("color 70"); if (if_start == 0) { @@ -1441,7 +1441,7 @@ void put_function_to_computer(int function) } } if (function == 2 && put_in_num > 0 && if_input == 1) - { //删除字符,但不可越界 + { //鍒犻櫎瀛楃锛屼絾涓嶅彲瓒婄晫 put_in_num--; put_in_computer[put_in_num] = '\0'; if (if_input_password == 1) @@ -1457,14 +1457,14 @@ void put_function_to_computer(int function) } } if (function == 4) - { //切换大小写 + { //鍒囨崲澶у皬鍐 if (if_shift) if_shift = 0; else if_shift = 1; } if (function == 3 && if_input == 1 && if_game == 0) - { //确认对应不同模式下的不同功能 + { //纭瀵瑰簲涓嶅悓妯″紡涓嬬殑涓嶅悓鍔熻兘 if (strcmp(password_0, put_in_computer) == 0) { if_input_password = 0; @@ -1478,7 +1478,7 @@ void put_function_to_computer(int function) put_in_num = 0; put_in_computer[put_in_num] = '\0'; gotoxy(input_y, input_x); - printf("密 码 错 误 !!!"); + printf("瀵 鐮 閿 璇 锛侊紒锛"); gotoxy(input_y, input_x); Sleep(1200); printf(" "); @@ -1511,10 +1511,10 @@ void put_function_to_computer(int function) put_in_num = 0; put_in_computer[0] = '\0'; } - //if(if_game == 1 && function >= 5 && function <= 8)) 移动类型游戏暂未开放 (3.19更新可用了) + //if(if_game == 1 && function >= 5 && function <= 8)) 绉诲姩绫诲瀷娓告垙鏆傛湭寮鏀 (3.19鏇存柊鍙敤浜) else if (if_game == 2 && function >= 5 && function <= 8) { - //5上 6左 7下 8又 + //5涓 6宸 7涓 8鍙 ch = 'a'; switch (function) { @@ -1536,12 +1536,12 @@ void put_function_to_computer(int function) } else if (function == 3 && if_into_desktop) { - if (computer_map[cx][cy] == 1) //1 - 汉诺塔 2 - 打砖块 + if (computer_map[cx][cy] == 1) //1 - 姹夎濉 2 - 鎵撶爾鍧 { load_game(); if_game = 1; } - else if (computer_map[cx][cy] == 2) //打砖块 + else if (computer_map[cx][cy] == 2) //鎵撶爾鍧 { if_into_desktop = 0; init_brick(); @@ -1549,10 +1549,10 @@ void put_function_to_computer(int function) system("color 07"); } else if (computer_map[cx][cy] == 3) - { //(我的电脑) + { //锛堟垜鐨勭數鑴戯級 my_computer(); } - else if (computer_map[cx][cy] == 4) // 更多信息 + else if (computer_map[cx][cy] == 4) // 鏇村淇℃伅 { load_more(); getch(); @@ -1561,7 +1561,7 @@ void put_function_to_computer(int function) load_desktop(); } else if (computer_map[cx][cy] == 5) - { //浏览器(因为不支持,所以使用就蓝屏(滑稽)) + { //娴忚鍣紙鍥犱负涓嶆敮鎸侊紝鎵浠ヤ娇鐢ㄥ氨钃濆睆锛堟粦绋斤級锛 blue_screen(); } } @@ -1581,37 +1581,37 @@ void put_function_to_computer(int function) } } if (function == 1 && if_into_desktop) - { //返回 + { //杩斿洖 load_desktop(); } } int main() { - if_my_map = 0; //是否加载自己设置的关卡,改成1后 my_map数组就是内置地图 + if_my_map = 0; //鏄惁鍔犺浇鑷繁璁剧疆鐨勫叧鍗★紝鏀规垚1鍚 my_map鏁扮粍灏辨槸鍐呯疆鍦板浘 HideCursor(); init(); - /*load_desktop(); //直接进入桌面 + /*load_desktop(); //鐩存帴杩涘叆妗岄潰 if_start = 1; if_into_desktop = 1;*/ HideCursor(); while (1) - { //主循环w - if (if_game == 2) //打砖块 + { //涓诲惊鐜痺 + if (if_game == 2) //鎵撶爾鍧 autochange(); if (kbhit()) { - flag = move(); //move提取读取的键盘按键并判断类型 + flag = move(); //move鎻愬彇璇诲彇鐨勯敭鐩樻寜閿苟鍒ゆ柇绫诲瀷 switch (flag) { case 0: - break; //暂无效果的按键 + break; //鏆傛棤鏁堟灉鐨勬寜閿 case 1: put_letter_to_computer(letter); - break; //返回字符型按键给电脑 + break; //杩斿洖瀛楃鍨嬫寜閿粰鐢佃剳 case 2: put_function_to_computer(function); - break; //返回功能型按键给电脑 + break; //杩斿洖鍔熻兘鍨嬫寜閿粰鐢佃剳 } } } diff --git "a/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\347\273\217\345\205\270\347\256\200\346\264\201\347\211\210\357\274\211/win10\347\211\210/\347\250\213\345\272\217\346\226\207\344\273\266.c" "b/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\347\273\217\345\205\270\347\256\200\346\264\201\347\211\210\357\274\211/win10\347\211\210/\347\250\213\345\272\217\346\226\207\344\273\266.c" index 66d0ad2..ba517bb 100644 --- "a/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\347\273\217\345\205\270\347\256\200\346\264\201\347\211\210\357\274\211/win10\347\211\210/\347\250\213\345\272\217\346\226\207\344\273\266.c" +++ "b/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254/\346\250\241\346\213\237\347\254\224\350\256\260\346\234\254\357\274\210\347\273\217\345\205\270\347\256\200\346\264\201\347\211\210\357\274\211/win10\347\211\210/\347\250\213\345\272\217\346\226\207\344\273\266.c" @@ -1,26 +1,26 @@ /*--------------------------------------------------------- -用VC的一定要选则 Win32 Console Application工程 +鐢╒C鐨勪竴瀹氳閫夊垯 Win32 Console Application宸ョ▼ -2.25最新版本 -未加入新功能 -修复了一些bug,适配了所有编译器。。。 -可直接运行exe或者赋值。 +2.25鏈鏂扮増鏈 +鏈姞鍏ユ柊鍔熻兘 +淇浜嗕竴浜沚ug锛岄傞厤浜嗘墍鏈夌紪璇戝櫒銆傘傘 +鍙洿鎺ヨ繍琛宔xe鎴栬呰祴鍊笺 -程序: 模拟笔记本电脑 (纯C语言,可直接编译器运行) -作者: 0.0 -说明: 1.这个程序本意在模拟电脑的基本功能,重在实现键盘的输入与键盘的控制,模拟开机,输密,打开软件,关闭电脑,所以其他功能暂没开发,不用太失望。 - 2.不同的编码会有不同的长度显示,但运行出来的效果都是一样的 - 3.代码规范不到位,见谅。 - 4.大一上写的,一般写小游戏练手,也琢磨到一些特殊的处理方法,所以对一些功能处理上有一些难理解的地方。 - 5.emmm,没啥了 +绋嬪簭锛 妯℃嫙绗旇鏈數鑴 锛堢函C璇█锛屽彲鐩存帴缂栬瘧鍣ㄨ繍琛岋級 +浣滆咃細 0.0 +璇存槑锛 1.杩欎釜绋嬪簭鏈剰鍦ㄦā鎷熺數鑴戠殑鍩烘湰鍔熻兘锛岄噸鍦ㄥ疄鐜伴敭鐩樼殑杈撳叆涓庨敭鐩樼殑鎺у埗锛屾ā鎷熷紑鏈猴紝杈撳瘑锛屾墦寮杞欢锛屽叧闂數鑴戯紝鎵浠ュ叾浠栧姛鑳芥殏娌″紑鍙戯紝涓嶇敤澶け鏈涖 + 2.涓嶅悓鐨勭紪鐮佷細鏈変笉鍚岀殑闀垮害鏄剧ず锛屼絾杩愯鍑烘潵鐨勬晥鏋滈兘鏄竴鏍风殑 + 3.浠g爜瑙勮寖涓嶅埌浣嶏紝瑙佽皡銆 + 4.澶т竴涓婂啓鐨勶紝涓鑸啓灏忔父鎴忕粌鎵嬶紝涔熺悽纾ㄥ埌涓浜涚壒娈婄殑澶勭悊鏂规硶锛屾墍浠ュ涓浜涘姛鑳藉鐞嗕笂鏈変竴浜涢毦鐞嗚В鐨勫湴鏂广 + 5.emmm锛屾病鍟ヤ簡 ---------------------------------------------------------*/ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include #include #include -char start[20][300] = { //图形界面 - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, +char start[20][300] = { //鍥惧舰鐣岄潰 + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ /"}, {" \\ /"}, {" \\ /"}, @@ -32,50 +32,50 @@ {" \\ \\/ \\/ | | | |_| |_| \\/\\/ __/ /"}, {" \\ /"}, {" \\ _____________________ /"}, - {" \\ │ │ /"}, - {" \\ └────────────────────┘ /"}, + {" \\ 鈹 鈹 /"}, + {" \\ 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ /"}, - {" \\ Copyright ΘMicrosoft Corporation Microsoft* /"}, + {" \\ Copyright 螛Microsoft Corporation Microsoft* /"}, {" \\ __________________________________________________________________________________________/"}}; char password[20][300] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ /"}, {" \\ ------------------------------------------------------------------------------------------------------------------ /"}, {" \\ /"}, {" \\ | /"}, {" \\ | /"}, - {" \\ | ┌───────────────────────────────────────────── /"}, - {" \\ /~/~/ | │┌─────┐ Administrator /"}, - {" \\ /~/~/ __XP | ││ [] │ 输入密码 /"}, - {" \\ \\ /\\ / - _ _| _ ~ ~ /_ | │└─────┘ 【| 】ck[→] /"}, - {" \\ \\/ \\/ | | | |_| |_| \\/\\/ __/ | └─────────────────────────────────────── /"}, + {" \\ | 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, + {" \\ /~/~/ | 鈹傗攲鈹鈹鈹鈹鈹鈹 Administrator /"}, + {" \\ /~/~/ __XP | 鈹傗攤 [] 鈹 杈撳叆瀵嗙爜 /"}, + {" \\ \\ /\\ / - _ _| _ ~ ~ /_ | 鈹傗敂鈹鈹鈹鈹鈹鈹 銆恷 銆慶k[鈫抅 /"}, + {" \\ \\/ \\/ | | | |_| |_| \\/\\/ __/ | 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ | /"}, - {" \\ 要开始,请单击您的用户名 | /"}, + {" \\ 瑕佸紑濮嬶紝璇峰崟鍑绘偍鐨勭敤鎴峰悕 | /"}, {" \\ | /"}, {" \\ /"}, {" \\ ---------------------------------------------------------------------------------------- /"}, {" \\ __________________________________________________________________________________________/"}}; char desktop[20][300] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" \\ ───── ───── ───── ┌────┐ ┌────┐ /"}, - {" \\ \\ [] \\ \\ \\ \\ \\ │ │ │ing │ /"}, - {" \\ ───── ───── ───── └────┘ └────┘ /"}, - {" \\ 小游戏 垃圾桶 计算器 相关 待开发 /"}, - {" \\ ───── /"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" \\ 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹屸攢鈹鈹鈹鈹 鈹屸攢鈹鈹鈹鈹 /"}, + {" \\ \\ [] \\ \\ \\ \\ \\ 鈹 鈹 鈹俰ng 鈹 /"}, + {" \\ 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹鈹鈹鈹鈹 鈹斺攢鈹鈹鈹鈹 鈹斺攢鈹鈹鈹鈹 /"}, + {" \\ 灏忔父鎴 鍨冨溇妗 璁$畻鍣 鐩稿叧 寰呭紑鍙 /"}, + {" \\ 鈹鈹鈹鈹鈹 /"}, {" \\ \\ \\ /"}, - {" \\ ───── __ --------------- __ __ /"}, - {" \\ IE浏览器__-- --- __ -------_ -------_------____ /"}, + {" \\ 鈹鈹鈹鈹鈹 __ --------------- __ __ /"}, + {" \\ IE娴忚鍣╛_-- --- __ -------_ -------_------____ /"}, {" \\ ____ __--__ -- __ -------_ --- - __ --- __ --------------______ /"}, {" \\__ -------_--__ ------- __ ---------- __ ------ __ ------ __ --- __ ---------____ /"}, {" \\ -------_---__ ------- _---- __ -------_ ---_ -------_ -_ ----------_ -_---_ -_ ------_ -_ /"}, {" \\--__ -- __ ----- __ ------ __ -------_ --- ---- __ -------_ -_ ---------_ -_ ------_ -_ ------ /"}, {" \\ -_--__ ------- _---- __ -------_ ------- __ -------_ -- __ -------_ -_ --------__---_ -_ ------/"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | | 12:00 /"}, + {" \\ 寮濮 \\ qq2010 | | 12:00 /"}, {" \\ __________________________________________________________________________________________/"}}; char game_hnt[20][300] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" \\ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ /"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" \\ 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ /"}, {" \\ /"}, {" \\ /"}, @@ -87,48 +87,48 @@ char game_hnt[20][300] = { {" \\ /"}, {" \\ /"}, {" \\ /"}, - {" \\ └───────────────────────────────────────────────────────────────────────────────────────────┘ /"}, + {" \\ 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 汉诺塔自动演示小游戏 | | 12:08 /"}, + {" \\ 寮濮 \\ qq2010 | 姹夎濉旇嚜鍔ㄦ紨绀哄皬娓告垙 | | 12:08 /"}, {" \\ __________________________________________________________________________________________/"}}; char thinking[30][300] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" \\ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ /"}, - {" \\ 这里是感想: /"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" \\ 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, + {" \\ 杩欓噷鏄劅鎯筹細 /"}, {" \\ /"}, - {" \\ 寒假太颓废了,没劲学习,游戏玩腻,然后开始发呆。安静下来时才有灵感 ,看着笔记本,就想着我也编一个电脑系统吧 /"}, + {" \\ 瀵掑亣澶搴熶簡锛屾病鍔插涔狅紝娓告垙鐜╄吇锛岀劧鍚庡紑濮嬪彂鍛嗐傚畨闈欎笅鏉ユ椂鎵嶆湁鐏垫劅 锛岀湅鐫绗旇鏈紝灏辨兂鐫鎴戜篃缂栦竴涓數鑴戠郴缁熷惂 /"}, {" \\ /"}, - {" \\ 就想把大一上学到的一些东西总着来练练手。。然后发现写电脑系统就是痴人说梦了,我还是写个模拟计算机吧。 /"}, + {" \\ 灏辨兂鎶婂ぇ涓涓婂鍒扮殑涓浜涗笢瑗挎荤潃鏉ョ粌缁冩墜銆傘傜劧鍚庡彂鐜板啓鐢佃剳绯荤粺灏辨槸鐥翠汉璇存ⅵ浜嗭紝鎴戣繕鏄啓涓ā鎷熻绠楁満鍚с /"}, {" \\ /"}, - {" \\ 对着自己笔记本的键盘一个一个的还原,然后思考如何体现屏幕,如何移动键盘,如何读取键盘把信息传给我的 /"}, + {" \\ 瀵圭潃鑷繁绗旇鏈殑閿洏涓涓竴涓殑杩樺師锛岀劧鍚庢濊冨浣曚綋鐜板睆骞曪紝濡備綍绉诲姩閿洏锛屽浣曡鍙栭敭鐩樻妸淇℃伅浼犵粰鎴戠殑 /"}, {" \\ /"}, - {" \\ 虚拟电脑,如何模拟开机实现基本功能 ,一口气写完真心爽,最后想做互动游戏的,但这斜着的屏幕,emmm /"}, + {" \\ 铏氭嫙鐢佃剳锛屽浣曟ā鎷熷紑鏈哄疄鐜板熀鏈姛鑳 锛屼竴鍙f皵鍐欏畬鐪熷績鐖斤紝鏈鍚庢兂鍋氫簰鍔ㄦ父鎴忕殑锛屼絾杩欐枩鐫鐨勫睆骞曪紝emmm /"}, {" \\ /"}, - {" \\ 所以最后电脑只能运行汉诺塔,其他功能实现也简单,但还是把时间放在我突然又燃起的学习小火苗上吧/"}, - {" \\ └───────────────────────────────────────────────────────────────────────────────────────────┘ /"}, + {" \\ 鎵浠ユ渶鍚庣數鑴戝彧鑳借繍琛屾眽璇哄锛屽叾浠栧姛鑳藉疄鐜颁篃绠鍗曪紝浣嗚繕鏄妸鏃堕棿鏀惧湪鎴戠獊鐒跺張鐕冭捣鐨勫涔犲皬鐏嫍涓婂惂/"}, + {" \\ 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 /"}, {" \\ _____________________________________________________________________________________________ /"}, - {" \\ 开始 \\ qq2010 | 感想.txt | | 12:15 /"}, + {" \\ 寮濮 \\ qq2010 | 鎰熸兂.txt | | 12:15 /"}, {" \\ __________________________________________________________________________________________/"}}; char ending[30][300] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ /"}, - {" \\ 正在关机 /"}, + {" \\ 姝e湪鍏虫満 /"}, {" \\ /"}, - {" \\ 请确保你的数据已保存 /"}, + {" \\ 璇风‘淇濅綘鐨勬暟鎹凡淇濆瓨 /"}, {" \\ /"}, {" \\ 0.0 /"}, {" \\ /"}, - {" \\ 正在损失数据 /"}, + {" \\ 姝e湪鎹熷け鏁版嵁 /"}, {" \\ /"}, - {" \\ 电脑格式化成功 /"}, + {" \\ 鐢佃剳鏍煎紡鍖栨垚鍔 /"}, {" \\ /"}, - {" \\ 感谢使用 Xp /"}, + {" \\ 鎰熻阿浣跨敤 Xp /"}, {" \\ /"}, {" \\ /"}, {" \\ /"}, {" \\ __________________________________________________________________________________________/"}}; char map[10000][2000] = { - {"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"}, + {"鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, {" \\ /"}, {" \\ /"}, {" \\ /"}, @@ -145,32 +145,32 @@ char map[10000][2000] = { {" \\ /"}, {" \\ /"}, {" \\ __________________________________________________________________________________________/"}, - {" ┌──────────────────────────────────────────────────────────────────────────────────────────┐"}, - {" │ ──── │"}, - {" │──────────────────────────────────────────────────────────────────────────────────────────│"}, - {" │┌─────┐ ┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┐ │"}, - {" ││ Esc │ │ F1│ F2│ F3│ F4││ F5│ F6│ F7│ F8││ F9│F10│F11│F12││Prt│Scr│Pau│ ┌┐ ┌┐ ┌┐ ┌┐ │"}, - {" │└─────┘ └───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┘ └┘ └┘ └┘ └┘ │"}, - {" │┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐┌───┬───┬───┐┌───┬───┬───┬───┐│"}, - {" ││ `~ │ 1!│ 2@│ 3#│ 4$│ 5%│ 6^│ 7&│ 8*│ 9(│ 0)│ -─│ =+│ ←--││Ins│Hom│Pgu││Num│ / │ * │ - ││"}, - {" │├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤├───┼───┼───┤├───┼───┼───┼───┤│"}, - {" ││ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [{│ ]}│ \\| ││Del│End│Pgd││ 7 │ 8 │ 9 │ ││"}, - {" │├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴────┤└───┴───┴───┘├───┼───┼───┤ + ││"}, - {" ││ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ;:│ \'\"│ Enter │ │ 4 │ 5 │ 6 │ ││"}, - {" │├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───────┤ ┌───┐ ├───┼───┼───┼───┤│"}, - {" ││ Shift │ Z │ X │ C │ V │ B │ N │ M │ ,<│ .>│ /?│ Shift │ │ ↑│ │ 1 │ 2 │ 3 │ │││"}, - {" │├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───╪───┬──────┤┌───┼───┼───┐├───┴───┼───┤ │││"}, - {" ││ Ctr│ win│ Alt│ ──── │ Alt│ Fn│ Ctrl ││← │ ↓│ →││ 0ins │.de│←┘││"}, - {" │└────┴────┴────┴───────────────────────────┴────┴───┴──────┘└───┴───┴───┘└───────┴───┴───┘│"}, - {" │ ┌───────────────────────────────┐ │"}, - {" │ │ │ │"}, - {" │ │ │ │"}, - {" │ │───────────────┬───────────────│ │"}, - {" │ └───────────────┴───────────────┘ │"}, - {" └──────────────────────────────────────────────────────────────────────────────────────────┘"}}; -//功能数组 + {" 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" 鈹 鈹鈹鈹鈹 鈹"}, + {" 鈹傗攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}, + {" 鈹傗攲鈹鈹鈹鈹鈹鈹 鈹屸攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹 鈹"}, + {" 鈹傗攤 Esc 鈹 鈹 F1鈹 F2鈹 F3鈹 F4鈹傗攤 F5鈹 F6鈹 F7鈹 F8鈹傗攤 F9鈹侳10鈹侳11鈹侳12鈹傗攤Prt鈹係cr鈹侾au鈹 鈹屸攼 鈹屸攼 鈹屸攼 鈹屸攼 鈹"}, + {" 鈹傗敂鈹鈹鈹鈹鈹鈹 鈹斺攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹 鈹斺敇 鈹斺敇 鈹斺敇 鈹斺敇 鈹"}, + {" 鈹傗攲鈹鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攲鈹鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹攢鈹鈹鈹愨攤"}, + {" 鈹傗攤 `~ 鈹 1!鈹 2@鈹 3#鈹 4$鈹 5%鈹 6^鈹 7&鈹 8*鈹 9(鈹 0)鈹 -鈹鈹 =+鈹 鈫--鈹傗攤Ins鈹侶om鈹侾gu鈹傗攤Num鈹 / 鈹 * 鈹 - 鈹傗攤"}, + {" 鈹傗敎鈹鈹鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹鈹鈹も敎鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹も敎鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹も攤"}, + {" 鈹傗攤 Tab 鈹 Q 鈹 W 鈹 E 鈹 R 鈹 T 鈹 Y 鈹 U 鈹 I 鈹 O 鈹 P 鈹 [{鈹 ]}鈹 \\| 鈹傗攤Del鈹侲nd鈹侾gd鈹傗攤 7 鈹 8 鈹 9 鈹 鈹傗攤"}, + {" 鈹傗敎鈹鈹鈹鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹攢鈹鈹鈹鈹も敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敎鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹 + 鈹傗攤"}, + {" 鈹傗攤 Caps 鈹 A 鈹 S 鈹 D 鈹 F 鈹 G 鈹 H 鈹 J 鈹 K 鈹 L 鈹 ;:鈹 \'\"鈹 Enter 鈹 鈹 4 鈹 5 鈹 6 鈹 鈹傗攤"}, + {" 鈹傗敎鈹鈹鈹鈹鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹敩鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹鈹 鈹屸攢鈹鈹鈹 鈹溾攢鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹も攤"}, + {" 鈹傗攤 Shift 鈹 Z 鈹 X 鈹 C 鈹 V 鈹 B 鈹 N 鈹 M 鈹 ,<鈹 .>鈹 /?鈹 Shift 鈹 鈹 鈫戔攤 鈹 1 鈹 2 鈹 3 鈹 鈹傗攤鈹"}, + {" 鈹傗敎鈹鈹鈹鈹鈹攢鈹鈹粹攢鈹攢鈹粹攢鈹鈹敶鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹敶鈹鈹鈹鈺攢鈹鈹鈹攢鈹鈹鈹鈹鈹鈹も攲鈹鈹鈹鈹尖攢鈹鈹鈹尖攢鈹鈹鈹愨敎鈹鈹鈹鈹粹攢鈹鈹鈹尖攢鈹鈹鈹 鈹傗攤鈹"}, + {" 鈹傗攤 Ctr鈹 win鈹 Alt鈹 鈹鈹鈹鈹 鈹 Alt鈹 Fn鈹 Ctrl 鈹傗攤鈫 鈹 鈫撯攤 鈫掆攤鈹 0ins 鈹.de鈹傗啇鈹樷攤鈹"}, + {" 鈹傗敂鈹鈹鈹鈹鈹粹攢鈹鈹鈹鈹粹攢鈹鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹粹攢鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹樷敂鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷敂鈹鈹鈹鈹鈹鈹鈹鈹粹攢鈹鈹鈹粹攢鈹鈹鈹樷攤"}, + {" 鈹 鈹屸攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 鈹"}, + {" 鈹 鈹 鈹 鈹"}, + {" 鈹 鈹 鈹 鈹"}, + {" 鈹 鈹傗攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 鈹"}, + {" 鈹 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹粹攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹 鈹"}, + {" 鈹斺攢鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹"}}; +//鍔熻兘鏁扮粍 int keyboard[20][30] = { - //把键盘看成一个地图让move函数在上面移动返回的数值对应下面的 board_place[120][5]是对应按键的全部信息 + //鎶婇敭鐩樼湅鎴愪竴涓湴鍥捐move鍑芥暟鍦ㄤ笂闈㈢Щ鍔ㄨ繑鍥炵殑鏁板煎搴斾笅闈㈢殑 board_place[120][5]鏄搴旀寜閿殑鍏ㄩ儴淇℃伅 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 104, 104, 104, 104}, {0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37}, @@ -179,14 +179,14 @@ int keyboard[20][30] = { {0, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 86, 86, 0, 87, 0, 88, 89, 90, 91}, {0, 92, 93, 94, 95, 95, 95, 95, 95, 95, 95, 96, 97, 98, 98, 99, 100, 101, 102, 102, 103, 91}, }; -int next[9][2] = {{0}, {0}, {0}, {0}, {0}, {-1, 0}, {0, -1}, {1, 0}, {0, 1}}; //给键盘传给虚拟键盘的键盘控制虚拟电脑用 -int computer_map[3][8] = {{0, 0, 0, 0, 0}, {0, 1, 2, 3, 4}, {5, 0, 0, 0, 0}}; //对应的移动操作记录 +int next[9][2] = {{0}, {0}, {0}, {0}, {0}, {-1, 0}, {0, -1}, {1, 0}, {0, 1}}; //缁欓敭鐩樹紶缁欒櫄鎷熼敭鐩樼殑閿洏鎺у埗铏氭嫙鐢佃剳鐢 +int computer_map[3][8] = {{0, 0, 0, 0, 0}, {0, 1, 2, 3, 4}, {5, 0, 0, 0, 0}}; //瀵瑰簲鐨勭Щ鍔ㄦ搷浣滆褰 int computer_map_place[6][2] = {{0}, {2, 9}, {2, 19}, {2, 29}, {2, 40}, {6, 12}}; int cx , cy , tcx, tcy, lcx, lcy; -int board_place[120][5] = { //这是按键的信息 下标依次对应 -返回值 -按下shift下的返回值2 -键盘字符长度 -字符坐标x -y - {0, 0, 0, 0, 0}, //第一项如果是字符那么那就是返回字符 如果是数字1-9那么就是功能按键功能对应如下 +int board_place[120][5] = { //杩欐槸鎸夐敭鐨勪俊鎭 涓嬫爣渚濇瀵瑰簲 -杩斿洖鍊 -鎸変笅shift涓嬬殑杩斿洖鍊2 -閿洏瀛楃闀垮害 -瀛楃鍧愭爣x -y + {0, 0, 0, 0, 0}, //绗竴椤瑰鏋滄槸瀛楃閭d箞閭e氨鏄繑鍥炲瓧绗 濡傛灉鏄暟瀛1-9閭d箞灏辨槸鍔熻兘鎸夐敭鍔熻兘瀵瑰簲濡備笅 {1, 1, 3, 21, 19}, //1-10 - {0, 0, 2, 21, 28}, //1 ~ 返回 2 ~删除 3确认 4shift 5上 6左 7下 8又 9开机 + {0, 0, 2, 21, 28}, //1 ~ 杩斿洖 2 ~鍒犻櫎 3纭 4shift 5涓 6宸 7涓 8鍙 9寮鏈 {0, 0, 2, 21, 32}, {0, 0, 2, 21, 36}, {0, 0, 2, 21, 40}, @@ -290,25 +290,25 @@ int cx , cy , tcx, tcy, lcx, lcy; {'.', '.', 4, 32, 99}, {9, 9, 4, 18, 99}}; -// 程序功能变量 -int flag = 0, function, if_shift = 0, if_start = 0, if_input_password = 0, if_into_desktop = 0, if_game = 0; //0表示输入无效,1表示是输入电脑键 2表示是功能键, +// 绋嬪簭鍔熻兘鍙橀噺 +int flag = 0, function, if_shift = 0, if_start = 0, if_input_password = 0, if_into_desktop = 0, if_game = 0; //0琛ㄧず杈撳叆鏃犳晥锛1琛ㄧず鏄緭鍏ョ數鑴戦敭 2琛ㄧず鏄姛鑳介敭锛 char letter; int x, y, tx, ty, num, lx, ly; char temp[6] = {"====="}; char put_in_computer[20]; -char password_0[20] = {"WHJY"}; // 密码 +char password_0[20] = {"WHJY"}; // 瀵嗙爜 int put_in_num = 0, if_input = 0, input_x, input_y, input_max; -// 汉诺塔游戏变量 +// 姹夎濉旀父鎴忓彉閲 int mid_x = 7, mid_y = 60; int len, width, left, mid, right, time; int ttx = 10, tty = 10; char game_map[80][1000]; -int game_next[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //上0下1左2右3; +int game_next[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //涓0涓1宸2鍙3锛 -int turn[2][3] = {{0, 3, 1}, //a -> b b -> c a -> c 上右下 - {0, 2, 1}}; //b -> a c -> b c -> a 上左下 //实现自动移动的路线储存 +int turn[2][3] = {{0, 3, 1}, //a -> b b -> c a -> c 涓婂彸涓 + {0, 2, 1}}; //b -> a c -> b c -> a 涓婂乏涓 //瀹炵幇鑷姩绉诲姩鐨勮矾绾垮偍瀛 -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -317,7 +317,7 @@ char game_map[80][1000]; SetConsoleCursorPosition(handle, pos); } void init_game(int n) -{ //初始化汉诺塔 +{ //鍒濆鍖栨眽璇哄 int i, j; time = 50 / n; left = 1, mid = 2 * (n + 1), right = mid + 2 * n + 1; @@ -336,12 +336,12 @@ void init_game(int n) if (num && (i >= 1 && i <= width - 1) && j % 2 != 0 && j < mid) { game_map[i][j] = -95; - game_map[i][j + 1] = -10; //打印 ■ ■占2个字节可以拆开来 + game_map[i][j + 1] = -10; //鎵撳嵃 鈻 鈻犲崰2涓瓧鑺傚彲浠ユ媶寮鏉 num--; } } } - //容易出现东西卡顿 + //瀹规槗鍑虹幇涓滆タ鍗¢】 for (i = 0; i <= width; i++) { gotoxy(tty, ttx + i); @@ -352,14 +352,14 @@ void init_game(int n) } void play(int x, int y) -{ //显示汉诺塔移动轨迹 +{ //鏄剧ず姹夎濉旂Щ鍔ㄨ建杩 int turn_0, n = 0, i, j, k, tx, ty, flag = 0; if ((x == mid && y == right) || (x == left && y == mid) || (x == left && y == right)) - turn_0 = 0; //往右 + turn_0 = 0; //寰鍙 else if ((x == mid && y == left) || (x == right && y == left) || (x == right && y == mid)) - turn_0 = 1; //往左 + turn_0 = 1; //寰宸 for (i = 1, j = y; i <= width; i++) - { //目的地 + { //鐩殑鍦 if (game_map[i][j] != 0) { tx = i - 1; @@ -368,7 +368,7 @@ void play(int x, int y) } } for (i = 1, j = x; i <= width; i++) - { //出发点 + { //鍑哄彂鐐 if (game_map[i][j] != 0) { break; @@ -405,7 +405,7 @@ void play(int x, int y) printf("%c", game_map[i][j + k]); } } - n++; //改变方向; + n++; //鏀瑰彉鏂瑰悜; if (i == tx && j == ty) return; if (turn_0 == 0) @@ -436,7 +436,7 @@ void play(int x, int y) } void move_hnt(int a, int b, int c, char aa, char bb, char cc, int n) -{ //正常的汉诺塔递归程序 +{ //姝e父鐨勬眽璇哄閫掑綊绋嬪簭 if (n == 1) { //printf("from %c to %c",aa,cc); @@ -450,20 +450,20 @@ void move_hnt(int a, int b, int c, char aa, char bb, char cc, int n) move_hnt(b, a, c, bb, aa, cc, n - 1); } void init() -{ //初始化整个程序 +{ //鍒濆鍖栨暣涓▼搴 int i; tcx = computer_map_place[computer_map[cx][cy]][0]; tcy = computer_map_place[computer_map[cx][cy]][1]; lcx = cx, lcy = cy; cx = 1; cy = 1; - printf("↑ ↓ ← → 空格 进行操作\n\n"); - printf("用空格按下电源键即可进行开机\n\n"); - printf("xp系统祝你使用愉快~~\n\n"); - printf("开机密码WHJY\n"); - printf("桌面程序只有第一个和相关有用,其他暂未开放\n"); - printf("汉诺塔程序运行过程中是不能中止的,尽量开6个以下\n"); //这里是原本写了一个版本,自动变化函数+人工输入函数能中途退出,但改一下整个程序都要改动,就放弃了那个版本 - printf("按任意键继续\n"); + printf("鈫 鈫 鈫 鈫 绌烘牸 杩涜鎿嶄綔\n\n"); + printf("鐢ㄧ┖鏍兼寜涓嬬數婧愰敭鍗冲彲杩涜寮鏈篭n\n"); + printf("xp绯荤粺绁濅綘浣跨敤鎰夊揩~~\n\n"); + printf("寮鏈哄瘑鐮乄HJY\n"); + printf("妗岄潰绋嬪簭鍙湁绗竴涓拰鐩稿叧鏈夌敤锛屽叾浠栨殏鏈紑鏀綷n"); + printf("姹夎濉旂▼搴忚繍琛岃繃绋嬩腑鏄笉鑳戒腑姝㈢殑锛屽敖閲忓紑6涓互涓媆n"); //杩欓噷鏄師鏈啓浜嗕竴涓増鏈紝鑷姩鍙樺寲鍑芥暟+浜哄伐杈撳叆鍑芥暟鑳戒腑閫旈鍑猴紝浣嗘敼涓涓嬫暣涓▼搴忛兘瑕佹敼鍔紝灏辨斁寮冧簡閭d釜鐗堟湰 + printf("鎸変换鎰忛敭缁х画\n"); getch(); system("color 70"); system("mode con cols=125 lines=60"); @@ -483,7 +483,7 @@ void init() } } void init_start() -{ // 开机 + 动态加载页面 + 打开输入密码权限 +{ // 寮鏈 + 鍔ㄦ佸姞杞介〉闈 + 鎵撳紑杈撳叆瀵嗙爜鏉冮檺 int i,l, j; gotoxy(0, 0); @@ -493,7 +493,7 @@ void init_start() Sleep(100); } for (l = 0; l < 3; l++) - { //动态加载 + { //鍔ㄦ佸姞杞 for (i = 53; i <= 71; i = i + 2) { for (j = i - 4; j <= i; j = j + 2) @@ -521,13 +521,13 @@ void init_start() printf("%s\n", password[i]); Sleep(10); } - if_input = 1; // 9 77 18个 + if_input = 1; // 9 77 18涓 input_x = 9; input_y = 77; input_max = 18; } void load_desktop() -{ //加载桌面 +{ //鍔犺浇妗岄潰 int i; if_into_desktop = 1; if_input = 0; @@ -540,7 +540,7 @@ void load_desktop() } } void end() -{ //加载关机 (关机做的有点仓促) +{ //鍔犺浇鍏虫満 锛堝叧鏈哄仛鐨勬湁鐐逛粨淇冿級 int i; gotoxy(0, 0); for (i = 0; i <= 16; i++) @@ -556,7 +556,7 @@ void end() } } void load_more() -{ //更多信息 +{ //鏇村淇℃伅 int i; gotoxy(0, 0); for (i = 0; i <= 16; i++) @@ -566,7 +566,7 @@ void load_more() } } void load_game() -{ //加载汉诺塔程序 +{ //鍔犺浇姹夎濉旂▼搴 int i; if_into_desktop = 0; gotoxy(0, 0); @@ -578,14 +578,14 @@ void load_game() } if_game = 1; gotoxy(mid_y - 16, mid_x); - printf("请输入你要递归的汉诺塔数目_"); + printf("璇疯緭鍏ヤ綘瑕侀掑綊鐨勬眽璇哄鏁扮洰_"); input_x = mid_x; input_y = mid_y - 16 + 27; input_max = 1; if_input = 1; } int move() -{ //控制虚拟键盘的指针移动函数 +{ //鎺у埗铏氭嫙閿洏鐨勬寚閽堢Щ鍔ㄥ嚱鏁 int i; char ch = '\0', ch1 = '\0'; while (ch != ' ') @@ -596,7 +596,7 @@ int move() ch != -32) continue; if (ch == -32) - { //同时启用wasd 和上下左右键 //如果读取到第一个是-32那么 继续读取一个字符 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 //濡傛灉璇诲彇鍒扮涓涓槸-32閭d箞 缁х画璇诲彇涓涓瓧绗 ch1 = getch(); switch (ch1) { @@ -669,7 +669,7 @@ int move() } } void put_letter_to_computer(char letter) -{ //把字符传输给电脑屏幕,如果电脑if_input为零就禁止显示 +{ //鎶婂瓧绗︿紶杈撶粰鐢佃剳灞忓箷锛屽鏋滅數鑴慽f_input涓洪浂灏辩姝㈡樉绀 if (if_input == 1 && put_in_num < input_max) { put_in_computer[put_in_num] = letter; @@ -680,9 +680,9 @@ void put_letter_to_computer(char letter) printf("%s", put_in_computer); } void put_function_to_computer(int function) -{ //电脑处理相应共呢 1 ~ 返回 2 ~删除 3确认 4shift 5上 6左 7下 8又 9开机 +{ //鐢佃剳澶勭悊鐩稿簲鍏卞憿 1 ~ 杩斿洖 2 ~鍒犻櫎 3纭 4shift 5涓 6宸 7涓 8鍙 9寮鏈 if (function == 9) - { //开机 + { //寮鏈 if (if_start == 0) { init_start(); @@ -696,7 +696,7 @@ void put_function_to_computer(int function) } } if (function == 2 && put_in_num > 0 && if_input == 1) - { //删除字符,但不可越界 + { //鍒犻櫎瀛楃锛屼絾涓嶅彲瓒婄晫 put_in_num--; put_in_computer[put_in_num] = '\0'; gotoxy(input_y, input_x); @@ -704,14 +704,14 @@ void put_function_to_computer(int function) printf(" "); } if (function == 4) - { //切换大小写 + { //鍒囨崲澶у皬鍐 if (if_shift) if_shift = 0; else if_shift = 1; } if (function == 3 && if_input == 1 && if_game == 0) - { //确认对应不同模式下的不同功能 + { //纭瀵瑰簲涓嶅悓妯″紡涓嬬殑涓嶅悓鍔熻兘 if (strcmp(password_0, put_in_computer) == 0) { load_desktop(); @@ -724,7 +724,7 @@ void put_function_to_computer(int function) put_in_num = 0; put_in_computer[put_in_num] = '\0'; gotoxy(input_y, input_x); - printf("密 码 错 误 !!!"); + printf("瀵 鐮 閿 璇 锛侊紒锛"); gotoxy(input_y, input_x); Sleep(1200); printf(" "); @@ -769,7 +769,7 @@ void put_function_to_computer(int function) load_desktop(); } } - //if(if_game == 1 && function >= 5 && function <= 8)) 移动类型游戏暂未开放 + //if(if_game == 1 && function >= 5 && function <= 8)) 绉诲姩绫诲瀷娓告垙鏆傛湭寮鏀 if (if_into_desktop && function >= 5 && function <= 8) { int ncx = cx + next[function][0], ncy = cy + next[function][1]; @@ -786,7 +786,7 @@ void put_function_to_computer(int function) } } if (function == 1 && if_into_desktop) - { //返回 + { //杩斿洖 load_desktop(); } } @@ -794,22 +794,22 @@ void put_function_to_computer(int function) int main() { init(); - /*load_desktop();//直接进入桌面 + /*load_desktop();//鐩存帴杩涘叆妗岄潰 if_start = 1; if_into_desktop = 1;*/ while (1) - { //主循环 - flag = move(); //move提取读取的键盘按键并判断类型 + { //涓诲惊鐜 + flag = move(); //move鎻愬彇璇诲彇鐨勯敭鐩樻寜閿苟鍒ゆ柇绫诲瀷 switch (flag) { case 0: - break; //暂无效果的按键 + break; //鏆傛棤鏁堟灉鐨勬寜閿 case 1: put_letter_to_computer(letter); - break; //返回字符型按键给电脑 + break; //杩斿洖瀛楃鍨嬫寜閿粰鐢佃剳 case 2: put_function_to_computer(function); - break; //返回功能型按键给电脑 + break; //杩斿洖鍔熻兘鍨嬫寜閿粰鐢佃剳 } } getchar(); diff --git "a/\346\265\213\350\257\225\346\226\207\344\273\266\345\244\271/helloworld.cpp" "b/\346\265\213\350\257\225\346\226\207\344\273\266\345\244\271/helloworld.cpp" new file mode 100644 index 0000000..eedcbce --- /dev/null +++ "b/\346\265\213\350\257\225\346\226\207\344\273\266\345\244\271/helloworld.cpp" @@ -0,0 +1,7 @@ +#include +using namespace std; + +int main(){ + cout << "hello world" << endl; + return 0; +} \ No newline at end of file diff --git "a/\346\274\202\346\265\201\347\223\266/\347\272\257C\350\257\255\350\250\200\347\211\210/\346\274\202\346\265\201\347\223\266(\347\273\223\346\236\204\344\275\223\347\211\210).c" "b/\346\274\202\346\265\201\347\223\266/\347\272\257C\350\257\255\350\250\200\347\211\210/\346\274\202\346\265\201\347\223\266(\347\273\223\346\236\204\344\275\223\347\211\210).c" index f7c9d12..fee7828 100644 --- "a/\346\274\202\346\265\201\347\223\266/\347\272\257C\350\257\255\350\250\200\347\211\210/\346\274\202\346\265\201\347\223\266(\347\273\223\346\236\204\344\275\223\347\211\210).c" +++ "b/\346\274\202\346\265\201\347\223\266/\347\272\257C\350\257\255\350\250\200\347\211\210/\346\274\202\346\265\201\347\223\266(\347\273\223\346\236\204\344\275\223\347\211\210).c" @@ -1,33 +1,33 @@ /*-------------------------------------------------------------------- -程序: C语言 漂流瓶 -作者: 404name | 绝伦N -说明: 功能预览版 | 可自定义数据 -自定义方法: - ·增添数据: - 往结构体18行结构体后面添加相同规格数据即可 - 之后系统会自动汇总数据处理页面,并进行分页。 - 无需进行更多操作 - ·更改界面: - 自己读懂逻辑后更改相对应的属性即可 - ·属性介绍: - User 仅限10个以内字符(5个汉字/10英文字符) - Datetime 2020-03-05 04:11:12日期的长度 - 并且C语言版本不支持自动设置时间 - 有能力可以自己调用函数试试 - Message 108个汉字的文字内容,超出范围系统会默认在后面打上省略号 -版本及时间: ver 1.0.0 2020-06-10 20:20:12 +绋嬪簭锛 C璇█ 婕傛祦鐡 +浣滆咃細 404name | 缁濅鸡N +璇存槑: 鍔熻兘棰勮鐗 | 鍙嚜瀹氫箟鏁版嵁 +鑷畾涔夋柟娉曪細 + 路澧炴坊鏁版嵁锛 + 寰缁撴瀯浣18琛岀粨鏋勪綋鍚庨潰娣诲姞鐩稿悓瑙勬牸鏁版嵁鍗冲彲 + 涔嬪悗绯荤粺浼氳嚜鍔ㄦ眹鎬绘暟鎹鐞嗛〉闈紝骞惰繘琛屽垎椤点 + 鏃犻渶杩涜鏇村鎿嶄綔 + 路鏇存敼鐣岄潰锛 + 鑷繁璇绘噦閫昏緫鍚庢洿鏀圭浉瀵瑰簲鐨勫睘鎬у嵆鍙 + 路灞炴т粙缁嶏細 + User 浠呴檺10涓互鍐呭瓧绗(5涓眽瀛/10鑻辨枃瀛楃) + Datetime 2020-03-05 04:11:12鏃ユ湡鐨勯暱搴 + 骞朵笖C璇█鐗堟湰涓嶆敮鎸佽嚜鍔ㄨ缃椂闂 + 鏈夎兘鍔涘彲浠ヨ嚜宸辫皟鐢ㄥ嚱鏁拌瘯璇 + Message 108涓眽瀛楃殑鏂囧瓧鍐呭锛岃秴鍑鸿寖鍥寸郴缁熶細榛樿鍦ㄥ悗闈㈡墦涓婄渷鐣ュ彿 +鐗堟湰鍙婃椂闂达細 ver 1.0.0 2020-06-10 20:20:12 --------------------------------------------------------------------*/ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include -#include //用于rand +#include //鐢ㄤ簬rand #include #include #define width 64 #define height 22 #define page_include 6 -const char block1[3] = "█"; -const char block2[3] = "▓"; -const char point[4][3] = {{"/"}, {"¤"}, {" "}, {" "}}; +const char block1[3] = "鈻"; +const char block2[3] = "鈻"; +const char point[4][3] = {{"/"}, {"陇"}, {" "}, {" "}}; struct bottle { @@ -35,44 +35,44 @@ struct bottle char Datetime[30]; char Message[500]; } bottles[200] = { - {"讨厌这世界", "2020-06-08 17:39:43", "活着,就是选择一种死去的旅途。"}, - {"镜心女神", "2020-05-31 02:32:56", "今年15了,还是有很多事达不到。不会聊天、不会道歉、不够勇敢、不够努力、还是那样自卑"}, - {"嗨皮农夫", "2020-05-20 19:53:16", "我想学好英语,我想出去看一看,我想去看看国外是不是真的有大教堂?那有多大?国外是不是真的有那么美的大草原?国外是不是真的像电影那样?都是一个一个静谧的小镇,所以加油,希望七八年后的我会在国外发一张帖子,在树洞网!加油!为了自己的愿望,为了那么美的风景,为了我喜欢的外国影视及明星(奥黛丽-赫本与凯特-温斯莱特)!"}, - {"虞姬", "2020-05-06 01:32:07", "因为想忘记他,所以找了个替代品,但终究只是替代品,没有可比性,算是精神上的寄托和慰籍,爱而不得,真的很无奈也很煎熬!…"}, - {"嫦娥", "2020-04-13 14:26:05", "自愈是一件很困难的事…"}, - {"嫦娥", "2020-04-13 14:27:05", "我喜欢你…"}, - {"花花好好的", "2020-04-14 15:24:05", "希望大家都能好好的或者,毕竟这个世界很美好!抱着沙发 睡眼昏花 凌乱头发渴望像电影主角一样潇洒"}, + {"璁ㄥ帉杩欎笘鐣", "2020-06-08 17:39:43", "娲荤潃锛屽氨鏄夋嫨涓绉嶆鍘荤殑鏃呴斻"}, + {"闀滃績濂崇", "2020-05-31 02:32:56", "浠婂勾15浜嗭紝杩樻槸鏈夊緢澶氫簨杈句笉鍒般備笉浼氳亰澶┿佷笉浼氶亾姝夈佷笉澶熷媷鏁€佷笉澶熷姫鍔涖佽繕鏄偅鏍疯嚜鍗"}, + {"鍡ㄧ毊鍐滃か", "2020-05-20 19:53:16", "鎴戞兂瀛﹀ソ鑻辫锛屾垜鎯冲嚭鍘荤湅涓鐪嬶紝鎴戞兂鍘荤湅鐪嬪浗澶栨槸涓嶆槸鐪熺殑鏈夊ぇ鏁欏爞锛熼偅鏈夊澶э紵鍥藉鏄笉鏄湡鐨勬湁閭d箞缇庣殑澶ц崏鍘燂紵鍥藉鏄笉鏄湡鐨勫儚鐢靛奖閭f牱锛熼兘鏄竴涓竴涓潤璋х殑灏忛晣锛屾墍浠ュ姞娌癸紝甯屾湜涓冨叓骞村悗鐨勬垜浼氬湪鍥藉鍙戜竴寮犲笘瀛愶紝鍦ㄦ爲娲炵綉锛佸姞娌癸紒涓轰簡鑷繁鐨勬効鏈涳紝涓轰簡閭d箞缇庣殑椋庢櫙锛屼负浜嗘垜鍠滄鐨勫鍥藉奖瑙嗗強鏄庢槦锛堝ゥ榛涗附-璧湰涓庡嚡鐗-娓╂柉鑾辩壒锛夛紒"}, + {"铏炲К", "2020-05-06 01:32:07", "鍥犱负鎯冲繕璁颁粬锛屾墍浠ユ壘浜嗕釜鏇夸唬鍝侊紝浣嗙粓绌跺彧鏄浛浠e搧锛屾病鏈夊彲姣旀э紝绠楁槸绮剧涓婄殑瀵勬墭鍜屾叞绫嶏紝鐖辫屼笉寰楋紝鐪熺殑寰堟棤濂堜篃寰堢厧鐔紒鈥"}, + {"瀚﹀ē", "2020-04-13 14:26:05", "鑷剤鏄竴浠跺緢鍥伴毦鐨勪簨鈥"}, + {"瀚﹀ē", "2020-04-13 14:27:05", "鎴戝枩娆綘鈥"}, + {"鑺辫姳濂藉ソ鐨", "2020-04-14 15:24:05", "甯屾湜澶у閮借兘濂藉ソ鐨勬垨鑰咃紝姣曠珶杩欎釜涓栫晫寰堢編濂斤紒鎶辩潃娌欏彂 鐫$溂鏄忚姳 鍑屼贡澶村彂娓存湜鍍忕數褰变富瑙掍竴鏍锋絿娲"}, {"88888", "2020-04-15 14:27:05", "2020-04-15 14:27:05"}, - {"10086", "2020-05-15 12:27:05", "尊敬的客户,您好,5月账单已经出来了,请及时缴费喔"}, - {"电竞食堂", "2020-02-15 15:27:03", "每一张卡牌,都是对你的一份思念,我赌赢了所有,却赢不回你的爱"}, - {"刀锋意志", "2020-03-15 14:27:05", "均衡存乎万物之间。 我的剑刃愿为你效劳。 "}, - {"思念", "2020-02-25 02:24:25", "啊……夜空绽放的烟花 点燃每一个盛夏 总让我莫名伤感 时光像风儿一样 悄悄地消失流淌 晨光映彩霞 夕阳茜风中 你牵着我 走在熟悉的街旁 直到尽头 依依不舍地紧紧相拥 与你在这最后的夏天 抹不去的思念 斜阳里的微笑 渐行渐远 六月的微风吹散你的泪光 深深地铭刻心间 难以忘却 与你许下这最后诺言微笑着离 "}, - {"我好想你", "2020-01-03 05:21:05", "在秒速5厘米间,他们发现了彼此。也在秒速5厘米之间,他们错过了彼此。"}, - {"111dw11", "2020-03-05 04:11:12", "希望在明年"}, - {"树洞先生", "2020-06-09 23:51:12", "作为一个山东人,我特别讨厌山东的官僚作风。大学毕业坚决不回山东。农民掏钱才能买的起质量不高的楼房,与民争利。自小接触的基层干部,干实事的少。山东,现在可能在我内心就是出生地了吧,没有多少意义,可能以后也很少回去了。带着家人好好的在别处生活吧。 "}, - {"时光", "2020-06-09 20:02:25", "人间烟火是什么的呢? 市集、小巷、美食.....香喷喷的烧烤,麻辣烫,凉皮凉面,卤味"}, - {"14449", "2020-06-08 16:00:11", "我想好好地活下去,因为我现在过得不好,所以我想活下去,我想把生活过得好一点,只是一点就好。 "}, - {"小先生", "2020-06-08 14:05:21", "也许,这就是人生吧"}, - {"一位朋友", "2012-01-22 23:41:48", "开开心心的吃完年夜饭 回家因为一个亲戚的拜年电话 家里吵了起来 一个人站在阳台上边看烟花边掉泪 冷到不行 最后被爸硬拉回房 到现在还不停的颤 想说 2012这样的日子 能不能一天都不要过 "}, - {"新浪匿名", "2012-01-22 22:21:45", "尼玛的补课喜欢上一个男的,靠,重点是他妹的我也是男的好嘛。看到他露出来的脚踝我要疯了好么。性格也很好,和老师开玩笑来着。声音也很好听。身高什么的更无话可说啊。烦死了。 "}, - {"????", "2015-03-25 22:20:15", "什么叫快乐?就是掩饰自己的悲伤对每个人微笑"}, - {"匿名网友", "2010-04-21 21:21:10", "你是gg还是mm啊"}, - {"卢本伟", "2019-02-15 20:05:05", "我!卢本伟!没有开挂!"}, - {"绝伦N", "2020-06-10 18:57:21", "啊,爬数据累坏了,早点爬完数据呀~~~"}, - {"漂流瓶", "2017-02-15 14:05:05", "感谢你收到了这个漂流瓶,现在大部分人都忘记了漂流瓶了,而屏幕前的你还在看着这个捞上来的消息,非常感谢你...希望这个漂流瓶能承载着过去的岁月一直漂流吧"}, - {"小迷妹", "2018-01-10 12:04:05", "我真的喜欢你,但我知道我配不上,看着你远去我又好心酸,真的,,真的。。。。。。。。。。。。。。。"}, - {"高考加油", "2020-06-08 14:50:21", "我要去你的大学和你相遇!!!!!!"}, - {"时光", "2017-05-07 12:35:21", "谁又记得曾经的我们呢,是这个漂流瓶?笑话,曾经的我们早就不在了!要谁去纪念呢?"}, - {"Java", "2018-06-05 13:25:51", "我是世界上最好的语言!"}, - {"awsl", "2019-06-08 21:25:51", "时间不会把我们冲淡,但距离会"}, - {"西瓜", "2017-11-18 01:25:05", "我看着你远去,不明白为什么你要去那遥远的未来呢?"}, - {"沙比", "2014-10-24 12:24:05", "我是sb,我是sb,我是sb,,我是sb,我是sb,我是sb,我是sb,我是sb,我是sb,我是sb,我是sb,我是sb,我是sb,"}, - {"锤子", "2020-05-01 15:20:51", "啊啊啊啊,我受不了了,辣鸡网课,学不下去了"}, - {"比利比利", "2020-06-10 14:22:20", "干杯"}, - {"啊啊啊啊", "2020-06-01 12:00:21", "儿童节快乐呀"}, -}; //往后追加数据即可 + {"10086", "2020-05-15 12:27:05", "灏婃暚鐨勫鎴凤紝鎮ㄥソ,5鏈堣处鍗曞凡缁忓嚭鏉ヤ簡,璇峰強鏃剁即璐瑰枖"}, + {"鐢电珵椋熷爞", "2020-02-15 15:27:03", "姣忎竴寮犲崱鐗岋紝閮芥槸瀵逛綘鐨勪竴浠芥濆康锛屾垜璧岃耽浜嗘墍鏈夛紝鍗磋耽涓嶅洖浣犵殑鐖"}, + {"鍒閿嬫剰蹇", "2020-03-15 14:27:05", "鍧囪 瀛樹箮涓囩墿涔嬮棿銆 鎴戠殑鍓戝垉鎰夸负浣犳晥鍔炽 "}, + {"鎬濆康", "2020-02-25 02:24:25", "鍟娾︹﹀绌虹唤鏀剧殑鐑熻姳 鐐圭噧姣忎竴涓洓澶 鎬昏鎴戣帿鍚嶄激鎰 鏃跺厜鍍忛鍎夸竴鏍 鎮勬倓鍦版秷澶辨祦娣 鏅ㄥ厜鏄犲僵闇 澶曢槼鑼滈涓 浣犵壍鐫鎴 璧板湪鐔熸倝鐨勮鏃 鐩村埌灏藉ご 渚濅緷涓嶈垗鍦扮揣绱х浉鎷 涓庝綘鍦ㄨ繖鏈鍚庣殑澶忓ぉ 鎶逛笉鍘荤殑鎬濆康 鏂滈槼閲岀殑寰瑧 娓愯娓愯繙 鍏湀鐨勫井椋庡惞鏁d綘鐨勬唱鍏 娣辨繁鍦伴摥鍒诲績闂 闅句互蹇樺嵈 涓庝綘璁镐笅杩欐渶鍚庤瑷寰瑧鐫绂 "}, + {"鎴戝ソ鎯充綘", "2020-01-03 05:21:05", "鍦ㄧ閫5鍘樼背闂达紝浠栦滑鍙戠幇浜嗗郊姝ゃ備篃鍦ㄧ閫5鍘樼背涔嬮棿锛屼粬浠敊杩囦簡褰兼銆"}, + {"111dw11", "2020-03-05 04:11:12", "甯屾湜鍦ㄦ槑骞"}, + {"鏍戞礊鍏堢敓", "2020-06-09 23:51:12", "浣滀负涓涓北涓滀汉锛屾垜鐗瑰埆璁ㄥ帉灞变笢鐨勫畼鍍氫綔椋庛傚ぇ瀛︽瘯涓氬潥鍐充笉鍥炲北涓溿傚啘姘戞帍閽辨墠鑳戒拱鐨勮捣璐ㄩ噺涓嶉珮鐨勬ゼ鎴匡紝涓庢皯浜夊埄銆傝嚜灏忔帴瑙︾殑鍩哄眰骞查儴锛屽共瀹炰簨鐨勫皯銆傚北涓滐紝鐜板湪鍙兘鍦ㄦ垜鍐呭績灏辨槸鍑虹敓鍦颁簡鍚э紝娌℃湁澶氬皯鎰忎箟锛屽彲鑳戒互鍚庝篃寰堝皯鍥炲幓浜嗐傚甫鐫瀹朵汉濂藉ソ鐨勫湪鍒鐢熸椿鍚с "}, + {"鏃跺厜", "2020-06-09 20:02:25", "浜洪棿鐑熺伀鏄粈涔堢殑鍛紵 甯傞泦銆佸皬宸枫佺編椋.....棣欏柗鍠风殑鐑х儰锛岄夯杈g儷锛屽噳鐨噳闈紝鍗ゅ懗"}, + {"14449", "2020-06-08 16:00:11", "鎴戞兂濂藉ソ鍦版椿涓嬪幓锛屽洜涓烘垜鐜板湪杩囧緱涓嶅ソ锛屾墍浠ユ垜鎯虫椿涓嬪幓锛屾垜鎯虫妸鐢熸椿杩囧緱濂戒竴鐐癸紝鍙槸涓鐐瑰氨濂姐 "}, + {"灏忓厛鐢", "2020-06-08 14:05:21", "涔熻锛岃繖灏辨槸浜虹敓鍚"}, + {"涓浣嶆湅鍙", "2012-01-22 23:41:48", "寮寮蹇冨績鐨勫悆瀹屽勾澶滈キ 鍥炲鍥犱负涓涓翰鎴氱殑鎷滃勾鐢佃瘽 瀹堕噷鍚典簡璧锋潵 涓涓汉绔欏湪闃冲彴涓婅竟鐪嬬儫鑺辫竟鎺夋唱 鍐峰埌涓嶈 鏈鍚庤鐖哥‖鎷夊洖鎴 鍒扮幇鍦ㄨ繕涓嶅仠鐨勯ⅳ 鎯宠 2012杩欐牱鐨勬棩瀛 鑳戒笉鑳戒竴澶╅兘涓嶈杩 "}, + {"鏂版氮鍖垮悕", "2012-01-22 22:21:45", "灏肩帥鐨勮ˉ璇惧枩娆笂涓涓敺鐨勶紝闈狅紝閲嶇偣鏄粬濡圭殑鎴戜篃鏄敺鐨勫ソ鍢涖傜湅鍒颁粬闇插嚭鏉ョ殑鑴氳笣鎴戣鐤簡濂戒箞銆傛ф牸涔熷緢濂斤紝鍜岃佸笀寮鐜╃瑧鏉ョ潃銆傚0闊充篃寰堝ソ鍚傝韩楂樹粈涔堢殑鏇存棤璇濆彲璇村晩銆傜儲姝讳簡銆 "}, + {"????", "2015-03-25 22:20:15", "浠涔堝彨蹇箰?灏辨槸鎺╅グ鑷繁鐨勬偛浼ゅ姣忎釜浜哄井绗"}, + {"鍖垮悕缃戝弸", "2010-04-21 21:21:10", "浣犳槸gg杩樻槸mm鍟"}, + {"鍗㈡湰浼", "2019-02-15 20:05:05", "鎴戯紒鍗㈡湰浼燂紒娌℃湁寮鎸!"}, + {"缁濅鸡N", "2020-06-10 18:57:21", "鍟婏紝鐖暟鎹疮鍧忎簡锛屾棭鐐圭埇瀹屾暟鎹憖~~~"}, + {"婕傛祦鐡", "2017-02-15 14:05:05", "鎰熻阿浣犳敹鍒颁簡杩欎釜婕傛祦鐡讹紝鐜板湪澶ч儴鍒嗕汉閮藉繕璁颁簡婕傛祦鐡朵簡锛岃屽睆骞曞墠鐨勪綘杩樺湪鐪嬬潃杩欎釜鎹炰笂鏉ョ殑娑堟伅锛岄潪甯告劅璋綘...甯屾湜杩欎釜婕傛祦鐡惰兘鎵胯浇鐫杩囧幓鐨勫瞾鏈堜竴鐩存紓娴佸惂"}, + {"灏忚糠濡", "2018-01-10 12:04:05", "鎴戠湡鐨勫枩娆綘锛屼絾鎴戠煡閬撴垜閰嶄笉涓婏紝鐪嬬潃浣犺繙鍘绘垜鍙堝ソ蹇冮吀锛岀湡鐨勶紝锛岀湡鐨勩傘傘傘傘傘傘傘傘傘傘傘傘傘傘"}, + {"楂樿冨姞娌", "2020-06-08 14:50:21", "鎴戣鍘讳綘鐨勫ぇ瀛﹀拰浣犵浉閬囷紒锛侊紒锛侊紒锛"}, + {"鏃跺厜", "2017-05-07 12:35:21", "璋佸張璁板緱鏇剧粡鐨勬垜浠憿锛屾槸杩欎釜婕傛祦鐡讹紵绗戣瘽锛屾浘缁忕殑鎴戜滑鏃╁氨涓嶅湪浜嗭紒瑕佽皝鍘荤邯蹇靛憿锛"}, + {"Java", "2018-06-05 13:25:51", "鎴戞槸涓栫晫涓婃渶濂界殑璇█锛"}, + {"awsl", "2019-06-08 21:25:51", "鏃堕棿涓嶄細鎶婃垜浠啿娣★紝浣嗚窛绂讳細"}, + {"瑗跨摐", "2017-11-18 01:25:05", "鎴戠湅鐫浣犺繙鍘伙紝涓嶆槑鐧戒负浠涔堜綘瑕佸幓閭i仴杩滅殑鏈潵鍛紵"}, + {"娌欐瘮", "2014-10-24 12:24:05", "鎴戞槸sb锛屾垜鏄痵b锛屾垜鏄痵b锛岋紝鎴戞槸sb锛屾垜鏄痵b锛屾垜鏄痵b锛屾垜鏄痵b锛屾垜鏄痵b锛屾垜鏄痵b锛屾垜鏄痵b锛屾垜鏄痵b锛屾垜鏄痵b锛屾垜鏄痵b锛"}, + {"閿ゅ瓙", "2020-05-01 15:20:51", "鍟婂晩鍟婂晩锛屾垜鍙椾笉浜嗕簡锛岃荆楦$綉璇撅紝瀛︿笉涓嬪幓浜"}, + {"姣斿埄姣斿埄", "2020-06-10 14:22:20", "骞叉澂"}, + {"鍟婂晩鍟婂晩", "2020-06-01 12:00:21", "鍎跨鑺傚揩涔愬憖"}, +}; //寰鍚庤拷鍔犳暟鎹嵆鍙 -char keymap[10][7] = { //对应光标去去处 +char keymap[10][7] = { //瀵瑰簲鍏夋爣鍘诲幓澶 {"xxxxxx"}, {"x0000x"}, {"x1111x"}, @@ -82,7 +82,7 @@ struct bottle {"x5555x"}, {"x6789x"}, {"xxxxxx"}}; -int keymap_to_map0[10][2] = { //keymap映射路劲 +3对应输出文字的地方 +int keymap_to_map0[10][2] = { //keymap鏄犲皠璺姴 +3瀵瑰簲杈撳嚭鏂囧瓧鐨勫湴鏂 {14, 5}, //0 {14, 7}, {14, 9}, //2 @@ -95,40 +95,40 @@ struct bottle {47, 19}}; int tx, ty, now_x, now_y, function, point_flag; int page, All_messages, All_pages; -int menu_flag; // 0加载动画, 1主菜单 2留言面板 3留言面板查看信息 返回键依次回溯 -const char mapMaker[8][3] = { //界面采用逻辑构建这里是材料 也能复制界面用数组存着打印 +int menu_flag; // 0鍔犺浇鍔ㄧ敾锛 1涓昏彍鍗 2鐣欒█闈㈡澘 3鐣欒█闈㈡澘鏌ョ湅淇℃伅 杩斿洖閿緷娆″洖婧 +const char mapMaker[8][3] = { //鐣岄潰閲囩敤閫昏緫鏋勫缓杩欓噷鏄潗鏂 涔熻兘澶嶅埗鐣岄潰鐢ㄦ暟缁勫瓨鐫鎵撳嵃 {"/"}, //0 - {"▔"}, //1 - {"▏"}, //2 - {"█"}, //3 + {"鈻"}, //1 + {"鈻"}, //2 + {"鈻"}, //3 {"\\"}, //4 - {"▁"}}; //5 -const char title[10][50] = { //偶数主菜单,奇数附页面 - {"|信息|User: Datetime: "}, - {"|瓶子|404name Datetime: "}, - {" 这是首页喔~ 欢迎你的使用 "}, + {"鈻"}}; //5 +const char title[10][50] = { //鍋舵暟涓昏彍鍗曪紝濂囨暟闄勯〉闈 + {"|淇℃伅|User: Datetime: "}, + {"|鐡跺瓙|404name Datetime: "}, + {" 杩欐槸棣栭〉鍠攡 娆㈣繋浣犵殑浣跨敤 "}, {" "}, - {" 漂流瓶 ver 1.0.0 "}, + {" 婕傛祦鐡 ver 1.0.0 "}, {" "}, - {" 采用C语言搭建 "}, + {" 閲囩敤C璇█鎼缓 "}, {" "}, - {" 欢迎你的使用 "}}; -const char menu[8][12] = { //偶数主菜单,奇数附页面 - {"Θ===="}, - {"Θ返回"}, - {"¤扔一个"}, - {"←上一页"}, - {"◎捞捞看"}, - {"→下一页"}, - {"⊕我的瓶子"}, - {"⊕页码:01"}}; -void HideCursor(int x) //光标隐藏 + {" 娆㈣繋浣犵殑浣跨敤 "}}; +const char menu[8][12] = { //鍋舵暟涓昏彍鍗曪紝濂囨暟闄勯〉闈 + {"螛===="}, + {"螛杩斿洖"}, + {"陇鎵斾竴涓"}, + {"鈫愪笂涓椤"}, + {"鈼庢崬鎹炵湅"}, + {"鈫掍笅涓椤"}, + {"鈯曟垜鐨勭摱瀛"}, + {"鈯曢〉鐮侊細01"}}; +void HideCursor(int x) //鍏夋爣闅愯棌 { - CONSOLE_CURSOR_INFO cursor_info = {1, x}; //后边的0代表光标不可见 + CONSOLE_CURSOR_INFO cursor_info = {1, x}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -137,7 +137,7 @@ int page, All_messages, All_pages; SetConsoleCursorPosition(handle, pos); } -void change_menu(int turn) //更改菜单的功能按钮显示 进入不同页面显示不同功能 +void change_menu(int turn) //鏇存敼鑿滃崟鐨勫姛鑳芥寜閽樉绀 杩涘叆涓嶅悓椤甸潰鏄剧ず涓嶅悓鍔熻兘 { int flag = 0, i; if (turn == 1) @@ -170,9 +170,9 @@ int page, All_messages, All_pages; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 1); } -void init() //总init +void init() //鎬籭nit { - //初始化消息数目与页数处理 + //鍒濆鍖栨秷鎭暟鐩笌椤垫暟澶勭悊 int i, j; for (i = 0;; i++) { @@ -182,13 +182,13 @@ int page, All_messages, All_pages; All_messages = i; page = 0; All_pages = (All_messages % page_include == 0 ? All_messages / page_include : All_messages / page_include + 1); - //处理光标显示 + //澶勭悊鍏夋爣鏄剧ず HideCursor(0); - point_flag = 0; //光标形态 + point_flag = 0; //鍏夋爣褰㈡ now_x = 7, now_y = 1; - //HideCursor(); //隐藏光标 + //HideCursor(); //闅愯棌鍏夋爣 menu_flag = 1; - //逻辑构建地图 也可以复制下来存字符串去打印但需要先for后面打个断点再复制页面 + //閫昏緫鏋勫缓鍦板浘 涔熷彲浠ュ鍒朵笅鏉ュ瓨瀛楃涓插幓鎵撳嵃浣嗛渶瑕佸厛for鍚庨潰鎵撲釜鏂偣鍐嶅鍒堕〉闈 for (i = 0; i < height; i++) { for (j = 0; j <= width; j++) @@ -235,13 +235,13 @@ int page, All_messages, All_pages; Sleep(50); } gotoxy(4, height - 3); - printf(" ▔▔ ▔▔▔ ▔▔▔ ▔▔▔▔ "); - //构建地图结束点 + printf(" 鈻斺枖 鈻斺枖鈻 鈻斺枖鈻 鈻斺枖鈻斺枖 "); + //鏋勫缓鍦板浘缁撴潫鐐 - //显示初始的界面选项3功能 + //鏄剧ず鍒濆鐨勭晫闈㈤夐」3鍔熻兘 change_menu(menu_flag); - //定位初始光标指针 + //瀹氫綅鍒濆鍏夋爣鎸囬拡 function = keymap[now_x][now_y] - '0'; tx = keymap_to_map0[function][0]; ty = keymap_to_map0[function][1]; @@ -252,7 +252,7 @@ int page, All_messages, All_pages; int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, int xx, int yy) { - //参数:开始坐标x y 限制活动空间 x左右 y上下 移动距离 x y + //鍙傛暟锛氬紑濮嬪潗鏍噚 y 闄愬埗娲诲姩绌洪棿 x宸﹀彸 y涓婁笅 绉诲姩璺濈 x y SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 0); int last_x = x, last_y = y; function = keymap[x][y] - '0'; @@ -268,9 +268,9 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i { ch = getch(); gotoxy(tx, ty); - printf("%s", point[point_flag + 2]); //输出空格消除 + printf("%s", point[point_flag + 2]); //杈撳嚭绌烘牸娑堥櫎 if (ch == -32) - { //同时启用wasd 和上下左右键 //如果读取到第一个是-32那么 继续读取一个字符 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 //濡傛灉璇诲彇鍒扮涓涓槸-32閭d箞 缁х画璇诲彇涓涓瓧绗 ch1 = getch(); switch (ch1) { @@ -311,9 +311,9 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i y = last_y; } last_y = y, last_x = x; - if (x == 7) //在x == 7的时候光标显示 == / + if (x == 7) //鍦▁ == 7鐨勬椂鍊欏厜鏍囨樉绀 == / point_flag = 0; - else // 不然在x < 7的时候光标变成 O + else // 涓嶇劧鍦▁ < 7鐨勬椂鍊欏厜鏍囧彉鎴 O point_flag = 1; function = keymap[x][y] - '0'; tx = keymap_to_map0[function][0]; @@ -323,14 +323,14 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i } if (x < 7) x = 7, y = 1; - now_x = x, now_y = y; //返回x y + now_x = x, now_y = y; //杩斿洖x y gotoxy(tx, ty); - printf("%s", point[point_flag + 2]); //输出空格消除 + printf("%s", point[point_flag + 2]); //杈撳嚭绌烘牸娑堥櫎 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 1); return function; } -void show_message(int id) //显示第id条消息 难在显示输出的处理 +void show_message(int id) //鏄剧ず绗琲d鏉℃秷鎭 闅惧湪鏄剧ず杈撳嚭鐨勫鐞 { int i; gotoxy(17, 3); @@ -345,18 +345,18 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i gotoxy(tx + 3, ty); printf(" "); } - if (id == -1) //假装没捞到 + if (id == -1) //鍋囪娌℃崬鍒 { int flag = rand() % 4; gotoxy(17, 3); if (flag == 0) - printf("哇,好大一只螃蟹。放生 或 再捞捞看 "); + printf("鍝囷紝濂藉ぇ涓鍙瀮锜广傛斁鐢 鎴 鍐嶆崬鎹炵湅 "); else if (flag == 1) - printf("鱼儿水中游,来去乐悠悠。再捞捞看 "); + printf("楸煎効姘翠腑娓革紝鏉ュ幓涔愭偁鎮犮傚啀鎹炴崬鐪 "); else if (flag == 2) - printf("捞到个锤子。放生 或 再捞捞看 "); + printf("鎹炲埌涓敜瀛愩傛斁鐢 鎴 鍐嶆崬鎹炵湅 "); else if (flag == 3) - printf("捞到一个破瓶子,里面什么都没有。 "); + printf("鎹炲埌涓涓牬鐡跺瓙锛岄噷闈粈涔堥兘娌℃湁銆 "); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 1); return; } @@ -370,7 +370,7 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i { if (i == 5 && cnt == 1) { - printf("…"); + printf("鈥"); cnt--; break; } @@ -388,7 +388,7 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 1); } -void show_page(int page) //显示第几的页面 +void show_page(int page) //鏄剧ず绗嚑鐨勯〉闈 { int start = (page - 1) * page_include; int end = page * page_include; @@ -414,7 +414,7 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 1); } -void throw_bottle() //扔漂流瓶 == 增加功能 这里难在处理输入 +void throw_bottle() //鎵旀紓娴佺摱 == 澧炲姞鍔熻兘 杩欓噷闅惧湪澶勭悊杈撳叆 { int i; HideCursor(1); @@ -427,14 +427,14 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i } gotoxy(17, 3); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 4); - printf(" ||在此输入不越线的用户名 "); + printf(" ||鍦ㄦ杈撳叆涓嶈秺绾跨殑鐢ㄦ埛鍚 "); char username[100]; gotoxy(17, 3); scanf("%s", username); if (strlen(username) > 10) { gotoxy(17, 2); - printf("用户名过长,错误输入,按回车退回 "); + printf("鐢ㄦ埛鍚嶈繃闀,閿欒杈撳叆锛屾寜鍥炶溅閫鍥 "); getchar(); getchar(); change_menu(menu_flag); @@ -443,9 +443,9 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i else { gotoxy(17, 2); - printf("成功输入,%10s| ", username); + printf("鎴愬姛杈撳叆,%10s| ", username); gotoxy(17, 3); - printf("文字输入请自行按回车换行 "); + printf("鏂囧瓧杈撳叆璇疯嚜琛屾寜鍥炶溅鎹㈣ "); } int index = 0; char res[500] = "\0"; @@ -466,7 +466,7 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i All_messages++; All_pages = (All_messages % page_include == 0 ? All_messages / page_include : All_messages / page_include + 1); gotoxy(17, 2); - printf("漂流瓶已扔入大海,回车返回"); + printf("婕傛祦鐡跺凡鎵斿叆澶ф捣锛屽洖杞﹁繑鍥"); getchar(); getchar(); menu_flag = 1; @@ -474,27 +474,27 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i HideCursor(0); } -void manchange() //人为输入更新 +void manchange() //浜轰负杈撳叆鏇存柊 { char ch, ch1; if (kbhit()) { function = move(now_x, now_y, 1, 7, 1, 4, 1, 1); - if (function >= 0 && function <= 5) //查看留言面板第m页的第n+1条 + if (function >= 0 && function <= 5) //鏌ョ湅鐣欒█闈㈡澘绗琺椤电殑绗琻+1鏉 { menu_flag++; - show_message((page - 1) * page_include + function); //取数据库第几条 + show_message((page - 1) * page_include + function); //鍙栨暟鎹簱绗嚑鏉 } - if (function == 6) //返回 + if (function == 6) //杩斿洖 { if (menu_flag <= 2) - { //查看所有留言返回菜单 + { //鏌ョ湅鎵鏈夌暀瑷杩斿洖鑿滃崟 menu_flag = 1; change_menu(menu_flag); } if (menu_flag == 3) - { //所有留言查看详细 返回 留言 + { //鎵鏈夌暀瑷鏌ョ湅璇︾粏 杩斿洖 鐣欒█ menu_flag--; show_page(page); } @@ -502,11 +502,11 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i else if (function == 7) { if (menu_flag == 1) - { //扔一个 + { //鎵斾竴涓 throw_bottle(); } else - { //上一页 + { //涓婁竴椤 if (page > 1) { menu_flag = 2; @@ -516,15 +516,15 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i } else if (function == 8) { - if (menu_flag == 1) //捞捞看 + if (menu_flag == 1) //鎹炴崬鐪 { if (rand() % 3 == 1) - show_message(-1); //没捞到 + show_message(-1); //娌℃崬鍒 else - show_message(rand() % All_messages); //随机数 + show_message(rand() % All_messages); //闅忔満鏁 } else - { //下一页 + { //涓嬩竴椤 if (page < All_pages) { menu_flag = 2; @@ -549,15 +549,15 @@ int move(int x, int y, int limit_x1, int limit_x2, int limit_y1, int limit_y2, i printf("%s", point[point_flag]); } } -void autochange() //自动更新 +void autochange() //鑷姩鏇存柊 { - //无 + //鏃 } int main() { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10 | 1); //SetConsoleTextAttribute - //设置控制台窗口字体颜色和背景色的 + //璁剧疆鎺у埗鍙扮獥鍙e瓧浣撻鑹插拰鑳屾櫙鑹茬殑 init(); while (1) { diff --git "a/\347\245\236\345\272\231\351\200\203\344\272\241/\347\245\236\345\272\231\351\200\203\344\272\241.txt" "b/\347\245\236\345\272\231\351\200\203\344\272\241/\347\245\236\345\272\231\351\200\203\344\272\241.txt" index fb20a98..b44720d 100644 --- "a/\347\245\236\345\272\231\351\200\203\344\272\241/\347\245\236\345\272\231\351\200\203\344\272\241.txt" +++ "b/\347\245\236\345\272\231\351\200\203\344\272\241/\347\245\236\345\272\231\351\200\203\344\272\241.txt" @@ -1,29 +1,29 @@ -#include //用于getch() +#include //鐢ㄤ簬getch锛堬級 #include #include #include /*-------------------------------- -1.a方向测试 -2.方向测试 -3.刷新方面 转弯后没刷新 -2.加入开头动画 -3.设置迷宫 -4.加载自动前进 +1.a鏂瑰悜娴嬭瘯 +2.鏂瑰悜娴嬭瘯 +3.鍒锋柊鏂归潰 杞集鍚庢病鍒锋柊 +2.鍔犲叆寮澶村姩鐢 +3.璁剧疆杩峰 +4.鍔犺浇鑷姩鍓嶈繘 -加入路线系统 +鍔犲叆璺嚎绯荤粺 -5.优化小人 -6.设计地图(初始死亡地不允许再次出现) -7.设置死亡 -8设计8对应正确路劲的颜色 +5.浼樺寲灏忎汉 +6.璁捐鍦板浘锛堝垵濮嬫浜″湴涓嶅厑璁稿啀娆″嚭鐜帮級 +7.璁剧疆姝讳骸 +8璁捐8瀵瑰簲姝g‘璺姴鐨勯鑹 -------------------------------*/ -int x, y, lx, ly, rx, ry, old_lx, old_ly, old_rx, old_ry, end_rx, end_ry, end_lx, end_ly; //(奇数 偶数 负数(死亡)) +int x, y, lx, ly, rx, ry, old_lx, old_ly, old_rx, old_ry, end_rx, end_ry, end_lx, end_ly; //(濂囨暟 鍋舵暟 璐熸暟锛堟浜★級) int time = 15000, change_time = 5000; -//下一步移动 +//涓嬩竴姝ョЩ鍔 int next[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //w 0 s 1 a 2 d 3 int next_turn = 0, if_die = 0, if_start = 0, if_cheat = 0, if_pass = 0; int automove; @@ -33,11 +33,11 @@ struct step_move int x; int y; } s[1000000]; -//w a d s 对应出0 1 2 3数组 +//w a d s 瀵瑰簲鍑0 1 2 3鏁扮粍 int ch_to_num[128] = {0}; -//相应显示 -char turn_to_show[11] = {" o#$%^&(*X"}; //0对应空 2对应前方不可通行 5对应地刺 8对应达到正确的路劲 9对应死亡 +//鐩稿簲鏄剧ず +char turn_to_show[11] = {" o#$%^&(*X"}; //0瀵瑰簲绌 2瀵瑰簲鍓嶆柟涓嶅彲閫氳 5瀵瑰簲鍦板埡 8瀵瑰簲杈惧埌姝g‘鐨勮矾鍔 9瀵瑰簲姝讳骸 char people_mod[7][20] = { {" 0 "}, {" +/+ /"}, @@ -45,7 +45,7 @@ char people_mod[7][20] = { {" +-+ "}, {" / / "}, {"o o "}}; -//9个区域信息 +//9涓尯鍩熶俊鎭 int turn[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Ahead_on = 0, ahead_on = 0; char mmap[1000][1000]; @@ -134,30 +134,30 @@ int num_map1[100][100] = { {1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}; char map1[200][500] = { {"+-------------------------------------------------+"}, //0 - {"|\\ {} 神 庙 逃 亡 {} /|"}, //1 + {"|\\ {} 绁 搴 閫 浜 {} /|"}, //1 {"| \\ {} ----- ----- {} / |"}, //2 1 {"| \\ *-->----------------<--* / |"}, //3 {"| \\ / |"}, //4 - {"| \\ *-* !游 戏 开 始 !*-* / |"}, //5 + {"| \\ *-* 锛佹父 鎴 寮 濮 锛*-* / |"}, //5 {"| \\ / |"}, //6 {"| \\ *-->----------------<--* / |"}, //7 {"| \\ / |"}, //8 {"| \\ / |"}, //9 8 - {"| \\ / |"}, //10 *9个 + {"| \\ / |"}, //10 *9涓 {"| +\\---------------------------/+ |"}}; //11 -char map[200][500] = { //图形界面 +char map[200][500] = { //鍥惧舰鐣岄潰 {"+-------------------------------------------------+"}, //0 - {"|\\ {} 菜 单 界 面 {} /|"}, //1 + {"|\\ {} 鑿 鍗 鐣 闈 {} /|"}, //1 {"| \\ {} ----- ----- {} / |"}, //2 1 - {"| \\ 寻找神庙的终点 / |"}, //3 + {"| \\ 瀵绘壘绁炲簷鐨勭粓鐐 / |"}, //3 {"| \\ / |"}, //4 - {"| \\ *-* 按空格开始游戏 *-* / |"}, //5 + {"| \\ *-* 鎸夌┖鏍煎紑濮嬫父鎴 *-* / |"}, //5 {"| \\ / |"}, //6 - {"| \\ *--> 左右<->控制游戏 <--* / |"}, //7 + {"| \\ *--> 宸﹀彸<->鎺у埗娓告垙 <--* / |"}, //7 {"| \\ / |"}, //8 - {"| \\ *--> - + 调速: <--* / |"}, //9 8 - {"| \\ (菜单界面还不能控制游戏的) / |"}, //10 *9个 + {"| \\ *--> - + 璋冮燂細 <--* / |"}, //9 8 + {"| \\ (鑿滃崟鐣岄潰杩樹笉鑳芥帶鍒舵父鎴忕殑) / |"}, //10 *9涓 {"| +\\---------------------------/+ |"}, //11 {"| | \\ / | |"}, //12 {"| | \\ / | |"}, //13 @@ -187,7 +187,7 @@ char map[200][500] = { //图 {"| / | \\ |"}, //37 {"|/ | \\|"}, //38 {"+-------------------------------------------------+"}}; //39 -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -196,25 +196,25 @@ void gotoxy(int x, int y) // SetConsoleCursorPosition(handle, pos); } void loading() -{ //按一下提示注意切换英文输入 +{ //鎸変竴涓嬫彁绀烘敞鎰忓垏鎹㈣嫳鏂囪緭鍏 char ch; int n = 11, m; int i, j, k, min = 0, max, ti = 0, tj = 0; int step = 0; char messge[7][15] = { - {" 3D神庙逃亡 "}, - {" C语言精简版 "}, - {" made by 绝伦N"}, + {" 3D绁炲簷閫冧骸 "}, + {" C璇█绮剧畝鐗 "}, + {" made by 缁濅鸡N"}, {" "}, - {" 加载菜单界面 "}, - {" 按任意键继续 "}}; + {" 鍔犺浇鑿滃崟鐣岄潰 "}, + {" 鎸変换鎰忛敭缁х画 "}}; char messge1[7][15] = { - {" 恭喜通关!!"}, - {" 恭喜通关!!"}, - {" 恭喜通关!!"}, + {" 鎭枩閫氬叧锛侊紒"}, + {" 鎭枩閫氬叧锛侊紒"}, + {" 鎭枩閫氬叧锛侊紒"}, {" "}, - {" 按空格重置 "}, - {" 按其他键结束 "}}; + {" 鎸夌┖鏍奸噸缃 "}, + {" 鎸夊叾浠栭敭缁撴潫 "}}; system("color 05"); system("mode con cols=52 lines=42"); m = 5 + n * 4; @@ -335,7 +335,7 @@ void init() int n = 40, i; system("color 07"); system("mode con cols=52 lines=42"); - memcpy(num_map, num_map1, sizeof(num_map1)); //复制地图,用于重新开始。 + memcpy(num_map, num_map1, sizeof(num_map1)); //澶嶅埗鍦板浘锛岀敤浜庨噸鏂板紑濮嬨 ch_to_num['w'] = 0; ch_to_num['s'] = 1; ch_to_num['a'] = 2; @@ -345,7 +345,7 @@ void init() automove = time; Ahead_on = 0, ahead_on = 0; if (if_start == 1) - { //正式开始游戏; + { //姝e紡寮濮嬫父鎴忥紱 1; x = 26; y = 1; @@ -674,7 +674,7 @@ void Ahead(int t) //8 top(t); } } -void stop() //游戏结束加载 +void stop() //娓告垙缁撴潫鍔犺浇 { char ch; int c, d, i; @@ -730,10 +730,10 @@ void show() num_map[x][y] = 9; x = 0, y = 0; } - //识别左边 + //璇嗗埆宸﹁竟 tx = (next_turn == 2 || next_turn == 3) ? lx - next[next_turn][1] : lx + next[next_turn][1]; ty = (next_turn == 2 || next_turn == 3) ? ly - next[next_turn][0] : ly + next[next_turn][0]; - if (num_map[tx][ty] != turn[0]) //lx ly相对运动方向的左边 + if (num_map[tx][ty] != turn[0]) //lx ly鐩稿杩愬姩鏂瑰悜鐨勫乏杈 { turn[0] = num_map[tx][ty]; Left1(turn[0]); @@ -742,14 +742,14 @@ void show() printf("%d", num_map[tx][ty]);*/ tx = tx + next[next_turn][0], ty = ty + next[next_turn][1]; - if (num_map[tx][ty] != turn[1]) //左前方 + if (num_map[tx][ty] != turn[1]) //宸﹀墠鏂 { turn[1] = num_map[tx][ty]; Left2(turn[1]); //1 } /* gotoxy(0, 44); printf("%d", num_map[tx][ty]);*/ - if (num_map[lx][ly] != turn[2] || (lx == x && ly == y)) //原地 + if (num_map[lx][ly] != turn[2] || (lx == x && ly == y)) //鍘熷湴 { if (lx == x && ly == y && turn[2] == -2) 1; @@ -764,7 +764,7 @@ void show() left1(turn[2]); //2} } } - if (num_map[lx + next[next_turn][0]][ly + next[next_turn][1]] != turn[3]) //相对运动方向的前边 + if (num_map[lx + next[next_turn][0]][ly + next[next_turn][1]] != turn[3]) //鐩稿杩愬姩鏂瑰悜鐨勫墠杈 { turn[3] = num_map[lx + next[next_turn][0]][ly + next[next_turn][1]]; if (turn[3] == 9 && num_map[rx + next[next_turn][0]][ry + next[next_turn][0]] != 0) @@ -772,10 +772,10 @@ void show() left2(turn[3]); //3 } - //识别右边 + //璇嗗埆鍙宠竟 tx = (next_turn == 2 || next_turn == 3) ? rx + next[next_turn][1] : rx - next[next_turn][1]; ty = (next_turn == 2 || next_turn == 3) ? ry + next[next_turn][0] : ry - next[next_turn][0]; - if (num_map[rx + next[next_turn][1]][ry - next[next_turn][0]] != turn[4]) //相对运动方向的右边 + if (num_map[rx + next[next_turn][1]][ry - next[next_turn][0]] != turn[4]) //鐩稿杩愬姩鏂瑰悜鐨勫彸杈 { turn[4] = num_map[rx + next[next_turn][1]][ry - next[next_turn][0]]; Right1(turn[4]); //4 @@ -813,8 +813,8 @@ void show() turn[8] = 9; right2(turn[7]); //7 } - //由于识别前面造成的把之后的刷新; - //识别前面 + //鐢变簬璇嗗埆鍓嶉潰閫犳垚鐨勬妸涔嬪悗鐨勫埛鏂帮紱 + //璇嗗埆鍓嶉潰 if (num_map[lx + next[next_turn][0]][ly + next[next_turn][1]] && num_map[rx + next[next_turn][0]][ry + next[next_turn][1]]) { @@ -909,10 +909,10 @@ void withinput() if (kbhit()) { char ch = getch(); - if (if_start == 1 && (ch == 'a' || ch == 'd' || ch == 'w' || ch == -32)) //开始游戏了 + if (if_start == 1 && (ch == 'a' || ch == 'd' || ch == 'w' || ch == -32)) //寮濮嬫父鎴忎簡 { if (ch == -32) - { //同时启用wasd 和上下左右键 //如果读取到第一个是-32那么 继续读取一个字符 + { //鍚屾椂鍚敤wasd 鍜屼笂涓嬪乏鍙抽敭 //濡傛灉璇诲彇鍒扮涓涓槸-32閭d箞 缁х画璇诲彇涓涓瓧绗 char ch1 = getch(); switch (ch1) { @@ -1030,20 +1030,20 @@ void withinput() } } } - else if (if_start == 0 && ch == ' ') //空格开始游戏 + else if (if_start == 0 && ch == ' ') //绌烘牸寮濮嬫父鎴 { if_start = 1; init(); return; } - else if (if_start == 0 && ch == '+') //按G一键开挂(浏览模式) + else if (if_start == 0 && ch == '+') //鎸塆涓閿紑鎸傦紙娴忚妯″紡锛 { time = time + change_time; gotoxy(27, 9); printf("%6d", time); } else if (if_start == 0 && ch == '-') - { //调节速度 + { //璋冭妭閫熷害 if (time >= change_time) { time = time - change_time; diff --git "a/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/Tips.txt" "b/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/Tips.txt" index 4f20ce3..21f6bb9 100644 --- "a/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/Tips.txt" +++ "b/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/Tips.txt" @@ -1,16 +1,16 @@ -程序内涵:Bad Apple,碎月,千与千寻,Astronomia 音乐简谱。 +绋嬪簭鍐呮兜锛欱ad Apple锛岀鏈堬紝鍗冧笌鍗冨锛孉stronomia 闊充箰绠璋便 -注意事项: -1.Beep()函数声音后面会带有振膜的噪音,目前无法解决 -2.进入程序出现音画不同步需要人工开启音响(即音乐播放器随便播放一首歌即可) -3.程序对电脑产生影响未知,请谨慎使用。 -4.请在结尾带上END才能停止输入。 -5.关于速度问题,可以自己去原函数调整quarter_time变量即1/4拍子持续时间,默认300毫秒,官方400毫秒;目前内可识别1/8拍,1/16拍,1/2拍,详细见程序 +娉ㄦ剰浜嬮」锛 +1.Beep锛堬級鍑芥暟澹伴煶鍚庨潰浼氬甫鏈夋尟鑶滅殑鍣煶锛岀洰鍓嶆棤娉曡В鍐 +2.杩涘叆绋嬪簭鍑虹幇闊崇敾涓嶅悓姝ラ渶瑕佷汉宸ュ紑鍚煶鍝嶏紙鍗抽煶涔愭挱鏀惧櫒闅忎究鎾斁涓棣栨瓕鍗冲彲锛 +3.绋嬪簭瀵圭數鑴戜骇鐢熷奖鍝嶆湭鐭ワ紝璇疯皑鎱庝娇鐢ㄣ +4.璇峰湪缁撳熬甯︿笂END鎵嶈兘鍋滄杈撳叆銆 +5.鍏充簬閫熷害闂锛屽彲浠ヨ嚜宸卞幓鍘熷嚱鏁拌皟鏁磓uarter_time鍙橀噺鍗1/4鎷嶅瓙鎸佺画鏃堕棿锛岄粯璁300姣锛屽畼鏂400姣;鐩墠鍐呭彲璇嗗埆1/8鎷嶏紝1/16鎷嶏紝1/2鎷嶏紝璇︾粏瑙佺▼搴 -乐谱区域: +涔愯氨鍖哄煙锛 - C语言简谱 - 【Bad Apple】 + C璇█绠璋 + 銆怋ad Apple銆 |6 7 1' 2' 3' 6' 5' |3' 6 3' 2' 1' 7 |6 7' 1' 2' 3' 2' 1' ||||7 6 7 1' 7 6 5 7 |||||||||| |6 7 1' 2' 3' 6' 5' |3' 6 3' 2' 1' 7 |6 7' 1' 2' 3' 2' 1' ||||7 1' 2' 3' |||||||||||| |6. 7. 1 2 3 6 5 ||||3 6. 3 2 1 7. |||6. 7. 1 2 3 2 1 ||||7. 6. 7. 1 7. 6. 5. 7. |||||||| @@ -19,18 +19,18 @@ |5 6 3 2 3 2 3 ||||||5 6 3 2 3 6 7 ||||1' 7 6 5 3 2 3 |||||2 1 7. 5. 6. 3' 5' ||||||||||| |5' 6' 3' 2' 3' 2' 3' ||5' 6' 3' 2' 3' 2' 3' ||2' 1' 7 5 6 5 6 |7 1' 2' 3' 6 3 5 |||||||| |5 6 3 2 3 2 3 |||||||||5 6 3 2 3 6 7 ||1' 7 6 5 3 2 3 |||||2 1 7. 5. 6. 3 5 ||||||||||| - 【{碎月}】 + 銆恵纰庢湀}銆 |3. 5. 6. 1 2 1 2 3 |1 6. 5. 3. 1 2 6. ||6. 1 2 1 2 3 5 6 1' ||||||||||||||||||||||||||| |7 67 6 5 6 |||5 3 2 3 1 2 1 2 3 6. 12 1 6. 6. 5. 6. 6 1 3 2 5 6 |||||||||||||||||||| |3. 5. 5 6 3 2 3 |1 2 7. 1 7. 5. 6. ||3. 5. 6. 1 2 1 2 2 1 2 1 2 5 3 ||||||||||||||||||| |3 5 6 5 6 3 3 1 23 21 6. |6. 5. 6. 5. 6. 1 2 1 5 6 |||||||||||||||||||||||||||||||||| - 【{千与千寻}】 + 銆恵鍗冧笌鍗冨}銆 |1 5 3' |||||1 5 3' |||1 5 3' |||1 5 1 2||3 1 5 3 |||2 5 2 |||1 6. 3 1 || |7. 0 1 7. ||||6. 7. 1 2 |5. 1 2 3 ||4 43 21 |||2 1 2 |||||3 1 5 3 ||2 5 2 |||| |1 6. 6. 7. 1 |5. 0 0 5. |||6. 7. 1 2 |5. 1 2 3 |4 4 3 2 1 |||1 0 0 3 4 ||5 5 5 ||| |5 5 6 5 4 ||||3 3 3 |||3 3 4 3 2 |||1 1 1 7. |6. 0 7. 7. 1|2 2 3 2 3 |2 3 4 ||||| |5 5 5 |5 5 6 5 4 |3 3 3 |3 4 3 2 1 7. |6. 0 6. 7. 1 2 |5. 1 2 3 |2 2 2 1 1 || - 【{Astronomia}】 + 銆恵Astronomia}銆 |4 4 4 4 6 6 6 6 |5 5 5 5 1' 1' 1' 1' |2' 2' 2' 2' 2' 2' 2' 2' |5 4 3 1 2 0 2 6 ||||||||||||| |5 0 4 0 3 0 3 3 |5 0 4 3 2 0 2 3' ||||2' 3' 2' 3' 2 0 2 3' ||||2' 3' 2' 3' 2 0 2 6 ||||||||| |5 0 4 0 3 0 3 3 |5 0 4 3 2 0 2 3' ||||2' 3' 2' 3' 2 0 2 3' ||||2' 3' 2' 3' 4 4 4 4 ||||||||| diff --git "a/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/\350\207\252\350\241\214\347\274\226\350\257\221.txt" "b/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/\350\207\252\350\241\214\347\274\226\350\257\221.txt" index 462dcd9..9abeed9 100644 --- "a/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/\350\207\252\350\241\214\347\274\226\350\257\221.txt" +++ "b/\347\256\200\350\260\261\346\222\255\346\224\276\345\231\250/C\351\237\263\344\271\220\351\237\263\344\271\220/\350\207\252\350\241\214\347\274\226\350\257\221.txt" @@ -2,7 +2,7 @@ #include #include -void gotoxy(int x, int y) //坐标函数 +void gotoxy(int x, int y) //鍧愭爣鍑芥暟 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; @@ -11,33 +11,33 @@ void gotoxy(int x, int y) // SetConsoleCursorPosition(handle, pos); } // 0 1 2 3 4 5 -//半低音 低音 半中音 中音 半高音 高音 -int Alto[8] = {0, 523, 578, 659, 698, 784, 880, 988}; //中音 -int Bass[8] = {0, 262, 294, 330, 349, 392, 440, 494}; //低音 -int Treble[8] = {0, 1046, 1175, 1318, 1480, 1568, 1760, 1976}; //高音 -int half_Alto[8] = {0, 554, 622, 0, 740, 831, 932, 0}; //半中音 -int half_Bass[8] = {0, 277, 311, 0, 370, 415, 466, 0}; //半低音 -int half_Treble[8] = {0, 1046, 1245, 0, 1480, 1661, 1865, 0}; //半高音 +//鍗婁綆闊 浣庨煶 鍗婁腑闊 涓煶 鍗婇珮闊 楂橀煶 +int Alto[8] = {0, 523, 578, 659, 698, 784, 880, 988}; //涓煶 +int Bass[8] = {0, 262, 294, 330, 349, 392, 440, 494}; //浣庨煶 +int Treble[8] = {0, 1046, 1175, 1318, 1480, 1568, 1760, 1976}; //楂橀煶 +int half_Alto[8] = {0, 554, 622, 0, 740, 831, 932, 0}; //鍗婁腑闊 +int half_Bass[8] = {0, 277, 311, 0, 370, 415, 466, 0}; //鍗婁綆闊 +int half_Treble[8] = {0, 1046, 1245, 0, 1480, 1661, 1865, 0}; //鍗婇珮闊 int music[60] = {0}; char music_map[1000][100]; int line; -int quarter_time; //标准是400,但有时候会慢,有需求调整这里 +int quarter_time; //鏍囧噯鏄400锛屼絾鏈夋椂鍊欎細鎱紝鏈夐渶姹傝皟鏁磋繖閲 void insert() { int i = 0, j = 0; - printf("tip:如果音画不同步,只要随便音乐播放器播放一首歌即可!!!!!!!!!!!!!!!!!\n"); - printf("听到一次鸣笛表示环境正常,软件缺点有细微的鼓点杂音,并且对电脑造成影响未知,请谨慎使用\n"); - printf("程序课查看源码自带乐谱\n"); - printf("简谱规则:1.每行以回车结尾,结尾另起一行写上“END”即视为输入结束\n"); - printf("简谱格式:数字+音阶+持续时长 \n\n"); - printf("数字区 : 1-7即可\n"); - printf("音阶区 : 高音(')低音(.)中音(不填)半低音(-)半高音(+)半中音(*)\n"); - printf("时长区 : 一个空格对应1/8音符 两个空格1/4音符 无空格1/16音符 空格越多延长1/8个音符\n"); - printf("总结: 数字+音阶+持续时长 + ||修饰 + 另起一行END结尾 即是简谱\n"); - printf("示例 <====> |1' 2. 3 4 1234|为一个小节\n"); - printf("输入是任意的,直到END行结束,但请不要输入空白行\n"); - printf("此处可以输入了 记得END另起一行结尾喔\n"); + printf("tip:濡傛灉闊崇敾涓嶅悓姝ワ紝鍙闅忎究闊充箰鎾斁鍣ㄦ挱鏀句竴棣栨瓕鍗冲彲锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛乗n"); + printf("鍚埌涓娆¢福绗涜〃绀虹幆澧冩甯革紝杞欢缂虹偣鏈夌粏寰殑榧撶偣鏉傞煶锛屽苟涓斿鐢佃剳閫犳垚褰卞搷鏈煡锛岃璋ㄦ厧浣跨敤\n"); + printf("绋嬪簭璇炬煡鐪嬫簮鐮佽嚜甯︿箰璋盶n"); + printf("绠璋辫鍒欙細1.姣忚浠ュ洖杞︾粨灏撅紝缁撳熬鍙﹁捣涓琛屽啓涓娾淓ND鈥濆嵆瑙嗕负杈撳叆缁撴潫\n"); + printf("绠璋辨牸寮忥細鏁板瓧+闊抽樁+鎸佺画鏃堕暱 \n\n"); + printf("鏁板瓧鍖 锛 1-7鍗冲彲\n"); + printf("闊抽樁鍖 锛 楂橀煶(')浣庨煶(.)涓煶(涓嶅~)鍗婁綆闊(-)鍗婇珮闊筹紙+锛夊崐涓煶(*)\n"); + printf("鏃堕暱鍖 锛 涓涓┖鏍煎搴1/8闊崇 涓や釜绌烘牸1/4闊崇 鏃犵┖鏍1/16闊崇 绌烘牸瓒婂寤堕暱1/8涓煶绗n"); + printf("鎬荤粨锛 鏁板瓧+闊抽樁+鎸佺画鏃堕暱 + ||淇グ + 鍙﹁捣涓琛孍ND缁撳熬 鍗虫槸绠璋盶n"); + printf("绀轰緥 <====> |1' 2. 3 4 1234|涓轰竴涓皬鑺俓n"); + printf("杈撳叆鏄换鎰忕殑锛岀洿鍒癊ND琛岀粨鏉燂紝浣嗚涓嶈杈撳叆绌虹櫧琛孿n"); + printf("姝ゅ鍙互杈撳叆浜 璁板緱END鍙﹁捣涓琛岀粨灏惧枖\n"); while (1) { scanf("%[^\n]", music_map[i]); @@ -73,35 +73,35 @@ void play() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 03); printf("%c", music_map[i][j]); if (music_map[i][j + 1] == '.') - { //高音区50 + { //楂橀煶鍖50 rate = music_map[i][j] - '0' + 10; gotoxy(j + 1, i); printf("%c", music_map[i][j + 1]); j += 2; } else if (music_map[i][j + 1] == '\'') - { //高音区50 + { //楂橀煶鍖50 rate = music_map[i][j] - '0' + 50; gotoxy(j + 1, i); printf("%c", music_map[i][j + 1]); j += 2; } else if (music_map[i][j + 1] == '-') - { //半低区0 + { //鍗婁綆鍖0 rate = music_map[i][j] - '0' + 0; gotoxy(j + 1, i); printf("%c", music_map[i][j + 1]); j += 2; } else if (music_map[i][j + 1] == '*') - { //半中音区20 + { //鍗婁腑闊冲尯20 rate = music_map[i][j] - '0' + 20; gotoxy(j + 1, i); printf("%c", music_map[i][j + 1]); j += 2; } else if (music_map[i][j + 1] == '+') - { //半高音区40 + { //鍗婇珮闊冲尯40 rate = music_map[i][j] - '0' + 40; gotoxy(j + 1, i); printf("%c", music_map[i][j + 1]); @@ -109,12 +109,12 @@ void play() } else { - rate = music_map[i][j] - '0' + 30; //中音区30 + rate = music_map[i][j] - '0' + 30; //涓煶鍖30 j++; } while (music_map[i][j] == ' ') { - time += quarter_time / 2; //加间隔1/8音符 + time += quarter_time / 2; //鍔犻棿闅1/8闊崇 j++; } j--; @@ -132,13 +132,13 @@ void play() int main() { // 800 1/2 - // 400 中等1/4 + // 400 涓瓑1/4 // 200 1/8 - //默认1/4音符 + //榛樿1/4闊崇 int n, i, j, res; char ch; system("color 07"); - quarter_time = 300; //标准是400,但有时候会慢,有需求调整这里 + quarter_time = 300; //鏍囧噯鏄400锛屼絾鏈夋椂鍊欎細鎱紝鏈夐渶姹傝皟鏁磋繖閲 for (i = 0; i < 6; i++) { @@ -159,11 +159,11 @@ int main() } } Beep(music[31], 400); - printf("直接输入END回车即可进入训练模式\n"); + printf("鐩存帴杈撳叆END鍥炶溅鍗冲彲杩涘叆璁粌妯″紡\n"); insert(); play(); - printf("\nq : 半低音 w:半中音 e:半高音\n"); - printf("a : 低音 s:中音 d:高音\n"); + printf("\nq : 鍗婁綆闊 w锛氬崐涓煶 e锛氬崐楂橀煶\n"); + printf("a : 浣庨煶 s锛氫腑闊 d锛氶珮闊砛n"); res = 30; while (ch = getch()) @@ -177,37 +177,37 @@ int main() { res = 10; gotoxy(0, 0); - printf("低音 "); + printf("浣庨煶 "); } else if (ch == 's') { res = 30; gotoxy(0, 0); - printf("中音 "); + printf("涓煶 "); } else if (ch == 'd') { res = 50; gotoxy(0, 0); - printf("高音 "); + printf("楂橀煶 "); } else if (ch == 'q') { res = 0; gotoxy(0, 0); - printf("半低音 "); + printf("鍗婁綆闊 "); } else if (ch == 'w') { res = 20; gotoxy(0, 0); - printf("半中音 "); + printf("鍗婁腑闊 "); } else if (ch == 'e') { res = 40; gotoxy(0, 0); - printf("半高音 "); + printf("鍗婇珮闊 "); } } return 0; @@ -216,8 +216,8 @@ int main() /* - C语言简谱 - 【Bad Apple】 + C璇█绠璋 + 銆怋ad Apple銆 |6 7 1' 2' 3' 6' 5' |3' 6 3' 2' 1' 7 |6 7' 1' 2' 3' 2' 1' ||||7 6 7 1' 7 6 5 7 |||||||||| |6 7 1' 2' 3' 6' 5' |3' 6 3' 2' 1' 7 |6 7' 1' 2' 3' 2' 1' ||||7 1' 2' 3' |||||||||||| |6. 7. 1 2 3 6 5 ||||3 6. 3 2 1 7. |||6. 7. 1 2 3 2 1 ||||7. 6. 7. 1 7. 6. 5. 7. |||||||| @@ -226,18 +226,18 @@ int main() |5 6 3 2 3 2 3 ||||||5 6 3 2 3 6 7 ||||1' 7 6 5 3 2 3 |||||2 1 7. 5. 6. 3' 5' ||||||||||| |5' 6' 3' 2' 3' 2' 3' ||5' 6' 3' 2' 3' 2' 3' ||2' 1' 7 5 6 5 6 |7 1' 2' 3' 6 3 5 |||||||| |5 6 3 2 3 2 3 |||||||||5 6 3 2 3 6 7 ||1' 7 6 5 3 2 3 |||||2 1 7. 5. 6. 3 5 ||||||||||| - 【{碎月}】 + 銆恵纰庢湀}銆 |3. 5. 6. 1 2 1 2 3 |1 6. 5. 3. 1 2 6. ||6. 1 2 1 2 3 5 6 1' ||||||||||||||||||||||||||| |7 67 6 5 6 |||5 3 2 3 1 2 1 2 3 6. 12 1 6. 6. 5. 6. 6 1 3 2 5 6 |||||||||||||||||||| |3. 5. 5 6 3 2 3 |1 2 7. 1 7. 5. 6. ||3. 5. 6. 1 2 1 2 2 1 2 1 2 5 3 ||||||||||||||||||| |3 5 6 5 6 3 3 1 23 21 6. |6. 5. 6. 5. 6. 1 2 1 5 6 |||||||||||||||||||||||||||||||||| - 【{千与千寻}】 + 銆恵鍗冧笌鍗冨}銆 |1 5 3' |||||1 5 3' |||1 5 3' |||1 5 1 2||3 1 5 3 |||2 5 2 |||1 6. 3 1 || |7. 0 1 7. ||||6. 7. 1 2 |5. 1 2 3 ||4 43 21 |||2 1 2 |||||3 1 5 3 ||2 5 2 |||| |1 6. 6. 7. 1 |5. 0 0 5. |||6. 7. 1 2 |5. 1 2 3 |4 4 3 2 1 |||1 0 0 3 4 ||5 5 5 ||| |5 5 6 5 4 ||||3 3 3 |||3 3 4 3 2 |||1 1 1 7. |6. 0 7. 7. 1|2 2 3 2 3 |2 3 4 ||||| |5 5 5 |5 5 6 5 4 |3 3 3 |3 4 3 2 1 7. |6. 0 6. 7. 1 2 |5. 1 2 3 |2 2 2 1 1 || - 【{Astronomia}】 + 銆恵Astronomia}銆 |4 4 4 4 6 6 6 6 |5 5 5 5 1' 1' 1' 1' |2' 2' 2' 2' 2' 2' 2' 2' |5 4 3 1 2 0 2 6 ||||||||||||| |5 0 4 0 3 0 3 3 |5 0 4 3 2 0 2 3' ||||2' 3' 2' 3' 2 0 2 3' ||||2' 3' 2' 3' 2 0 2 6 ||||||||| |5 0 4 0 3 0 3 3 |5 0 4 3 2 0 2 3' ||||2' 3' 2' 3' 2 0 2 3' ||||2' 3' 2' 3' 4 4 4 4 ||||||||| diff --git "a/\350\266\205\347\272\247\347\216\233\344\270\275/Mario.cpp" "b/\350\266\205\347\272\247\347\216\233\344\270\275/Mario.cpp" new file mode 100644 index 0000000..2b0befe --- /dev/null +++ "b/\350\266\205\347\272\247\347\216\233\344\270\275/Mario.cpp" @@ -0,0 +1,942 @@ +/*--------------------------------------------------------- +绋嬪簭锛 瓒呯骇鐜涗附缁忓吀鐗 锛堢函C璇█锛屽彲鐩存帴缂栬瘧鍣ㄨ繍琛岋級 +浣滆咃細 缁濅鸡N / 404name +璇存槑锛 +--1.鍏充簬鎿嶄綔--- +ad绉诲姩 +w鍘熷湴璺 +qe鏂滆烦 +鏂滆烦鍚屾椂鎸変綇绉诲姩閿疄鐜拌繙璺濈璺宠穬 +韫蹭笅鍜屽彂灏勫瓙寮规病鏈夊啓) +---------------------------------------------------------*/ +#include //getch() +#include +#include +#include +#include + +const int allPages = 14; +const int WIDTH = 300; +const int HEIGHT = 98; +// debug妯″紡锛岄粯璁よ瑙掗攣瀹氬间负1 +const int ifCameraClock = 1; +int action_Cnt = 0; //璁板綍琛屼负index +int nextGo[4][2] = {0, -1, -1, 0, 0, 1, 1, 0}; // awds; 宸﹀彸0 2 涓婁笅1 3 +int if_GameOver = 0; +int event_Change = 0; //澶栫晫浜嬩欢鏄惁鏀瑰彉锛屾敼鍙樺氨杩涘叆鍒ゆ柇鍑芥暟 +int oldMarioX; +int oldMarioY; +int cameraY = 0; +struct player { + int flag; //鍒嗚鲸杩欐槸浠涔 0椹噷濂 1铇戣弴 2鏄熸槦 3鏁屼汉铇戣弴 4鏁屼汉涔岄緹 + int turn; + int leftGoCnt; + int rightGocnt; + int if_Falling; //鏄惁澶勪簬绌轰腑 + int if_Action; // 鏄惁鍦ㄦ墽琛岃繛缁姩浣 骞舵槸瀵瑰簲鍔ㄤ綔鐨勪笅鏍 + int X; + int Y; + int Height; + int Width; + char Image[20][40]; +} +//椹噷濂 +Mario = {0, + 1, + 0, + 0, + 0, + -1, + HEIGHT - 18, + WIDTH / 3 - 50, + 8, + 18, + {" ########### ", " ################ ", " ########## ", + " ## # ", "#### ### ######## ", "##################", + " ### ### ", " ### ### "}}, + // 5涓晫浜鸿槕鑿囦綅缃 + Enemy_Mushroom[5] = + {{3, 0, 0, 0, 0, -1, HEIGHT - 18, WIDTH * 2 / 3, 8, 20, {""}}, + {3, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}, + {3, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}, + {3, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}, + {3, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}}, + // 3涓箤榫熶綅缃 + Enemy_Tortoise[3] = + {{4, 0, 0, 0, 0, -1, HEIGHT - 18, WIDTH * 2 / 3, 8, 20, {""}}, + {4, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}, + {4, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}}, + //鍙樺ぇ铇戣弴 + Mushroom = {1, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}, + //鍙樺ぇ鏄熸槦 + Star = {2, 0, 0, 0, 0, -1, 0, 0, 8, 20, {""}}; + +int jump_Action[10][50] = {{16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {30, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, + 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2}, + {30, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, + 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0}, + {5, 1, 1, 1, 1, 1}}; +char background[HEIGHT + 1][WIDTH * allPages + 1]; +char enemy_Mushroom[9][21]; //铇戣弴鏁屼汉 +char alive_Tortoise_LeftGo[9][21]; //涔岄緹鏁屼汉 +char alive_Tortoise_RightGo[9][21]; +char dead_Tortoise[9][21]; // 榫熷3 +char star[9][21]; //鏄熸槦 +char to_Big_Mushroom[9][21]; //鍙樺ぇ鍜 +char little_Mario_jump[9][19]; +char little_Mario_leftGo1[9][19]; +char little_Mario_leftGo2[9][19]; +char little_Mario_rightGo1[9][19]; +char little_Mario_rightGo2[9][19]; +char little_Mario_stand[9][19]; +char big_Mario_jump[16][21]; +char big_Mario_leftGo1[16][21]; +char big_Mario_leftGo2[16][21]; +char big_Mario_rightGo1[16][21]; +char big_Mario_rightGo2[16][21]; +char big_Mario_stand[16][21]; +void changePlayerTurn(int turn); +void printBackground(); +void printPlayer(); +void HideCursor() //鍏夋爣闅愯棌 +{ + CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //鍚庤竟鐨0浠h〃鍏夋爣涓嶅彲瑙 + SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); +} +void gotoxy(int x, int y) //璁╁厜鏍囩Щ鍔ㄥ埌鍧愭爣鍘绘墦鍗板唴瀹瑰嚱鏁 +{ + HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); + COORD pos; + pos.X = x; + pos.Y = y; + SetConsoleCursorPosition(handle, pos); +} +void initBackground() { + for (int i = 0; i < HEIGHT; i++) { + strcpy(background[i], "\0"); + } +} +void setColor(short x) //鑷畾涔夊嚱鏍规嵁鍙傛暟鏀瑰彉棰滆壊 +{ + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); +} +void getRoot(int pass, int page, char root[]) { + char fileRoot[100] = "pass/"; + char tempStr[10]; + sprintf(tempStr, "%d", pass); + strcat(fileRoot, tempStr); + strcat(fileRoot, "/page"); + sprintf(tempStr, "%d", page); + strcat(fileRoot, tempStr); + strcat(fileRoot, ".txt"); + strcpy(root, fileRoot); +} + +void loadAnimation() { + FILE* fp1 = fopen("animation/little_Mario_stand.txt", "r"); + FILE* fp2 = fopen("animation/little_Mario_leftGo1.txt", "r"); + FILE* fp3 = fopen("animation/little_Mario_leftGo2.txt", "r"); + FILE* fp4 = fopen("animation/little_Mario_rightGo1.txt", "r"); + FILE* fp5 = fopen("animation/little_Mario_rightGo2.txt", "r"); + FILE* fp6 = fopen("animation/little_Mario_jump.txt", "r"); + for (int i = 0; i < 8; i++) { + fgets(little_Mario_stand[i], sizeof(little_Mario_stand[i]) + 1, fp1); + fgets(little_Mario_leftGo1[i], sizeof(little_Mario_leftGo1[i]) + 1, + fp2); + fgets(little_Mario_leftGo2[i], sizeof(little_Mario_leftGo2[i]) + 1, + fp3); + fgets(little_Mario_rightGo1[i], sizeof(little_Mario_rightGo1[i]) + 1, + fp4); + fgets(little_Mario_rightGo2[i], sizeof(little_Mario_rightGo2[i]) + 1, + fp5); + fgets(little_Mario_jump[i], sizeof(little_Mario_jump[i]) + 1, fp6); + } + fclose(fp1); + fclose(fp2); + fclose(fp3); + fclose(fp4); + fclose(fp5); + fclose(fp6); + FILE* Fp1 = fopen("animation/big_Mario_stand.txt", "r"); + FILE* Fp2 = fopen("animation/big_Mario_leftGo1.txt", "r"); + FILE* Fp3 = fopen("animation/big_Mario_leftGo2.txt", "r"); + FILE* Fp4 = fopen("animation/big_Mario_rightGo1.txt", "r"); + FILE* Fp5 = fopen("animation/big_Mario_rightGo2.txt", "r"); + FILE* Fp6 = fopen("animation/big_Mario_jump.txt", "r"); + for (int i = 0; i < 16; i++) { + fgets(big_Mario_stand[i], sizeof(big_Mario_stand[i]) + 1, Fp1); + fgets(big_Mario_leftGo1[i], sizeof(big_Mario_leftGo1[i]) + 1, Fp2); + fgets(big_Mario_leftGo2[i], sizeof(big_Mario_leftGo2[i]) + 1, Fp3); + fgets(big_Mario_rightGo1[i], sizeof(big_Mario_rightGo1[i]) + 1, Fp4); + fgets(big_Mario_rightGo2[i], sizeof(big_Mario_rightGo2[i]) + 1, Fp5); + fgets(big_Mario_jump[i], sizeof(big_Mario_jump[i]) + 1, Fp6); + } + getchar(); + fclose(Fp1); + fclose(Fp2); + fclose(Fp3); + fclose(Fp4); + fclose(Fp5); + fclose(Fp6); + FILE* Fpp1 = fopen("animation/enemy_Mushroom.txt", "r"); + FILE* Fpp2 = fopen("animation/alive_Tortoise_leftGo.txt", "r"); + FILE* Fpp6 = fopen("animation/alive_Tortoise_rightGo.txt", "r"); + FILE* Fpp3 = fopen("animation/dead_Tortoise.txt", "r"); + FILE* Fpp4 = fopen("animation/star.txt", "r"); + FILE* Fpp5 = fopen("animation/to_Big_Mushroom.txt", "r"); + for (int i = 0; i < 16; i++) { + fgets(enemy_Mushroom[i], sizeof(enemy_Mushroom[i]) + 1, Fpp1); + fgets(alive_Tortoise_LeftGo[i], sizeof(alive_Tortoise_LeftGo[i]) + 1, + Fpp2); + fgets(alive_Tortoise_RightGo[i], sizeof(alive_Tortoise_RightGo[i]) + 1, + Fpp6); + fgets(dead_Tortoise[i], sizeof(dead_Tortoise[i]) + 1, Fpp3); + fgets(star[i], sizeof(star[i]) + 1, Fpp4); + fgets(to_Big_Mushroom[i], sizeof(to_Big_Mushroom[i]) + 1, Fpp5); + } + fclose(Fpp1); + fclose(Fpp2); + fclose(Fpp3); + fclose(Fpp4); + fclose(Fpp5); + fclose(Fpp6); +} + +void loadFile(int pass, int pages) { + initBackground(); + loadAnimation(); + for (int page = 0; page <= pages; page++) { + FILE* fp = NULL; //鎵撳紑璇诲啓鏂囦欢 + char fileRoot[100] = "\0"; + getRoot(pass, page, fileRoot); + fp = fopen(fileRoot, "r"); + char buf[1024]; + for (int i = 0; i < HEIGHT; i++) { + if (fgets(buf, sizeof(buf), fp) != NULL) { + strncat(background[i], buf, WIDTH); + // printf("%s\n",background[i]); + } else + break; + } + fclose(fp); + } +} +void gameOver() { + changePlayerTurn(0); + Mario.turn = 1; + Mario.X -= 30; + printBackground(); + printPlayer(); + Sleep(200); + while (Mario.X < HEIGHT) { + Mario.X += 1; + printBackground(); + printPlayer(); + } + Sleep(1000); + system("cls"); + printf("your are lose"); + getchar(); + getchar(); + Mario.turn = 1; + Mario.X = HEIGHT * 2 / 3; +} +void changeTortoiseTurn(player* object, int turn) { + if (turn == 1) { + for (int i = 0; i < Star.Height; i++) { + strcpy((*object).Image[i], alive_Tortoise_LeftGo[i]); + (*object).Image[i][(*object).Width] = '\0'; + } + } else if (turn == 2) { + for (int i = 0; i < Star.Height; i++) { + strcpy((*object).Image[i], alive_Tortoise_RightGo[i]); + (*object).Image[i][(*object).Width] = '\0'; + } + } else if (turn == 3) { + for (int i = 0; i < Star.Height; i++) { + strcpy((*object).Image[i], dead_Tortoise[i]); + (*object).Image[i][(*object).Width] = '\0'; + } + } +} +void printBackground() { + int startPrintY = Mario.Y - WIDTH / 3; + //瑙嗚鍥哄畾 + if (ifCameraClock == 1 && startPrintY < cameraY) { + startPrintY = cameraY; + } + //瑙嗚璺熼殢椹噷濂ュ墠绉 鍚屾椂妫娴嬪唴瀹 + else { + cameraY = startPrintY; + for (int i = 0; i < HEIGHT; i++) { + for (int k = 0; k < 4; k++) { + if (background[i][cameraY + WIDTH + k] == '3') { //鐢熸垚鏁屼汉铇戣弴 + background[i][cameraY + WIDTH + k] = ' '; //娓呯┖ + for (int j = 0; j < 5; j++) { + if (Enemy_Mushroom[j].turn == 0) { + Enemy_Mushroom[j].turn = 1; + Enemy_Mushroom[j].X = i; + + Enemy_Mushroom[j].Y = cameraY + WIDTH - 1 - + Enemy_Mushroom[j].Width + k; + break; + } + } + } else if (background[i][cameraY + WIDTH + k] == + '4') { //鐢熸垚鏁屼汉涔岄緹 + background[i][cameraY + WIDTH + k] = ' '; + for (int j = 0; j < 3; j++) { + if (Enemy_Tortoise[j].turn == 0) { + Enemy_Tortoise[j].turn = 1; + changeTortoiseTurn(&Enemy_Tortoise[j], 1); + Enemy_Tortoise[j].X = i; + + Enemy_Tortoise[j].Y = cameraY + WIDTH - 1 - + Enemy_Tortoise[j].Width + k; + break; + } + } + } + } + } + } + gotoxy(0, 0); + char tempStr[WIDTH + 1]; + for (int i = 0; i < HEIGHT; i++) { + strncpy(tempStr, background[i] + startPrintY, WIDTH); + tempStr[WIDTH] = '\0'; + printf("%s\n", tempStr); + } +} + +void changePlayerTurn(int flag) { + if (flag < 6) { + Mario.Height = 8; + Mario.Width = 18; + for (int i = 0; i < Mario.Height; i++) { + if (flag == 0) + strcpy(Mario.Image[i], little_Mario_stand[i]); + else if (flag == 1) + strcpy(Mario.Image[i], little_Mario_jump[i]); + else if (flag == 2) + strcpy(Mario.Image[i], little_Mario_rightGo1[i]); + else if (flag == 3) + strcpy(Mario.Image[i], little_Mario_rightGo2[i]); + else if (flag == 4) + strcpy(Mario.Image[i], little_Mario_leftGo1[i]); + else if (flag == 5) + strcpy(Mario.Image[i], little_Mario_leftGo2[i]); + Mario.Image[i][Mario.Width] = '\0'; + } + } else if (flag < 12) { + Mario.Height = 16; + Mario.Width = 20; + for (int i = 0; i < Mario.Height; i++) { + if (flag == 6) + strcpy(Mario.Image[i], big_Mario_stand[i]); + else if (flag == 7) + strcpy(Mario.Image[i], big_Mario_jump[i]); + else if (flag == 8) + strcpy(Mario.Image[i], big_Mario_rightGo1[i]); + else if (flag == 9) + strcpy(Mario.Image[i], big_Mario_rightGo2[i]); + else if (flag == 10) + strcpy(Mario.Image[i], big_Mario_leftGo1[i]); + else if (flag == 11) + strcpy(Mario.Image[i], big_Mario_leftGo2[i]); + Mario.Image[i][Mario.Width] = '\0'; + } + } +} +void printObject(player object) { + char tempStr[object.Width + 1]; + /*for(int i = 0; i < Mario.Height; i++){ + strncpy(tempStr,background[oldMarioX - Mario.Height + i] + + oldMarioY,Mario.Width); gotoxy(oldMarioY - cameraY,oldMarioX - Mario.Height + + i); tempStr[Mario.Width] = '\0'; printf("%s",tempStr); + }*/ + setColor(3); + //鎵撳嵃鏂扮殑 + for (int i = 0; i < object.Height; i++) { + if (object.X - object.Height + i > 0) + gotoxy(object.Y - cameraY, object.X - object.Height + i); + printf("%s", object.Image[i]); + setColor(7); + for (int j = 0; j < object.Width; j++) { + if (object.Image[i][j] == ' ' && object.X - object.Height + i > 0) { + gotoxy(object.Y - cameraY + j, object.X - object.Height + i); + printf("%c", + background[object.X - object.Height + i][object.Y + j]); + } + } + setColor(3); + } + setColor(7); +} +//鏌ヨ鎵鏈塧ctive鐨刾layer鎵撳嵃 +void printPlayer() { + if (Star.turn != 0) { + printObject(Star); + } + if (Mushroom.turn != 0) { + printObject(Mushroom); + } + //鎵撳嵃鏁屼汉铇戣弴 + for (int j = 0; j < 5; j++) { + if (Enemy_Mushroom[j].turn != 0) { + printObject(Enemy_Mushroom[j]); + } + } + //鎵撳嵃鏁屼汉涔岄緹 + for (int j = 0; j < 3; j++) { + if (Enemy_Tortoise[j].turn != 0) { + printObject(Enemy_Tortoise[j]); + } + } + //鎵撳嵃椹噷濂 + if (Mario.turn != 0) { + printObject(Mario); + oldMarioX = Mario.X; + oldMarioY = Mario.Y; + } +} +void delete_Block(int x, int y) { + int startx, starty, endx, endy; + while (background[x - 1][y] != '#' || background[x - 1][y + 1] == '#') { + y--; + } + endx = x, starty = y; + x--; + while (background[x][y + 1] != '#') { + x--; + } + y++; + while (background[x + 1][y] != '#') { + y++; + } + startx = x, endy = y; + char change_Block = ' '; + //鐮栧潡鍥村 ackground[startx+1][starty+1] + //鏄疢琛ㄧず鍙樻垚澧欙紝鏄┖鏍艰〃绀烘槸鍙樺ぇ锛屾槸O琛ㄧず鏄《瀹屾秷澶 + if (background[startx + 1][starty + 1] == 'M') + change_Block = 'M'; + else if (background[startx + 1][starty + 1] == 'O' && Mario.turn == 1) + return; //灏忛┈閲屽ゥ涓嶈兘椤剁爾鍧 ) + else if (background[startx + 1][starty + 1] == '1') { + Mushroom.turn = 2; + Mushroom.X = startx - 1; + Mushroom.Y = starty; + change_Block = 'M'; + } else if (background[startx + 1][starty + 1] == '2') { + Star.turn = 2; + Star.X = startx - 1; + Star.Y = starty; + change_Block = 'M'; + } + for (int i = startx; i <= endx; i++) { + for (int j = starty; j <= endy; j++) { + background[i][j] = change_Block; + if (change_Block == ' ' && + (i == startx || i == endx || j == starty || j == endy) && + rand() % 4 == 0) { + int index = rand() % 4; + if (background[i + nextGo[index][0]][j + nextGo[index][1]] == + ' ') + background[i + nextGo[index][0]][j + nextGo[index][1]] = + 'o'; + } + } + } +} +int isInterset(player a, player b) { + if (b.Y > a.Y + a.Width || a.X < b.X - b.Height || b.X < a.X - a.Height || + a.Y > b.Y + b.Width) + return 0; + else { + if (a.flag == 0 && + (a.X == b.X - b.Height)) { //椹噷濂ョ鎾炰笖鏄線涓嬪帇 鍒欐秷鐏 + return 2; + } + return 1; + } +} +//妫娴嬬姸鎬 +int checkInput(player* object, int turn) { + if ((*object).flag != 0 && (*object).Y - cameraY <= 1) { + (*object).turn = 0; + printBackground(); + printPlayer(); + return 0; + } + if (turn == 'a' || turn == 0) { + if (Mario.Y - cameraY <= 1) { + (*object).if_Action = -1; + return 0; + } + for (int i = 0; i < (*object).Height; i++) { + if (background[(*object).X - (*object).Height + i] + [(*object).Y - 1] == 'M' || + background[(*object).X - (*object).Height + i] + [(*object).Y - 1] == '#') { + (*object).if_Action = -1; + if ((*object).flag != 0) { + if ((*object).turn == 1) { + (*object).turn = 2; + if ((*object).flag == 4) { + changeTortoiseTurn(object, 2); + } + } else { + (*object).turn = 1; + if ((*object).flag == 4) { + changeTortoiseTurn(object, 1); + } + } + } + return 0; + } + } + } else if (turn == 'd' || turn == 2) { + if ((*object).Y + (*object).Width - cameraY >= WIDTH) { + if ((*object).flag != 0) { + if ((*object).turn == 1) + (*object).turn = 2; + else + (*object).turn = 1; + } + return 0; + } + for (int i = 0; i < (*object).Height; i++) { + if (background[(*object).X - (*object).Height + i] + [(*object).Y + (*object).Width] == 'M' || + background[(*object).X - (*object).Height + i] + [(*object).Y + (*object).Width] == '#') { + (*object).if_Action = -1; + if ((*object).flag != 0) { + if ((*object).turn == 1) { + (*object).turn = 2; + if ((*object).flag == 4) { + changeTortoiseTurn(object, 2); + } + } else { + (*object).turn = 1; + if ((*object).flag == 4) { + changeTortoiseTurn(object, 1); + } + } + } + return 0; + } + } + } else if (turn == 'w' || turn == 1) { + if ((*object).if_Action == -1 && (*object).if_Falling == 1) + return 0; + if (turn == 'w' && + ((*object).if_Action != -1 || (*object).if_Falling == 1)) + return 0; + if ((*object).X - (*object).Height < 1) { + return 0; + } + for (int i = 0; i < (*object).Width; i++) { + if ((*object).X - (*object).Height - 1 > 0 && + background[(*object).X - (*object).Height - 1] + [(*object).Y + i] == '#') { + //鍒犻櫎椤舵挒鐮栧潡 + delete_Block((*object).X - (*object).Height - 1, + (*object).Y + i); + return 0; + } else if ((*object).X - (*object).Height - 1 > 0 && + background[(*object).X - (*object).Height - 2] + [(*object).Y + i] == '#') { + //鍒犻櫎椤舵挒鐮栧潡 + delete_Block((*object).X - (*object).Height - 2, + (*object).Y + i); + return 0; + } else if ((*object).X - (*object).Height - 1 > 0 && + background[(*object).X - (*object).Height - 1] + [(*object).Y + i] == 'M') { + (*object).if_Action = -1; + return 0; + } + } + } else if (turn == 'e' || turn == 'q') { + if ((*object).if_Action != -1 || (*object).if_Falling == 1) { + return 0; + } + } + //闈為┈閲屽ゥ 涓斿拰鐗╁搧纰版挒 + int intersetFlag = isInterset(Mario, (*object)); + if ((*object).flag != 0 && intersetFlag) { + if ((*object).flag == 1) { //鍙樺ぇ铇戣弴 + (*object).turn = 0; + Mario.turn = 2; + changePlayerTurn(6); + printBackground(); + printPlayer(); + } else if ((*object).flag == 2) { + (*object).turn = 0; + Mario.turn = 2; + changePlayerTurn(6); + printBackground(); + printPlayer(); + + } else if ((*object).flag == 3 || + (*object).flag == 4) { //纰板埌鏁屼汉鎵g敓鍛 + if (intersetFlag == 1) { + Mario.turn--; + if (Mario.turn == 1) { + changePlayerTurn(0); + } else { + gameOver(); + } + } else if (intersetFlag == 2) { + if ((*object).flag == 4) { + if ((*object).turn != 3) { + (*object).turn = 3; + changeTortoiseTurn(object, 3); + Mario.X--; + } else { + (*object).turn = 0; + } + } else + (*object).turn = 0; + Mario.if_Action = 3; + action_Cnt = 0; + printBackground(); + printPlayer(); + } + } + return 0; + } else if ((*object).flag == 0) { //椹噷濂ュ姩 + if (Mushroom.turn != 0 && isInterset(Mario, Mushroom)) { //鍚冨埌铇戣弴 + Mushroom.turn = 0; + Mario.turn = 2; + changePlayerTurn(6); + return 0; + } + if (Star.turn != 0 && isInterset(Mario, Star)) { //鍚冨埌鏄熸槦 + Star.turn = 0; + Mario.turn = 2; + changePlayerTurn(6); + return 0; + } + for (int i = 0; i < 5; i++) { + if (Enemy_Mushroom[i].turn != 0 && + isInterset(Mario, Enemy_Mushroom[i])) { + if (isInterset(Mario, Enemy_Mushroom[i]) == 1) { + Mario.turn--; + if (Mario.turn == 1) { + changePlayerTurn(0); + } else { + gameOver(); + } + } else if (isInterset(Mario, Enemy_Mushroom[i]) == 2) { + Enemy_Mushroom[i].turn = 0; + Mario.if_Action = 3; + action_Cnt = 0; + printBackground(); + printPlayer(); + } + } + } + for (int i = 0; i < 3; i++) { + if (Enemy_Tortoise[i].turn != 0 && + isInterset(Mario, Enemy_Tortoise[i])) { + if (isInterset(Mario, Enemy_Tortoise[i]) == 1) { + Mario.turn--; + if (Mario.turn == 1) { + changePlayerTurn(0); + } else { + gameOver(); + } + } else if (isInterset(Mario, Enemy_Tortoise[i]) == 2) { + if (Enemy_Tortoise[i].turn != 3) { + Enemy_Tortoise[i].turn = 3; + changeTortoiseTurn(&Enemy_Tortoise[i], 3); + Mario.X--; + } else + Enemy_Tortoise[i].turn = 0; + Mario.if_Action = 3; + action_Cnt = 0; + printBackground(); + printPlayer(); + } + } + } + } + return 1; +} +//鍒ゆ柇涓嬪潬 +void checkFalling(player* object) { + if ((*object).flag != 0 && (*object).Y - cameraY <= 1) { + (*object).turn = 0; + return; + } + if ((*object).flag == 0) + event_Change = 0; + if (Mario.X == HEIGHT - 1) { + gameOver(); + return; + } + if ((*object).X == HEIGHT - 1) { + (*object).turn = 0; + printBackground(); + printPlayer(); + } + for (int i = 0; i < (*object).Width; i++) { + if ((*object).X > 0 && + background[(*object).X][(*object).Y + i] == 'M' || + background[(*object).X][(*object).Y + i] == '#') { + (*object).if_Falling = 0; + return; + } + } + (*object).if_Falling = 1; + if ((*object).X - (*object).Height > 0) { + gotoxy((*object).Y - cameraY, (*object).X - (*object).Height); + for (int i = 0; i < (*object).Width; i++) { + printf("%c", + background[(*object).X - (*object).Height][(*object).Y + i]); + } + } + (*object).X++; + printObject((*object)); //鍚戜笅 + if ((*object).flag == 0) { + oldMarioX = Mario.X; + oldMarioY = Mario.Y; + } + checkInput(object, 'z'); +} +void objectGo(player* object) { + int forword = 0; + if ((*object).turn == 0) + return; + if ((*object).turn == 1) + forword = 0; + else if ((*object).turn == 2) + forword = 2; + else if ((*object).turn == 3) { + printObject((*object)); + return; + } + if (checkInput(object, forword)) { + (*object).X += nextGo[forword][0]; + (*object).Y += nextGo[forword][1]; + // c鎿﹂櫎鍙宠竟 + /*gotoxy((*object).Y - cameraY, (*object).X - (*object).Height); + for (int i = 0; i < (*object).Width; i++) { + printf("%c", + background[(*object).X - (*object).Height][(*object).Y + i]); + }*/ + if (forword == 0) { + for (int i = 0; i < (*object).Height; i++) { + gotoxy((*object).Y - cameraY + (*object).Width, + (*object).X - (*object).Height + i); + printf("%c", background[(*object).X - (*object).Height + i] + [(*object).Y + (*object).Width]); + } + } else if (forword == 2) { // c鎿﹂櫎宸﹁竟 + for (int i = 0; i < (*object).Height; i++) { + gotoxy((*object).Y - cameraY - 1, + (*object).X - (*object).Height + i); + printf("%c", background[(*object).X - (*object).Height + i] + [(*object).Y - 1]); + } + } + printObject((*object)); + } +} +void checkObjectGo() { + if (Mushroom.turn != 0) { + checkFalling(&Mushroom); + if (!Mushroom.if_Falling) { + objectGo(&Mushroom); + } + } + if (Star.turn != 0) { + checkFalling(&Star); + if (!Star.if_Falling) { + objectGo(&Star); + } + } + for (int i = 0; i < 5; i++) { + if (Enemy_Mushroom[i].turn != 0) { + checkFalling(&Enemy_Mushroom[i]); + if (!Enemy_Mushroom[i].if_Falling) { + objectGo(&Enemy_Mushroom[i]); + } + } + } + for (int i = 0; i < 3; i++) { + if (Enemy_Tortoise[i].turn != 0) { + checkFalling(&Enemy_Tortoise[i]); + if (!Enemy_Tortoise[i].if_Falling) { + objectGo(&Enemy_Tortoise[i]); + } + } + } +} +void autoChange() { + static int delayTime = 1000; + if (Mario.if_Action != -1) { //鎵ц璺宠穬鍔ㄤ綔鐨勬椂鍊欎笉鑷姩涓嬪潬 + action_Cnt++; + if (Mario.if_Action == 0) { + while (checkInput(&Mario, + jump_Action[Mario.if_Action][action_Cnt]) != 0 && + action_Cnt <= jump_Action[Mario.if_Action][0] && + Mario.X - Mario.Height > 0) { + oldMarioX = Mario.X; + oldMarioY = Mario.Y; + Mario.X += + 2 * nextGo[jump_Action[Mario.if_Action][action_Cnt]][0]; + Mario.Y += nextGo[jump_Action[Mario.if_Action][action_Cnt]][1]; + action_Cnt++; + } + printBackground(); + printPlayer(); + action_Cnt = 0; + Mario.if_Action = -1; + Mario.if_Falling = 1; + } else { + if (action_Cnt > jump_Action[Mario.if_Action][0]) { + action_Cnt = 0; + Mario.if_Action = -1; + Mario.if_Falling = 1; + } else if (checkInput(&Mario, + jump_Action[Mario.if_Action][action_Cnt]) == + 0) { + action_Cnt = 0; + Mario.if_Action = -1; + Mario.if_Falling = 1; + } else { + int cnt = 5; + while (cnt-- && + checkInput(&Mario, + jump_Action[Mario.if_Action][action_Cnt]) != + 0 && + action_Cnt <= jump_Action[Mario.if_Action][0] && + Mario.X - Mario.Height > 0) { + oldMarioX = Mario.X; + oldMarioY = Mario.Y; + Mario.X += + 2 * nextGo[jump_Action[Mario.if_Action][action_Cnt]][0]; + Mario.Y += + 2 * nextGo[jump_Action[Mario.if_Action][action_Cnt]][1]; + action_Cnt++; + } + printBackground(); + printPlayer(); + } + } + checkObjectGo(); + } else if (event_Change || Mario.if_Falling) { + checkFalling(&Mario); + checkObjectGo(); + delayTime = 500; + } + delayTime--; + if (!delayTime) { + delayTime = 500; + checkObjectGo(); + } + //鏌ョ湅鍏朵粬object鐘舵 +} +void manChange() { + static int rightGo = 0; + static int leftGo = 0; + if (kbhit()) { + HideCursor(); + char temp = getch(); + if (checkInput(&Mario, temp) == 0) + return; + event_Change = 1; + if (temp == 'd' || temp == 'D') { + Mario.rightGocnt++; + if (Mario.turn == 1) { //灏忓舰鎬 + if (Mario.rightGocnt % 2 == 0) + changePlayerTurn(2); + else + changePlayerTurn(3); + } else if (Mario.turn == 2) { //澶у舰鎬 + if (Mario.rightGocnt % 2 == 0) + changePlayerTurn(8); + else + changePlayerTurn(9); + } + Mario.Y += 4; + } else if (temp == 'a' || temp == 'A') { + Mario.leftGoCnt++; + if (Mario.turn == 1) { //灏忓舰鎬 + if (Mario.leftGoCnt % 2 == 0) + changePlayerTurn(4); + else + changePlayerTurn(5); + } else if (Mario.turn == 2) { //澶у舰鎬 + if (Mario.leftGoCnt % 2 == 0) + changePlayerTurn(10); + else + changePlayerTurn(11); + } + Mario.Y -= 4; + } else if (temp == 'w') { + Mario.if_Action = 0; + /*if(Mario.X - 21 - Mario.Height > 0) + Mario.X -= 21;*/ + } else if (temp == 'e' || temp == 'E') { + Mario.if_Action = 1; + + } else if (temp == 'q' || temp == 'Q') { + Mario.if_Action = 2; + + } else if (temp == 'o') { + Mario.turn = 1; + changePlayerTurn(0); + } else if (temp == 'p') { + Mario.turn = 2; + changePlayerTurn(6); + } else if (temp == 'z') { + changePlayerTurn(8); + } else if (temp == 'x') { + changePlayerTurn(9); + } else if (temp == 'c') { + changePlayerTurn(10); + } else if (temp == 'v') { + changePlayerTurn(11); + } + printBackground(); + printPlayer(); + checkObjectGo(); + } +} + +void initGame() { + HideCursor(); + oldMarioX = Mario.X; + oldMarioY = Mario.Y; + loadFile(1, 13); //鍔犺浇鏂囦欢 + //鍒涘缓濂芥晫浜洪鍒朵綋5涓+2涓 + for (int i = 0; i < Star.Height; i++) { + for (int j = 0; j < 5; j++) { + strcpy(Enemy_Mushroom[j].Image[i], enemy_Mushroom[i]); + Enemy_Mushroom[j].Image[i][Enemy_Mushroom[j].Width] = '\0'; + } + for (int j = 0; j < 3; j++) { + strcpy(Enemy_Tortoise[j].Image[i], alive_Tortoise_LeftGo[i]); + Enemy_Tortoise[j].Image[i][Enemy_Tortoise[j].Width] = '\0'; + } + strcpy(Star.Image[i], star[i]); + Star.Image[i][Star.Width] = '\0'; + strcpy(Mushroom.Image[i], to_Big_Mushroom[i]); + Mushroom.Image[i][Mushroom.Width] = '\0'; + } + getchar(); + printBackground(); +} +int main() { + initGame(); + while (1) { + manChange(); + autoChange(); + } + return 0; +} diff --git "a/\350\266\205\347\272\247\347\216\233\344\270\275/\350\266\205\347\272\247\347\216\233\344\270\275\346\211\223\345\214\205.rar" "b/\350\266\205\347\272\247\347\216\233\344\270\275/\350\266\205\347\272\247\347\216\233\344\270\275\346\211\223\345\214\205.rar" index c4cde289605110a02f4eb3279ecea3784e19e071..5c00e30ced5ff07ed0491865a0b7de602e3df343 100644 GIT binary patch delta 6347 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