码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++编程日记:简单的C语言实现推箱子小游戏

时间:2021-02-20 12:30:12      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:平面   函数   ade   -o   ges   结束   技术   很多   ref   

C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了。这个是C语言写的推箱子小游戏,可以使逻辑能力得到提升。

 

技术图片
 

要写这个小游戏,我们面临的问题有以下几个。

1、游戏地图怎么保存?

2、游戏怎么运行?

3、游戏地图怎样在位置固定的情况下不断变化?

4、小人的移动逻辑怎么写?

5、游戏怎么结束?

1、游戏地图怎么保存?

C语言中只有基本的数据类型,游戏地图是二维的平面结构,很容易想到使用二维数组来保存游戏地图。

 

技术图片
 

2、游戏怎么运行?

因为推箱子游戏在游戏结束之前要不断接受用户的输入,所以我们可以设置一个标志来判断游戏是否结束,把这个标志设置为一个 while 循环的条件。

在每次循环中,都要接收用户的输入,根据用户输入的值,

来进行下一步的操作,在游戏中就是小人的移动方向,上下左右,这里我们可以用一个 switch 语句判断。每一次循环,对应一次用户输入。

3、游戏地图怎样在位置固定的情况下不断变化?

在每次循环中,首先要把当前的地图显示出来,便于用户下一次的移动输入。我们将游戏地图设置为一个全局变量,这样在小人移动后,地图上的字符改变就是永久的,然后打印局部改变的新地图。

这样程序不断循环,一遍遍的打印地图,游戏地图上的字符是可以不断改变了,但是地图的位置并不能固定下来。如果我们能刷新界面上的值,不就可以在位置固定的情况下不断变化了。

刷新本质就是除旧迎新,即把原来的除去,迎来新的。在程序中,我们可以把原来的界面清除,再把新的界面显示在原来的位置。

C语言中可以用system("cls")函数来清除控制台的内容,然后我们再把新的地图内容显示出来。

小人的移动逻辑属于具体的程序实现,我们放到下面再说,先来说说程序怎么结束。

4、游戏怎么结束?

前面我们说设置一个标志来判断游戏是否结束,但是游戏什么时候结束呢?推箱子的游戏目标是将每个箱子推到目标位置,这是一种游戏结束的情况,由于每次循环都要判断,可以将其写成一个函数。

另外,如果用户不想玩了想退出,这也是一种游戏结束的情况,这里我只考虑了这两种情况,至于其他情况,读者可自行考虑。

到目前位置我们可以写出程序大致的框架了,外部一个大循环,每次循环都是先刷新界面,接收用户输入,处理用户的输入,判断游戏是否结束。

 

技术图片
 

5、小人的移动逻辑怎么写?

在上面的程序截图中,可以看到我把小人的上下左右移动分别写到了四个函数中,分别是 

MoveToUp()、MoveToDown()、MoveToLeft()、MoveToRight()。以 MoveToUp() 函数为例,我们来分析小人移动的逻辑。

理论上,小人是可以上下左右的移动的,但是,由于有地图的限制,小人不能穿墙的,只能在允许的道路上移动,比如下面这种情况,小人想向上移动,肯定是不允许的。

所以我们要对小人理论上可以移动到的那格(下一位置)进行判断,如果不是限制物(箱子和箱子要移动到的位置下面在详细说),小人就可以移动,如果有限制物就不能移动。

所以我们需要记录一个坐标点的值,这里“下一位置”的参照物可以选取小人当前的位置,游戏开始时,把小人的开始位置作为当前位置。

小人向上移动,“下一位置”的横坐标就是小人当前位置的横坐标减一,纵坐标就是小人当前位置的纵坐标。

然后我们就可以根据“下一位置”的横纵坐标找到具体的字符值,如果是空的,就可以移动,如果是箱子要移动的目标位置,

小人也可以移动,还有一种情况是“下一位置”是箱子,我们还要考虑箱子的“下一位置”,箱子的下一位置也很好得到。

因为小人和箱子是在一条线上移动的,所以在小人向上移动时,箱子的“下一位置”的横坐标就是小人“下一位置”的横坐标减一,两者的纵坐标相同。

同样我们也要对箱子“下一位置”的字符值进行判断,如果字符值是空格和箱子可以移动的位置,就是可以移动的。小人向上移动的代码如下:

 

技术图片
 

小人向下、向左、向右移动的代码也是类似的,无非就是把小人移动的下一坐标改一改,向下移动,

“下一位置”的横坐标就是小人的横坐标位置加一,两者纵坐标相同。

 

技术图片
 

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

免费学习书籍:

技术图片
 

免费学习资料:

技术图片
 

C/C++编程日记:简单的C语言实现推箱子小游戏

标签:平面   函数   ade   -o   ges   结束   技术   很多   ref   

原文地址:https://www.cnblogs.com/zuishuaideou/p/14417971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!