sq12

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1、实现游戏背景

首先是游戏界面是-个矩形框,雷要设置它在屏幕中的位置以及长宽,之后要设置贪吃蛇最外层的墙体,用双层线表示。最后要将游戏界面划分为一个个的正方形,并且设置正方形的边长。

2、初始化对象“蛇”:首先对游戏对象进行分析:刚开始是一个正方形方格,我们需要设置这一正方形的初始位置,以及边框颜色,填充颜色。

3、蛇头的移动:通过坐标更新实现蛇的移动,需要每隔定的时间,蛇的位置更新一次,这就需要用到计时器事件。并且涉及到“信号和槽"的理解,这里时间是信号,到了这个时间需要被执行的函数,即更新蛇的位置的函数是槽。除了蛇会随着时间的推移向前移动,蛇还会因为键盘的控制而改变方向。因而需要添加键盘事件。这样就实现了一个能移动的小方块。

4、从小方块变成能够变长的蛇:之前是用一个方块,现在改为用方块的vector来组织,进而形成由多个方块组成的蛇。

5、蛇身的移动:对于有长度的蛇,其蛇身的移动公式满足第n节(n大于等于2)在此时刻的位置为第n-1节在上一个时刻所处的位置。

6、判断是否撞墙,通过坐标是否和墙的坐标重合来判断。。

7、显示游戏开始和游戏结束

8、食物:(a)食物的产生:空间上而言,食物是在游戏界面中随机产生:时间上而言,在游戏开始的时候会产生一个食物。这里涉及到每次执行程序都会在相同位置出现合物的问题,本项目采用OT中的ORandomGenerator 类提供的global()->generate()方法实现随机数,从而能够在每次运行之间生成不同的随机数序列:。
 (b)蛇吃食物。蛇吃食物的判定就是蛇头和食物的坐标重合。蛇吃食物之后蛇会变长,这里讲食物的位置设为蛇头的位置,将蛇尾再次添加到代表蛇的数组中,从而实现蛇的边长。吃到食物后分数增加,同时也让难度增加,即蛇的移动速度增加。蛇的移动速度通过计时器刷新的时间间隔来控制。
9、蛇撞到自己则游戏结束:通过判断蛇头和蛇身是否重合判断蛇是否撞到自己,如果撞到,则游戏结束。
10、实现速度增加
11、添加胜利条件:设置达到一定的分值即可获胜,这样也避免了时间间隔小于0.

posted on 2023-10-02 11:47  沈Q  阅读(17)  评论(0编辑  收藏  举报