首先我没做过游戏,你的逻辑很复杂,我一时半会儿也看不懂。
子弹多了会卡是正常现象,最原始的游戏规则是一屏只有一发子弹,这样不会造成计时器错误。
性能问题我觉得主要是你使用的5个setInterval,如果你能将所有的处理都放在一起,使用一次setInterval解决这5个所处理的事情,性能就会有很大的提升。
另外你全部都使用了JQuery的东西,这也会拖慢些速度,在子弹少的时候,影响不到什么,但和连发、多个setInterval一起,性能问题就凸显了。
这道不是说不让你用JQuery,但是你的代码中充斥了大量的$('#score span').text()、$('#score span').html这样的东西,你就不能定义个变量将这些保存到内存中吗,这样做每次都需要重新获取DOM并封装,是非常耗时的。
$(this).attr('blood') == 1 改成 $(this).attr('blood') <= 1看看能不能删除,因为我测试的时候没发现什么不对的