轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 初级进阶 查看主题

微信小程序之Canvas--玩坏FlappyBird

发布者: 伏地魔 | 发布时间: 2017-12-20 04:19| 查看数: 2435| 评论数: 1|帖子模式

说点:小程序平台,玩过五子棋,玩过贪吃蛇, 你玩过FlappyBird吗? 
效果图:

实现细节:

JS逻辑:

主要包括 小鸟下降逻辑、随机空隙管道逻辑、 单机屏幕事件、碰撞事件、计数逻辑

小鸟下降:

  1. birdDown:function(){
  2. ctx.clearRect(0, 0, res.windowWidth, res.windowHeight)
  3. bird.y += bird.factor
  4. ctx.drawImage(birds[Math.floor(Math.random()*2)], bird.x, bird.y, bird.px, bird.px)
  5. ctx.draw()
  6. timer1 = requestAnimationFrame(this.birdDown)
  7. if( bird.y>res.windowHeight){
  8. cancelAnimationFrame(timer1)
  9. }

随机空隙管道:

  1. pipe:function(){
  2. pipe.x-=pipe.factor
  3. bird.y += bird.factor
  4. if(pipe.x <-pipe.width){
  5. pipe.x = res.windowWidth
  6. gapHeightY = Math.floor(Math.random()*(res.windowHeight-200))+20
  7. }
  8. ctx.drawImage('../../images/flappybird/pipe_down.png', pipe.x, 0, pipe.width, gapHeightY)
  9. ctx.drawImage('../../images/flappybird/pipe_up.png', pipe.x, gapHeightY+gapHeight, pipe.width, res.windowHeight-gapHeightY-gapHeight)
  10. }

单机屏幕事件:

  1. bird.y -= bird.factor2
  2. // 只需改变bird的y坐标值即可

碰撞事件:

  1. // 这里加了一个插值数10,目的是为了更贴近碰撞
  2. crash:function(){
  3. bird.cX = bird.x+bird.px-10
  4. bird.cY = bird.y
  5. pipe.cX = pipe.x
  6. pipe.cY = gapHeightY
  7. if(bird.cX > pipe.cX & bird.cY < pipe.cY-10 ){
  8. if(bird.cX < pipe.cX+pipe.width){
  9. cancelAnimationFrame(timer1)
  10. this.gameOver();
  11. }
  12. }else if(bird.cX > pipe.cX & bird.cY+bird.px > pipe.cY+gapHeight+10){
  13. if(bird.cX < pipe.cX+pipe.width){
  14. cancelAnimationFrame(timer1)
  15. this.gameOver();
  16. }
  17. }
  18. },

计数逻辑:

  1. // 根据小鸟x坐标和管道宽度进行判断 每完成一次就加1
  2. if(pipe.x ==10){
  3. bnum+=1;
  4. console.log(bnum)
  5. this.setData({
  6. bird_number:bnum
  7. })
  8. }

源码地址: 
你如果觉得不错,欢迎给我一个star!

最新评论

cfcgary 发表于 2022-5-6 06:53
下载网站源码怎么设置

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表