首页 > 其他分享 >推箱子:进行游戏控制

推箱子:进行游戏控制

时间:2022-10-20 15:01:57浏览次数:53  
标签:case 箱子 游戏 控制 ++ 位置 int

上一篇我们完成了游戏的初始化工作,本篇我们开始进行游戏控制
首先我们先定义方向
//方向
enum Ch{ up = 72, down = 80, left = 75, right = 77 };
Ch ch; 接下来开始进行游戏控制。
本游戏为控制人物的移动,故需要首先获取人物的位置
//人的行与列
int r, c; for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 10; j++)
{
if (x[i][j] == 4 || x[i][j] == 6)
{
r = i;
c = j;
} }
} 如上,我们便可以寻找到人物的位置坐标了
人物可以有上下左右四个方向的移动,通过键盘控制。在这里,我们选用switch结构来进行操作
首先我们介绍向上走
switch (getch())
{//这里的三个case,分别表示我们可以用键盘方向键与wsad来进行控制
case 72:
case 'w':
case 'W':
//人的上方不能是墙
//人的上方是箱子且箱子的上方不能是墙或者箱子
if (((x[r][c - 1] == 3 || x[r][c - 1] == 5) && (x[r][c - 2] != 1 && x[r][c - 2] != 3 && x[r][c - 2] != 5))
|| x[r][c - 1] == 0 || x[r][c - 1] == 2)
{
if (x[r ][c- 1] == 3 || x[r ][c- 1] == 5)
{
x[r ][c- 2] += 3;
x[r][c - 1] += 1;
x[r][c] -= 4;
}
else
{
x[r ][c- 1] += 4;
x[r][c] -= 4;
}
}
break;以上便是向上走的编写,向下/向左/向右同理编写。
请思考,为什么switch结构中有时候需要加break,有时候不需要呢??

如何判断游戏结束呢,可以有多种方式,例如判断数组中是否还有3(箱子)或者2(位置)。在这里我们采用一个复杂的判断方式,采用本局中所得分分数与位置和箱子的数量相同进行判断

位置和箱子的数量
Next_game = 0;
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 10; j++)
{
if (x[i][j] == 2 ||x[i][j] == 5)
Next_game++;
}
}

//生成本局游戏分数
score = 0;
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 10; j++)
{
if (x[i][j] == 5)//得分
{
score += 1;

} }
}//判断一关是否结束(有几个位置)、即所得的分与位置和箱子的数量相同 if (Next_game == score)
{
cleardevice(); //此函数在easyx图形界面库中
TCHAR s1[] = _T("完成本关。开始进入下一关");
outtextxy(200, 200, s1);
Sleep(2000);
}-------------------------------------
以上即为推箱子的简要编写介绍,如需开发其他功能,请自行探索。
如想要获取源文件输入【推箱子】即可获取

标签:case,箱子,游戏,控制,++,位置,int
From: https://blog.51cto.com/u_15837129/5780118

相关文章

  • 测试开发jmeter forEach控制器
    测试开发jmeterforEach控制器 forEach控制器的使用场景:主要是对大量数据轮询就行接口请求 forEach控制器的使用前提:将数据进行参数化测试开发jmeterforEach控制器的......
  • 经纬恒润新一代差速四驱域控制器成功量产
        作为本土先进的汽车电子系统供应商,经纬恒润在汽车动力传动领域也有着丰富的研发和生产经验。目前,公司已推出了三代差速锁电子控制单元,均满足ISO26262ASIL-B功......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的1.能够理解POX控制器的工作原理;2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;3.......
  • 如何将docker镜像的日志输出到标准输出/错误输出?(将自定义的应用日志输出到控制台)
    对于一个nginx容器,如果要通过dockerlogs命令,直接查看容器的日志,该如何来操作? 非常的简单,就是将应用(nginx)生成的日志输出到标准输出或者错误输出。 那么,具体的实现......
  • 实验2 C语言控制语句应用编程
    实验一#include<math.h>#include<time.h>#defineN5intmain(){intnumber;inti;srand(time(0));for(i=0;i<N;++i){number=......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验五:开源控制器实践——POX
    一.实践目的1.能够理解POX控制器工作原理2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;3.能够运用POX控制器编写自定义网......
  • 实验5:开源控制器实践——POX实验5:开源控制器实践——POX
    一、实验要求1.搭建下图所示SDN拓扑,协议使用OpenFlow1.0,控制器使用部署于本地的POX(默认监听6633端口)2.a)使用tcpdump验证Hub模块,h1pingh2、h2和h3的tcpdump抓包结果......
  • 实验5:开源控制器实践——POX
    一、基本要求h1pingh2、h2和h3的tcpdump抓包结果使用tcpdump验证Hub模块使用tcpdump验证Switch模块L2_learning模块代码流程图(二)进阶要求1.重新搭建(一)的拓......
  • 实验5:开源控制器实践——POX
    一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够运用POX控制器编写自定义网络......