ts原生来写个2048小游戏~

ts原生来写个2048小游戏~

首页休闲益智旋转的2048更新时间:2024-04-16
好久没写小游戏了,今天想到可以写一个2048小游戏定义基础工具 属性

定义了 画布,宽高,每块格子的间隙,数字对应的颜色表 和 字体大小

随机数函数,画圆角矩形函数

移动合并数字核心算法

这个游戏的本质是二维数组,就以4*4的二位数组来储存 二维数组如下 [ [ 0 , 0 , 2 , 0], [ 0 , 4 , 2 , 0], [ 0 , 0 , 4 , 4], [ 2 , 0 , 2 , 0], ] x向左移动后: [ [ 2 , 0 , 0 , 0], [ 4 , 2 , 0 , 0], [ 8 , 0 , 0 , 0], [ 4 , 0 , 0 , 0], ] 对这二维数组操作分上下左右。 我们以左为例 水平说明操作的是二维数组的一行,而垂直操作的则是二位数组的一列。这样就可以将二维数组的操作变成遍历后对一维数组的操作 arr1:[0,0,2,0]; arr2:[0,4,2,0]; arr3:[0,0,4,4]; arr4:[2,0,2,0];

进过算法处理每一行就可以获得每一行移动合并后结果 arr1:[2,0,0,0]; arr2:[4,2,0,0]; arr3:[8,0,0,0]; arr4:[4,0,0,0]; 然后再重新赋给二维数组 , 就得到了左移后的二维数组 其他的三个方向在开始的时候记住是怎样获得一维数组的,等操作完才放回去这样就能实 现了

上移动 可以先把二维数组向左旋转 然后每行数组处理 再 向右转回来 上移动 可以先把二维数组向右旋转 然后每行数组处理 再 向左转回来 右移动 可以先把二维数组的每行反转 处理 再反转回来 背景类

方块集合

上下左右移动操作

判断游戏是否能够继续 遍历二维数组 每位上的数是否有0 数字右相邻 下相邻是否相等 查询是否还有空位 在移动后随机 添加数字 渲染数字块

游戏主体

更加上一篇文章搭建的ts环境 在main.ts中调用运行

运行效果

2048是个经典的小游戏,其中对二维数组的处理算法是核心,本人算挺笨的了,花了好几天才搞懂理解。 虽然身为前端开发 数据结构 和 计算机基础 也是很重要的学习内容。 GitHub:https://github.com/Reborn233/ts-game/blob/master/src/game/2048.ts

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved