做游戏,学编程(C语言) 9 贪吃蛇

这个案例给出了14级同学大一时实现的贪吃蛇小游戏,分步骤代码、游戏素材可以从百度云盘下载:pan.baidu.com/s/1c1lYKQ

首先可以打开Exe_final目录下的Exe_final.dsw工程文件,编译运行,以下为对应的游戏动图效果:

v2-c98fd61d5f6bb344ece81c897f8e0d1b_b.jpg


主要实现内容包括:贪吃蛇移动 、道具判定、加速减速、生命条处理、分数处理、暂停处理、键盘或鼠标操控。


代码中Loop函数主要控制贪吃蛇的移动及每一帧的必须要完成的指令,其中小蛇的移动和转弯是贪吃蛇游戏实现的难点。

假设小蛇初始状态为:



v2-0746397bd38bc70859253e834ea4bd8a_b.png

上图左侧是对应游戏数据的二维数组存储状态,右侧为小蛇显示效果,蛇头为1,蛇身依次加1。



要让小蛇移动,首先遍历二维数组所有元素,元素为正 则加1:

v2-057a76730674835f9e0a6d859bc5024f_b.png


对全局变量dir进行判断,比如dir==1 表示方向向右,则在元素2的右方设置为1,并且把最大元素归零:



v2-a1b165f36f9c28b616b3ea471a239e95_b.png

以上就实现了小蛇向右的移动,向其他方向的移动实现类似。



双人游戏比较简单,在二维数组中实现即可:

v2-0ac6c34d4e9f1fa6c980929b431073b5_b.png


Loop函数中除了贪吃蛇的移动,还实现了:减速包的随机出现、加速包的随机出现、血包的随机出现、障碍物的随机出现、苹果的随机出现、小爬虫的移动、无敌,加速,减速的判定。



Game函数是核心判定单元。根据贪吃蛇的移动方向dir的1 2 3 4, 分别对蛇头的右左上下方的元素进行判定:

是-1则吃了苹果,蛇身增长 并加分;

是-2则撞墙了,归零g1 游戏结束;

是-3则吃了葡萄, 蛇身增长 如果(wudi==0)也就是 并非无敌状态 g2减少;

是-4则吃了爱心, g2增加 wudi赋值为wuditime
,使贪吃蛇进入无敌状态 。


吃果子后贪吃蛇的增长,和贪吃蛇的移动差不多,唯一的区别是增长不需要把最大元素归零。



Show函数:

v2-7c8bcecdc73080b65c30160fa2d35150_b.png


Start函数:

各个参数的初始化、二维数组a的元素初始化、对图片树的输出、分数显示、生命值显示的初始化、生命条的显示、倒计时画面



Interact函数:有两种操作模式 但本质一样都是对方向dir的修改

第一种 键盘 :根据wasd 把dir修改为1(d右)2(a左)3(w上)4(s下)、按p键暂停

第二种 鼠标
:在Loop函数中会计算出蛇头元素的下标it,jt、根据鼠标点击的横坐标m.x 纵坐标m.y修改dir




hello函数
:显示封面及游戏操作 道具使用说明

bye函数
:显示封底及最终分数

fs函数(记分记血系统):对贪吃蛇生命状态的判定和死亡提示

ryj函数
:获取包括鼠标左键在内的任意键




同学实现的代码不是很规范,大家可以先自己尝试实现,再参考网盘上的分步骤代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值