基于WIN32 API界面编程实现的百战天虫小游戏

一、游戏主旨

在游戏编写的过程中,我一直在思考我自己制作的游戏的主旨是什么,想来想去,结合“百战天虫”游戏的特点,我想到了“战争”这个主旨。游戏中阵营的相互厮杀不正如国家之间的战争吗?于是,我希望通过这款游戏反映我对战争的一些思考。在游戏结束或者暂停的时候,没有显示胜利者,因为我觉得战争没有赢家,而在屏幕上打印出关于战争的名言,包括我还在某个界面埋藏了我设计游戏的彩蛋。总的来说,我希望通过这个游戏来表达反对战争、呼吁和平的主旨。

二、遇到的问题

本次程序设计,让我无比清楚地感受到了程序的前后关联性

拿到框架后,第一个难题是理解“框架在干什么?怎么实现相应功能的?”,在理解框架的过程中,我清楚地意识到,今后在给别人写程序的时候,一定要注意程序的可读性。之后,我遇到的第二个难题是复杂随机地形,在解决这个问题的过程中,我意识到“人物跳跃”“人物运动”“地形破坏”等等功能都是和最初的地形设计紧紧相关的,是相互配套的,同时,地形写的复杂,后面的种种也就相应复杂。刚开始我使用了一维数组产生复杂随机地形,可是到游戏制作后期,我发现一维数组的效率太低,使游戏变得很卡,我只得把地形改成效率更高的二位数组,但是,这简直是一个灾难。以前我所有写的关于人物控制、碰撞的函数都得重写。这个经历让我意识到“三思而后写”的重要性,不过话又说回来,如果没有前期的算法以及其导致的种种问题的出现,我们又怎能想出更好的算法呢?

第二个感受很深的是:算法>代码

真正困难的是想出算法,理清逻辑,逻辑清楚了,代码很快就能写好,如果逻辑不清楚,写代码的时候很容易就晕了。在写一个大程序的过程中,功能块内部的逻辑,以及各部分的逻辑关系都十分重要,这是本次大作业给我十分深刻的体验。

第三个感受很深的是:其实没你想的那么难

以前觉得有些游戏功能很神奇,入了门后,发现实现这些功能真的没有想的那么难,用一些“转化”、“加额外的限定条件”思想,这些看似神奇的游戏功能就能清楚实现了。这也让我明白,逻辑上一些无条件的很完备的命题,在实现的时候往往变得有条件而且不是完备的了,这大概也是“科学”和“工程”之间的小小差异吧。

三、游戏的设计思路

人类都喜欢生动的画面

在制作游戏的过程中,我始终秉承的一个原则是:多细节、多动画。我试图让游戏中能动的元素都动起来,“飘动的旗子”、“扔手雷、发射火箭弹的动作”、“自动锁定的镜头”,这些元素让整个游戏画面变得更加有生气,没有人的眼球喜欢静止不动的画面。

我们的耳朵很敏感

我在挑选bgm的时候很小心,好的bgm会激起人的共鸣。为了凸显战争的残酷,主菜单的bgm选的很空冷而壮丽,但在四个游戏地图的bgm选取就相对轻松,因为我并不想让玩家怀着很沉重的心情去玩这款游戏。而四个地图的bgm也是选择与背景图片相关的,各有各的特色。我一直相信,精彩的配乐让游戏伟大。

不可知性

如果在玩游戏的过程中 ,玩家能预测到游戏下一步将要发生什么,那么游戏的可玩性就大大下降,为此,我在使用素材时,用了随机选取备用素材,例如:我在英雄回合开始语音中,为每个英雄准备了8个不同的语音,在暂停界面准备了8个不同的画面。通过这样的做法,游戏的不可知性大大提高,同时也让游戏中的语音、名言成为游戏之外本身很有趣的小细节。

18423381-4a94100b61ea45bb.png

源码下载地址:https://www.write-bug.com/article/1779.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值