像素鸟游戏总结

一、给游戏分块

给游戏分为4部分内容,分别是bird  、 background、game、main

1.bird:

在这个部分中,鸟具有的属性是:isDie(是否死亡)。方法是,扇动翅膀,下落,上跳,死亡。

2.background:

在这个部分中,背景的属性有:背景,管道(管道的属性有各个管道的高度宽度移动步长等属性。这里的管道是指上下两个管道)。方法有:背景移动,管道生成,管道移动等。

3.game:

在这个部分中,属性有:管道的索引,是否停止,游戏是否结束等属性,方法有:开始,判定,暂停,结束等。

4.main:

这个部分主要是用控制游戏的过程的,比如让游戏开始,暂停,或者在游戏结束后让游戏重新开始

二、遇到的问题及解决办法

1.背景无限循环问题:

1.一开始,我将管道与天空和陆地等背景放在一个盒子中,然后产生的问题是,天空和陆地是无限循环的,但是管道我无论如何也做不到无限循环,于是我换了个思路,将管道与天空和陆地隔开,管道单独放到一个盒子中去,然后现在至少天空和陆地可以无限循环,并且不受影响。

2.对于让管道无限循环的问题,我采取的解决方式是,让装管道的盒子单独移动,并且往一个方向一直移动下去,移动的速度和背景一样。然后在这个盒子每移动了特定的一段长度时,生成一个管道(上下两个管道)。

(因为天空和陆地的盒子是循环出现的,而管道的盒子是一个方向一直移动的,所以他们不能共用一个盒子)

2.判定小鸟撞到管道的问题:

1.一开始,我用时间判定,当小鸟飞到离第一个管道还有一个管道的时候,开始计时,然后计算小鸟每飞过一个管道到达下一个管道所需要的时间t1,设置一个定时器time1,设置time1t1执行一次,在time1中再设定一个定时器time2i,计算小鸟完全飞过一个管道的时间t2,然后将time2设置为1ms执行一次,每执行一次i加一,当i等于t2时,清除定时器time2,在i未到达t2时,若小鸟的高度不在上下两个管道之间,则判定小鸟撞到了管道,清除所有定时器,重新开始。但是这有一个缺点,就是每暂停一次,程序就会出错,因为当time1或者time2进行到一半时,暂停,就会清除定时器,然后再重新开始的时候,time1和time2又会重新计时,这样的话,小鸟的位置和管道的位置就会对不上。

2.第二种方案就是,先设定一个定时器runtime,当装管道的盒子移动的距离为第一个管道到小鸟的距离时,开始判定(用 if )。计算一个管道到下一个管道的距离s1,从开始判定的位置开始,每移动一个s1的倍数的距离,管道的索引值index加一,这样就可以让小鸟分别与每根管道进行判定。再计算下一根管道的左侧距的位置pipeWidth(上一根管道的左侧与装管道的盒子移动的距离之差),再计算小鸟刚到与管道左侧接触时管道左侧的位置P1和小鸟完全飞出管道时管道左侧的位置P2如此,当pipeWidthP1P2之间时,进行碰撞判定就解决了,目前没有发现什么问题,判断代码:

因为小鸟的左右位置是不变的,所以我们只需要根据管道左侧的位置来进行判定就行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值