基础前端

canvas 小游戏,奔跑吧!忍者!

2019-07-31  本文已影响1人  CondorHero

源码位置:https://github.com/condorheroblog/My-Second/tree/master/Canvas

今天这个游戏是我学习 canvas 以来动手写的第一个游戏,第一次动手我感觉写的还不错,有鉴于此,保守打算要写三个 canvas 游戏。其他类型的游戏可能不写出来但弄懂主要业务逻辑还是要的。可能是我构造函数学的好,这次使用 canvas 加上面向编程写这个游戏很顺新,不会的地方,停下来想一想,时间可长可短但问题也就解决了。可能也是游戏的业务并不是太难吧。

参照效果

Running Ninja : http://flash.7k7k.com/cms/cms10/20171212/1002107071/2/games/Running-Ninja/index.html

实现的思路分析

忍者这个地方有两个难点:

  1. 第一个难点就是入场动画,需要保持画面整体静止,忍者从左边跑入画面,然后进行原地奔跑,画面也同时进行运动。这个我是在定时器那个地方进行控制的,游戏一开始就让忍者运动,当忍者距离左边框一定距离,打开其他类的控制。整个画面同时运动了。
  2. 第二个难点就是二级跳,解决方案如下:

完美解决忍者二级跳的功能:

因为之前写这个游戏只写了一个框架,整体上和原游戏大差不差,细节来不及琢磨,游戏最能难道我的地方就是忍者的二级跳功能。刚开始写的时候,一级跳很快实现了,二级跳也没多久就完成了,等测试的时候发现忍者并不是简单的点一下跳一下,双击可以连跳两次,但原游戏的忍者厉害的地方就是忍者可以在一级跳的过程中还没落地的时候,再点击一下,可以在原基础上在起跳一次。而我当时想了好多办法,但只有两个办法是半成功,因为这两个办法只能各自独立完成实际游戏效果的一半。

  1. 只能完成双击二级跳,单击一级跳,单击过程中不能实现二级跳。
  2. 双击二级跳失效,变成双击单击都是一级跳,但单击过程中可以实现二级跳。
  3. 正是这种情况造成,一级二级跳的时候的音乐也加不上。。。

想了几天没思路,到这时思路有点混乱了,后来其他功能写完了,才回来慢慢的去盘这个地方的思路,还是用条件判断来控制鼠标点击次数的不同来给不同的条件,这次就完美解决了单击跳,单击下落未落地二级跳,双击二连跳的问题,这个地方是整个游戏对我来讲最大的难点,就是糊弄不出来。整的你没脾气。就得就得静下心来想逻辑,用命去盘思路,盘着盘着就盘出来了。

canvas 上添加事件绑定https://www.jianshu.com/p/013d910b2f94

代码思路

多余文件

另外,images 里面的图片没有用完,只用了部分,除了这些其他文件均是有用的。


图片是动图所以听不见声音,真实是有音效的
上一篇 下一篇

猜你喜欢

热点阅读