还记得你的诺基亚手机上的贪吃蛇吗?
那是满满的回忆啊。
有没有想法自己写一款贪吃蛇游戏?
废话不多说,直接来!
先看张成果图
先理一下贪吃蛇的关键逻辑:
先定义一个蛇可活动的范围。
贪吃蛇移动
贪吃蛇的身体存放在一个list内, list中的元素代表画布上的坐标,list的最后一个元素代表蛇头,把新蛇头的坐标添加到list的尾部,然后把list的第一个元素(也就是蛇尾)删掉,那么在下一次画布更新的时候,根据list的元素去画蛇,就模仿了蛇移动,如果蛇吃到了食物,不删除蛇尾就行了,然后刷新食物的位置
如何判断吃到了食物?
下一次的蛇头与食物的坐标一致即可
如何刷新食物
在边界内,除去蛇的身体的任一处坐标即可
如何控制蛇的方向
先定义蛇的初始方向,下一步的方向只能往蛇方向的垂直的方向去拐弯。比如方向有上下左右,蛇的初始方向是右,那更改的方向只能是上或者下,不能是左和右。
如何判断游戏结束
当蛇头超出定义的画布边界,或者蛇头的元素已经在list中,游戏结束。
ok,下边看关键的逻辑代码
先定义一个Snake类
类初始化函数中 定义个蛇活动区域,定义了蛇身,蛇头,初始化方向,食物,速度,分数等
在Snake类中还定义了生成食物坐标的函数,蛇移动的函数,具体实现逻辑可以看代码中的注释
定义了游戏继续和游戏结束的函数
方向判断的函数
下边是主函数
画布更新,调用蛇移动的函数,完成蛇的移动。
到此展示了一些主要的逻辑实现。
获取完整的代码和打包好的exe程序,后台回复 贪吃蛇 即可。
这就完成了一个简易版的贪吃蛇,后续如果想优化,可以优化界面,添加资源文件,添加游戏音效等,这就当作作业留给想优化的同学吧。
好的,装x完毕,撤!(完)