C语言推箱子小游戏
#include <stdio.h> #include <stdlib.h> //♥♠♤❤♂♀★☆☯✡☆★○●◎◇◆□■△▲ //4 是墙 //1 是人 //2 是箱子 //6 目的地 //0 路 //8 完成点 #define length 8 //地图长度 #define high 8 //地图宽度 #define difficulty 2//关卡 int main(int argc, char const *argv[]) { system("stty -echo"); //不显示输入命令 system("stty -icanon"); //一次性读完 不等待回车 int Count = 0; int Checkpoint = 0; //地图制作 int Map[difficulty][length][high] = { { 4,4,4,4,4,4,4,4, 4,4,0,1,0,0,4,4, 4,4,0,4,2,0,0,4, 4,6,0,6,0,0,0,4, 4,0,0,2,2,0,4,4, 4,4,4,0,4,6,4,4, 4,4,4,0,0,0,4,4, 4,4,4,4,4,4,4,4 }, { 4,4,4,4,4,4,4,4, 4,4,0,1,0,0,4,4, 4,4,0,4,2,0,0,4, 4,0,0,6,0,6,0,4, 4,0,0,2,2,0,4,4, 4,4,4,0,4,6,4,4, 4,4,4,0,0,0,4,4, 4,4,4,4,4,4,4,4 } }; while (1) { for (int i = 0; i < length; i++) { for (int j = 0; j < high; j++) { switch (Map[Checkpoint][i][j]) { case 0: printf(" "); break; case 1: case 7: printf("♀ "); break; case 2: printf("★ "); break; case 6: printf("☆ "); break; case 4: printf("■ "); break; case 8: printf("♥ "); break; } } printf("\n"); } Count = 0; for (int i = 0; i < length; i++) { for (int j = 0; j < high; j++) { if (8 == Map[Checkpoint][i][j]) { Count++; } } } if (3 == Count) { printf("恭喜通过第%d关\n",(Checkpoint+1)); Checkpoint++; if (Checkpoint > 1) { printf("通关了全部关卡,你真厉害!\n"); break; } } int people_x; int people_y; for (int i = 0; i < length; i++) { for (int j = 0; j < high; j++) { if (1 == Map[Checkpoint][i][j] || 7 == Map[Checkpoint][i][j]) { people_x = i; people_y = j; i = length; break; } } } char Userkey = getchar(); switch (Userkey) { case 'W': case 'w': //case '72': { if ((Map[Checkpoint][people_x - 1][people_y] == 0) || (Map[Checkpoint][people_x - 1][people_y] == 6)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x - 1][people_y] += 1; } if ((Map[Checkpoint][people_x - 1][people_y] == 2) && (Map[Checkpoint][people_x - 2][people_y] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x - 1][people_y] -= 1; Map[Checkpoint][people_x - 2][people_y] += 2; } if ((Map[Checkpoint][people_x - 1][people_y] == 8) && (Map[Checkpoint][people_x - 2][people_y] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x - 1][people_y] -= 1; Map[Checkpoint][people_x - 2][people_y] += 2; } break; } case 'S': case 's': //case '80': { if ((Map[Checkpoint][people_x + 1][people_y] == 0) || (Map[Checkpoint][people_x + 1][people_y] == 6)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x + 1][people_y] += 1; } if ((Map[Checkpoint][people_x + 1][people_y] == 2) && (Map[Checkpoint][people_x + 2][people_y] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x + 1][people_y] -= 1; Map[Checkpoint][people_x + 2][people_y] += 2; } if ((Map[Checkpoint][people_x + 1][people_y] == 8) && (Map[Checkpoint][people_x + 2][people_y] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x + 1][people_y] -= 1; Map[Checkpoint][people_x + 2][people_y] += 2; } break; } case 'A': case 'a': //case '75': { if ((Map[Checkpoint][people_x][people_y - 1] == 0) || (Map[Checkpoint][people_x][people_y - 1] == 6)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x][people_y - 1] += 1; } if ((Map[Checkpoint][people_x][people_y - 1] == 2) && (Map[Checkpoint][people_x][people_y - 2] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x][people_y - 1] -= 1; Map[Checkpoint][people_x][people_y - 2] += 2; } if ((Map[Checkpoint][people_x][people_y - 1] == 8) && (Map[Checkpoint][people_x][people_y - 2] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x][people_y - 1] -= 1; Map[Checkpoint][people_x][people_y - 2] += 2; } break; } case 'D': case 'd': //case '77': { if ((Map[Checkpoint][people_x][people_y + 1] == 0) || (Map[Checkpoint][people_x][people_y + 1] == 6)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x][people_y + 1] += 1; } if ((Map[Checkpoint][people_x][people_y + 1] == 2) && (Map[Checkpoint][people_x][people_y + 2] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x][people_y + 1] -= 1; Map[Checkpoint][people_x][people_y + 2] += 2; } if ((Map[Checkpoint][people_x][people_y + 1] == 8) && (Map[Checkpoint][people_x][people_y + 2] != 4)) { Map[Checkpoint][people_x][people_y] -= 1; Map[Checkpoint][people_x][people_y + 1] -= 1; Map[Checkpoint][people_x][people_y + 2] += 2; } break; } } system("clear"); } system("stty echo"); //取消 不显示输入命令 system("stty icanon"); //取消 一次性读完 不等待回车 return 0; }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号