js2048怎么添加更多格子

JavaScript05

js2048怎么添加更多格子,第1张

js2048新增格子方法

1. 操作描述:

      每按下方向键后若格子能够发生变动(即有移动或合并操作产生),便在移动或合并操作后剩下的空白处某一随机位置新增一个数值为2的格子。

2. 编程思路:

       我们需要结合其它方法来判断是否执行此方法,因此定义一个全局的布尔类型变量 moveAble,用作新增格子的“开关”。默认状态下让它“关闭”,即在声明时赋值为 false。在进行了移动或合并操作后将它“打开”,即在移动和合并的方法内部将true赋值给 moveAble。并在即将进行新一轮移动或合并操作前再将它“关闭”,即在上篇监听方法中执行向上/下/左/右方法之前将其值设为false。

      了解这个“开关”的作用后开始编写新增格子方法。首先判断 moveAble 是否为 true ,为 true 则继续进行,否则控制台返回“不能增加新格子,请尝试其他方向移动!”。接着遍历整个二维数组,将数值为空的坐标保存进局部定义的数组变量 ableArr 中,对下标进行随机方法,将最终的随机下标值和格子值(2)或随机下标值传入 arrValueUpdate 与 drawCell 方法中来画出新格子。 

JS本就是个先天残废的语言,能把DOM操作好就行了。。。真要搞大一点的项目,你有更好的语言可以学。。。

由于JS的诸多劣根性,不面向对象,弱类型,动态语言。。。其实靠学习JS,很难养成逻辑思维。。我相信录制视频的那个老师,在只学过JS,而没学过其他语言的时期,也是写不出2048的。。。

其实编程语言的特性和设计模式有很多,而JS的语言劣根性,导致其只具备了其中最基础的部分。。。稍微高级一些的东西。。在JS里其实是没有的。。所以JS即便学得再精。。。其实编程思想依然只是小学生水平。。。

比如继承,多态,委托,工厂模式,观察者模式,单例模式,二叉树,行为树,状态机,等等。。。如果只是通过学习JS,而不接触一门强类型,面向对象语言的话,这些特性,永远都无法涉足。。。所谓编程思想,也就止步于小学生水平了。。

这里推荐C#。。。为什么?因为它是未来JS改进方向的参照原形。。。2.0版的JAVASCRIPT,基本就可以看作是C#的山寨版。。。ECMA的JS改进计划,就是让JS越来越像C#。。当你学到这一步,会接触到一个叫unity 3d的东西,到时候你自然就能做出2048了。。。甚至你可以做出一个CS之类的3D游戏来。。。

不过这是以后的事情了。。。学习是一个循序渐进的过程,没有谁是一步登天的。。在学习JS的阶段,能把DOM操作好就足够了。。。这才是JS的本分。。。不需要指望JS再去干那些“与自己无关的事情”。。。那些都是一群学了JAVA,C#或者C++的老东西们,跑回JS的新手圈炫技装逼的产物而已。。。。。。。