{"id":21069100,"url":"https://github.com/styx11/2048","last_synced_at":"2025-03-14T02:25:14.583Z","repository":{"id":97161572,"uuid":"150746172","full_name":"Styx11/2048","owner":"Styx11","description":"🕹A 2048 game","archived":false,"fork":false,"pushed_at":"2018-10-16T08:29:30.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-20T21:40:38.394Z","etag":null,"topics":["dom","game","game-score","game-state","grid","newposition","oldposition"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Styx11.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-28T13:39:18.000Z","updated_at":"2019-03-13T13:15:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"29aad3f6-6299-44fd-abf9-573c8d82115c","html_url":"https://github.com/Styx11/2048","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Styx11%2F2048","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Styx11%2F2048/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Styx11%2F2048/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Styx11%2F2048/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Styx11","download_url":"https://codeload.github.com/Styx11/2048/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243510075,"owners_count":20302299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dom","game","game-score","game-state","grid","newposition","oldposition"],"created_at":"2024-11-19T18:31:49.363Z","updated_at":"2025-03-14T02:25:14.555Z","avatar_url":"https://github.com/Styx11.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 2048\n\n\u003e 仿制的2048，欢迎Android/iOS端的同学Fork\n\n你可以👉[点此试玩](https://styx11.github.io/2048/)\n\n### 以下API可以帮您快速了解我的编程思路\n## Grid\nGird栅格对象是游戏的核心部分，它直接作为用户与页面交互的渠道。我们并不直接频繁地操作DOM对象，而是通过栅格系统操作、记录每个单元格的位置信息与相对位置。\n## *构造函数*\n**Grid(size)**\n\n---\n  - 参数：{Number} size 栅格大小\n  - 创建一个size大小的（待定）Grid对象\n\n## *属性*\n**score**\n\n---\n- 类型：Number,\n- 默认值：0\n- 描述：记录每次单元格移动时获得的分数\n\n**size**\n\n---\n- 类型：Number,\n- 默认值：0\n- 描述：栅格尺寸\n\n**cells**\n\n---\n- 类型：Array,\n- 默认值：[]\n- 描述：栅格主体\n\n## *方法*\n**initGrid()**\n\n---\n- 参数：无,\n- 返回值：无\n- 描述：重置或初始化栅格\n\n**randomCell()**\n\n---\n- 参数：无,\n- 返回值：{Object} {x: posX, y: posY, value: value}其中，x 和 y 表示单元格的坐标值，value为随机携带的数值\n- 描述：随机获取可用单元格\n\n**availableCells()**\n\n---\n- 参数：无,\n- 返回值：{Object}\n   - avail {Array} 返回未用单位格位置 {x: posX, y: posY} 组成的数组\n   - unavail {Array} 返回已占用单元格 {x: posX, y: posY, value: value} 组成的数组\n- 描述：返回包含单元格状态的对象\n\n**availableCellInline(cell, end, line)**\n\n---\n- 参数：\n   - {Object} cell 期望获取可用目标的单元格 {x: posX, y: posY, value: value}\n   - {Number} end 搜索的结束索引\n   - {String} \"row\"|\"col\" line 期望搜索行或列\n- 返回值：{Object} 搜索结果值 {x: posX, y: posY, value: value}\n- 描述：当进行移动时搜索单元格可达到的位置\n\n**updataCell(type, position, value, newCell)**\n\n---\n- 参数：\n   - {String} \"fill\"|\"remove\" type 操作类型\n   - {Object} 更新的位置 {x: posX, y: posY}\n   - {Number} 更新值\n   - {Boolean} newCell 是否为新建单元格\n- 返回值：无\n- 描述：更新单元格状态\n\n**moveCells(key, imitate)**\n\n---\n- 参数：{Number} key keyCode,\n- 返回值：\n   - {Array} moveCells 包含一个由移动单元格与目标单元格组成的数组\n   - {Boolean} imitate 是否模拟移动栅格\n- 描述：根据key值移动单元格，当imitat为true时只返回moveCells\n\n## Tile\nTile对象是所有DOM对象的操作接口，包括数字砖的创建、数值更改、链接功能键以及数字砖的特效\n\n## *属性*\n**container**\n\n---\n- 类型：Object,\n- 默认值：DOM对象\n- 描述：游戏区域的容器\n\n**scoreTile**\n\n---\n- 类型：Object,\n- 默认值：DOM对象\n- 描述：记录当前分值的数字砖\n\n**bestTile**\n\n---\n- 类型：Object,\n- 默认值：DOM对象\n- 描述：记录历史最高分的数字砖\n\n**newGame**\n\n---\n- 类型：Object,\n- 默认值：DOM对象\n- 描述：重启游戏的功能键\n\n## *方法*\n**createTile(position, value)**\n\n---\n- 参数：\n   - {Object} position 数字砖的位置信息 {posX: x, posY: y}\n   - {Number} value 数字砖的数值\n- 返回值：无\n- 描述：绘制数字砖\n\n**delTile()**\n\n---\n- 参数：无,\n- 返回值：无\n- 描述：移除容器中的数字砖对象\n\n**moveTile(oldPosition, newPosition)**\n\n---\n- 参数：\n   - {Object} oldPosition 将要移动的单元格位置 {posX: x, posY: y}\n   - {Object} newPosition 移动目标 {posX: x, posY: y}\n- 返回值：无\n- 描述：将原单元格移动到新的位置\n\n## KeyboardManager\nKeyboardManager对象监听了用户操作相关的事件，其中包括键盘输入与触屏\n\n## *属性*\n**events**\n\n---\n- 类型：Object,\n- 默认值：null\n- 描述：events 属性用来储存目标事件以及它们对应的回调函数\n\n**start**\n\n---\n- 类型：Object,\n- 默认值：null\n- 描述：start 属性用以储存触屏事件开始时的位置信息\n\n**end**\n\n---\n- 类型：Object,\n- 默认值：null\n- 描述：end 属性用以储存触屏事件结束时的位置信息\n\n## *方法*\n**on(event, callback)**\n\n---\n- 参数：\n   - {String} event 监听的事件名称\n   - {Function} callback 事件对应的回调函数，可有多个\n- 返回值：无\n- 描述：添加事件监听\n\n**emit(event, data)**\n\n---\n- 参数：\n   - {String} event 触发的监听事件名称\n   - {String|Object|Function|Array|Number}} data 可选，针对不同回调而定\n- 返回值：无\n- 描述：触发监听事件\n\n**listen()**\n\n---\n- 参数：无\n- 返回值：无\n- 描述：事件监听总线，初始时调用\n\n## localStorageManager\nlocaStorageManager对象管理着游戏过程的数据状态，并将它们储存至本地\n\n## *属性*\n**gameState**\n\n---\n- 类型：String,\n- 默认值：\"gameState\"\n- 描述：gameState 对应了栅格状态的本地存储对象名\n\n**gameScore**\n\n---\n- 类型：String,\n- 默认值：\"gameScore\"\n- 描述：gameScore 对应了游戏分数的本地存储对象名\n\n**bestScore**\n\n---\n- 类型：String,\n- 默认值：\"bestScore\"\n- 描述：bestScore 对应了游戏最高分数的本地存储对象名\n\n**storageManager**\n\n---\n- 类型：Object,\n- 默认值：window.localStorage\n- 描述：storageManager 存储了进行过兼容性处理的localStorage对象\n\n**getGameState(item)**\n\n---\n- 参数：{String} item 本地存储对象名,\n- 返回值：{Array|Number} 本地存储对象\n- 描述：获得本地存储对象\n\n**setGameState(item, value)**\n\n---\n- 参数：\n   - {String} item 本地存储对象名,\n   - {Array|Number} value 存储值\n- 返回值：无\n- 描述：存储数据\n\n**clearGameState()**\n\n---\n- 参数：无,\n- 返回值：无\n- 描述：清除本地游戏分数及状态\n\n**getBestScore()**\n\n---\n- 参数：无,\n- 返回值：{Number} 本地最高分数\n- 描述：获得本地最高分数\n\n**setBestScore(value)**\n\n---\n- 参数：{Number} value 期望存入的分数,\n- 返回值：无\n- 描述：存储最高分","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstyx11%2F2048","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstyx11%2F2048","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstyx11%2F2048/lists"}