首先推箱子是c语言的一个经典的项目,本篇文字将会介绍如何从零开始实现c语言如何实现推箱子
游戏元素:
空地 0墙壁 1角色 2箱子 3胜利点 4游戏目的:
玩家控制角色在地图的空地上进行移动,通过推动箱子躲避障碍,将所有的箱子推至胜利点即可成功。
首先存储地图我们使用数组来进行存储,为什么我们会用到char而不是int?是因为int普遍为4字节,char为1字节,我们就可以大大减少存储地图所需要的内存。如果要写多张地图的话,仅仅将数组扩充至三维即可,作者将会在之后的文章进行说明。
char map[10][10] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 0, 0, 0, 1, 0, 0, 扬州科技学院0, 1 }, { 1, 0, 0, 0, 0, 1, 4, 0, 0, 1 }, { 1, 0, 0, 0, 0, 1, 1, 0, 0, 1 }, { 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 }, { 1, 0, 0, 2, 0, 0, 0, 0, 0, 1 }, { 1, 1, 1, 1, 0, 0, 3, 0, 0, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } };
对应地图的打印我们则需要对地图进行遍历,利用switch语句将地图打印在控制台上面。
for (size_t i = 0; i < 10; i++) { for (size_t j = 0; j < 10; j++) { switch (map[i][j]) { ca 0: printf(" "); // 注意一点是两个空格,如果是一个空格的时候会使地图打印出现一些问题 break; ca 1: printf("█"); break; ca 2: printf(""); break; ca 3: printf("●"); break; ca 4: printf(""); break; default: break; } } printf("\n"); }
int posx = 0, posy = 0; for (size_t i = 0; i < 10; i++) { for (size_t j = 0; j < 10; j++) { if (2 == map[i][j] || 2 + 4 == map[i][j]) { posx = i; posy = j; break; //找到角色,记录其所在的x轴和y轴的坐标 } } }
// 控制(键盘:wsad(上下左右)) // 需要从键盘获取按键(字符) switch (getch()) // getch()该方法需要在开头导入#include <conio.h>{ ca 'w': ca 'w': printf("向上\n"); /* 向上逻辑: 改变数组元素的值 以人为参考 上面可能是: 空地 移动 墙壁 不动 成功点 移动 箱子 判断箱子上面是个啥 空地 移动 成功点 移新班主任自我介绍动 墙壁 不动 另一个箱子 不动 */ // 上面是空地或成功点 map[posx][posy]:主角所在的位置 if (0 == map[posx - 1][posy] || 4 == map[posx - 1][posy]) { // 当前位置人离开 map[posx][posy] -= 2; // 上面位置人过来 map[posx - 1][posy] += 2; } // 上面是箱子(将箱子从点上推走) el if (3 == map[posx - 1][posy] || 3 + 4 == map[posx - 1][posy]) { // 箱子上面是空地或成功点 map[posx - 1][posy]: 箱子位置 if (0 == map[posx - 2][posy] || 4 == map[posx - 2][posy]) { // 当前位置人离开 map[posx][posy] -= 2; // 上面位置人过来 map[posx - 1][posy] += 2; // 上面位置箱子离开 map[posx - 1][posy] -= 3; // 上面的上面箱子过来 map[posx - 2][posy] += 3; } } break; ca 's': ca 's': printf("向下\n"); break; ca 'a': ca 'a': print螃蟹赛跑f("向左\n"); break; ca 'd': ca 'd': printf("向右\n"); break; default: break; }
对地图遍历搜索,如果发现没有箱子的话,就可以判断为客服回访话术大全胜利。(size_t是c++里面的东西,size_t相当于unsigned int,这里仅做理解即可,可以用int来代替size_t)
bool iswin() { for (size_t i = 0; i < 10; i++) { for (size_t j = 0; j < 10; j++) { if (map中秋节的问候短信[i][j] == 3) { return fal; } } } return true;}
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!
本文发布于:2023-04-05 01:40:49,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/6471461972c5bd652413d97b30fef508.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:详解C语言实现推箱子的基本功能.doc
本文 PDF 下载地址:详解C语言实现推箱子的基本功能.pdf
留言与评论(共有 0 条评论) |