先声明:我也是跟着别人学的。我写这篇文章是为了回顾我的想法并巩固它们。总而言之就是多理解思路,多折腾代码。咳咳,上次我们已经完成了游戏的所有初始化,包括updataBoardView();generateOneNumber();游戏过程中需要用到showNumberWithAnimation(),所以这次就是把游戏流程写的逻辑化,启动火车,赶紧上车吧~~1.游戏流程键盘操作键盘监听功能玩过这个游戏的都知道操作是将小方块上下左右移动,完成合并操作。所以我们全局写一个键盘事件监听函数$(document).keydown()。我们需要在里面写什么?首先要判断按下的是哪个按钮,所以需要获取事件触发器产生的事件对象。Event对象表示事件的状态,例如事件发生的元素、键盘按键的状态、鼠标的位置和鼠标按钮。地位。事件经常和函数结合使用,函数只有在事件发生时才会执行!具体事件的解释可以去w3school看看。其中,事件有一个keyCode属性,可以获取键盘的虚拟键盘代码。我们可以通过获取到的keyCode来判断按下的是哪个键,同时执行对应的函数。代码如下$(document).keydown(function(event){switch(event.keyCode){case37://leftmoveLeft();generateOneNumber();break;case38://upbreak;case39://右中断;案例40://下中断;}});但是这里涉及到两个问题,一个是当前游戏状态是否允许左移或者右移,比如不能左移,那么按←应该是无效的,不应该生成新的数字。一种是移动后立即检测游戏是否结束。如果四个方向不能移动,游戏就应该GameOver。为了解决第一个问题,我们需要做一个测试,返回一个值来判断是否需要生成新的数字。为了解决第二个问题,我们需要写一个isgameover()。我们在moveleft里面写检测函数返回,把键盘监听代码改成下面的case37://leftif(moveLeft()){generateOneNumber();游戏结束();}左移函数moveLeft()这里做了两件事,一是判断是否可以移动,如果不能移动,直接返回false。如果可以移动,我们就执行下一个移动部分。我将首先发布完整的代码:functionmoveLeft(){if(!canMoveLeft(board)){returnfalse;}//遍历右边12个格子for(vari=0;i<4;i++){for(varj=1;j<4;j++){if(board[i][j]!=0){//如果有数字,向左遍历for(vark=0;k
