C语言学习day6-设计简单的推箱子

it2025-05-14  10

走迷宫: 1、定义一个二维数组作为迷宫 2、定义老鼠的坐标 3、获取游戏开始时的时间time(NULL) 4、进入循环 1、system 清理屏幕 2、显示迷宫(遍历二维数组) 3、检查是否走出迷宫 获取游戏结束时的时间:计算出共花费多少时间 time(NULL) 是:结束程序 4、获取方向键并处理 判断接下来要走的位置是否有路 1、把新位置赋值为老鼠’@’ 2、把旧位置赋值为路 ’ ’ 3、把记录老鼠的坐标更新

推箱子: 1、定义角色与数值的关系: 路: 0 ’ ’ 角色: 2 ‘@’ 墙壁: 3 ‘#’ 箱子: 4 ‘ ′ 目 标 点 : 5 ′ ∗ ′ 有 人 的 目 标 点 : 7 ′ @ ′ 有 箱 子 的 目 标 点 : 9 ′ ' 目标点:5 '*' 有人的目标点: 7 '@' 有箱子的目标点:9 ' 57@9’ case 0:printf(" “);break; case 2:printf(”@ “);break; case 3:printf(”# “);break; case 4:printf(”$ “);break; case 5:printf(”* “);break; case 7:printf(”@ “);break; case 9:printf(”$ ");break;

2、定义地图 char map[8][8] = { {0,0,3,3,3,3,0,0}, {0,0,3,5,5,3,0,0}, {0,3,3,0,5,3,3,0}, {0,3,0,0,4,5,3,0}, {3,3,0,4,0,0,3,3}, {3,0,0,3,4,4,0,3}, {3,0,0,2,0,0,0,3}, {3,3,3,3,3,3,3,3}, }; 3、定义记录小人的位置坐标的变量 3、记录步数 4、进入循环 1、刷新屏幕 2、显示地图 3、检查是否胜利:判断数组中9的个数,把步数显示 4、获取方向键并处理 1:路 2:墙壁 3:箱子 箱子前面:路 箱子前面:墙 箱子前面:目标点 4、目标点

注意: 获取方向键使用getch.h头文件中的getch函数 把getch.h头文件复制到共享文件夹,然后通过获取超级管理员权限来移动到 /usr/include/ sudo cp getch.h /usr/include sudo chmod +r /usr/include/getch.h 测试调用getch(),方向键的键值分别是多少 183 上 184 下 185 右 186 左

<stdlib.h> system("命令名") system("clear") 实现清屏 <time.h> time(NULL) 获取自从1970-01-01 00:00:00 到现在过了多少秒 #include <stdio.h> #include <stdlib.h> #include <getch.h> int main(int argc,const char* argv[]) { char map[8][8] = { {0,0,3,3,3,3,0,0}, {0,0,3,5,5,3,0,0}, {0,3,3,0,5,3,3,0}, {0,3,0,0,4,5,3,0}, {3,3,0,4,0,0,3,3}, {3,0,0,3,4,4,0,3}, {3,0,0,2,0,0,0,3}, {3,3,3,3,3,3,3,3}, }; char m_x = 6,m_y = 3; int step = 0; for(;;) { int cnt = 0; system("clear"); for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { switch(map[i][j]) { case 0:printf(" ");break; case 2:printf("@ ");break; case 3:printf("# ");break; case 4:printf("$ ");break; case 5:printf("* ");break; case 7:printf("@ ");break; case 9:printf("$ ");cnt++;break; } } printf("\n"); } if(4 == cnt) { printf("游戏成功,共走了%d步\n",step); return 0; } //角色位置坐标的偏移 int move_x = 0,move_y = 0; switch(getch()) { case 183: move_x--;break; case 184: move_x++;break; case 185: move_y++;break; case 186: move_y--;break; } if(0 == map[m_x+move_x][m_y+move_y] || 5 == map[m_x+move_x][m_y+move_y]) { map[m_x+move_x][m_y+move_y] += 2; map[m_x][m_y] -= 2; m_x += move_x; m_y += move_y; } else if(4 == map[m_x+move_x][m_y+move_y] || 9 == map[m_x+move_x][m_y+move_y]) { if(0 == map[m_x+move_x*2][m_y+move_y*2] || 5 == map[m_x+move_x*2][m_y+move_y*2]) { map[m_x+move_x*2][m_y+move_y*2] += 4; map[m_x+move_x][m_y+move_y] -= 2; map[m_x][m_y] -= 2; m_x += move_x; m_y += move_y; } } } }
最新回复(0)