新手向, 用小程序做一个 2048小游戏, 附代码
发布于 7 年前 作者 zgj233 2767 次浏览 来自 开源微信小程序

效果:wei.png github上完整项目地址 流程: 1、 加载完成进入 index.js ,点击 “玩游戏” 按钮, 导航到 …/game/game2048。也就是游戏页面 wei2.png wei3.png 2、进入 game2048 之后我们要做这几件事。 1.先制作出2048的格子棋盘 2048的格子是一个二维数组,我们先在data 里面加入一个items,这个items 就对应了每一个格子上面元素的值。当值为0时, 将0这个数字隐藏。 weixin4.png 2.双重循环, 渲染出格子。 weixin5.png 3、判断 用户手指的滑动方向 通过记录用户手指的开始点击位置, 和用户结束的手指点击位置。 得到两个位置坐标点的差值。 通过差值判断是往哪个方向的滑动。 touchStart(e) { this.setData({ touch_start_x: e.touches[0].clientX, touch_start_y: e.touches[0].clientY }) }, touchEnd(e) { var self = this; self.setData({ touch_end_x: e.changedTouches[0].clientX, touch_end_y: e.changedTouches[0].clientY });

    var x = self.data.touch_end_x - self.data.touch_start_x;  // x 轴移动的距离
    var y = self.data.touch_end_y - self.data.touch_start_y;  // y 轴移动的距离
	
    if (Math.abs(x) - Math.abs(y) > 10) {   //判断为水平方向的滑动
        if (x > 15) {
            console.log('向右');
            moveRight(self);
        }
        else if (x < -15) {
            console.log('向左');
            moveLeft(self);
        }
    }
    else if (Math.abs(y) - Math.abs(x) > 10) {   //判断为垂直方向的滑动
        if (y > 15) {
            console.log('向下');
            moveDown(self);
        }
        else if (y < -15) {
            console.log('向上');
            moveUp(self);
        }
    }
},

4、计算moveUp,moveDown, moveRight,moveLeft 被触发之后, 对于 items 的影响。 这里的算法有点点儿多,我就不贴出来了, 直接发 github上面的完整代码 链接吧 5、每次 items 数值的改变也会 连动 class 的改变, 在 game2048.wxml 里面 class 也绑定了的。 所以 game2048.wxss 里面把所有 class 可能出现的数字 都先定义好。 weixin6.png

6、当游戏结束时, 触发 isGameOver, 完成后续操作。 github上面的项目,源代码里面写了很多注释的。 码文不易, 求各位上 github 给我打个星星 好不 :)

1 回复

支持支持!!!

回到顶部