今天心血来潮,想搞个推箱子游戏玩玩,顺便把过程记录下来跟大家分享一下。
准备工作
我先在网上找些资料,看看别人是怎么做的。发现大部分都是用字符来表示游戏元素,比如用 '@' 表示人,用 '#' 表示墙,用 '$' 表示箱子等等。我也打算这么干,简单直接。
我用的开发工具是 VS2022,用啥都一样,VScode,Dev-C++ 啥的都能搞。主要还是看个人习惯。
画地图
得有个地图,我直接用一个二维数组来表示,不同的数字代表不同的元素。比如:
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
- 0 代表空地
- 1 代表墙
- 2 代表箱子
- 3 代表人
- 4 代表目标点
然后我就手动敲一个简单的地图,就是一个 12x13 的数组,里面填上对应的数字,一个简陋的地图就出来。
显示地图
有地图数据,接下来就是把它显示出来。我找个 graphics.h 的库,可以用来画图。然后根据数组里的数字,在对应的位置画上不同的字符,比如是 1 就画个 '#',是 2 就画个 '$',以此类推。
人物移动
显示搞定,接下来就是让人物动起来。我用个 while 循环,不断监听键盘输入,如果是方向键,就改变人物的坐标,然后根据新的坐标重新绘制地图。这里要注意判断边界和障碍物,不能让人物走出地图或者穿墙。
为让人物移动,我还找一个获取键盘输入的函数,具体是啥我给忘,反正就是监听键盘的输入,然后根据输入的方向键来更新地图上人物的位置。
推箱子
人物能动,接下来就是推箱子。这块稍微麻烦一点,要判断人物前方是不是箱子,如果是箱子,还要判断箱子前方能不能移动。如果能移动,就把箱子和人物一起移动。这里要多加几个判断条件,逻辑稍微有点绕。
判断胜利
就是判断游戏是否胜利。我的想法很简单,就是遍历整个地图,看看是不是所有的目标点上都有箱子。如果都放好,那就提示游戏胜利。
经过一番折腾,总算是把推箱子游戏的基本功能给实现。虽然画面比较简陋,但是基本的可玩性还是有的。以后有时间再慢慢完善,比如加个关卡选择,或者美化一下界面啥的。
这回的分享就到这里,希望能给想做小游戏的朋友们提供一点思路。