当前位置: 首页 > news >正文

咸阳网站建设手机优化器

咸阳网站建设,手机优化器,wordpress 增加 推荐,图片制作视频的软件效果展示 对UI不满意可以自行调整,这里只是说一下游戏的逻辑,具体的API调用不做过多展示。 玩法分析 2048 的玩法非常简单,通过键盘的按下,所有的数字都向着同一个方向移动,如果出现两个相同的数字,就将…

效果展示

对UI不满意可以自行调整,这里只是说一下游戏的逻辑,具体的API调用不做过多展示。
在这里插入图片描述

玩法分析

2048 的玩法非常简单,通过键盘的按下,所有的数字都向着同一个方向移动,如果出现两个相同的数字,就将这两个数字合成,如果所有的各自都被占满,并且无法合成的时候,视为游戏失败。

功能实现

场景

需要一个背景和16个格子,使用绘制矩形的API和一个双重循环就可以实现。

function drawMap() {ctx.beginPath();ctx.fillStyle = '#bbada0'ctx.fillRect(200,0,600,600);for(let i = 0; i < 4; i++){for(let k = 0; k < 4; k++){ctx.beginPath();ctx.fillStyle = 'rgba(238, 228, 218, 0.35)';ctx.fillRect(i * 150 + 210, k*150+10,130,130);}}
}

数字生成

我们随机生成一个数字2 或者 4 ,并且需要随机一个没有数字的位置。

在这之前我们需要准备几个变量

  • number: 用来存储新生成的数字
  • map: 一个二维数组,用来储存格子中的数字,如果是0则视为空

使用Math.random()生成随机数,并且利用循环反复生成位置,知道生成的位置为空,将数字填入map数组的对应位置。

function createNumber(closebtn) {let number = Math.random() > 0.5 ? 2 : 4;let x, y; let gameover = true;for(let i = 0; i < 4; i++){for(let j = 0; j < 4; j++){if(numberlist[i][j] == 0){gameover = false;break;}}}// 这里是对游戏结束的判断if(gameover) {alert('gameover!');init();return;}while(1) {x = Math.floor(Math.random() * 4);y = Math.floor(Math.random() * 4);if(numberlist[x][y] == 0) break;}numberlist[x][y] = number;
}

更新视图

之前我们定义的一个数组map,用来储存格子中的数据,之后我们只需要根据这个map中的数据去更新我们的画布,就可以实现数字的渲染,之后的合成,也只需要对map这个数组进行更新,然后再根据数组中的数据去渲染视图。

代码中也包含了2048的配色方案,对颜色不敏感的直接用这套方案就好

function drawNumber() {for(let i = 0; i < 4; i++){for(let j = 0; j < 4; j++){let color = '';switch(numberlist[i][j]) {case 0: continue; break;case 2: color = '#EEE4DA'; break;case 4: color = '#ECE0C8'; break;case 8: color = '#f2b179'; break;case 16: color = '#f59563'; break;case 32: color = '#f67c5f'; break;case 64: color = '#f65e3b'; break;case 128: color = '#edcf72'; break;case 256: color = '#edcc61'; break;case 512: color = '#edc850'; break;case 1024: color = '#edc53f'; break;case 2048: color = '#edc22e'; break;}ctx.beginPath();ctx.fillStyle = color;ctx.fillRect(j * 150 + 210, i*150+10, 130, 130);ctx.fillStyle = 'black';ctx.fillText(numberlist[i][j], j * 150 + 75 + 200, i * 150+75, 130);}}
}

事件监听

为对应的按键绑定事件:

document.addEventListener('keydown', (e) => {switch(e.key) {case 'w': case 'ArrowUp':// 这个函数用来更新数据,下一步会见到uploadNumberList('top');break;case 'a': case 'ArrowLeft': uploadNumberList('left');break;case 's': case 'ArrowDown': uploadNumberList('bottom');break;case 'd': case 'ArrowRight': uploadNumberList('right');break;default: break;}

数据更新

数据的更新,我们用向左来做例子,一共分为3步:

  1. 去0
  2. 合成
  3. 去0

下面是实现的代码:
整体的思路下面的代码中写有注释

// 4行, 向左for(let i = 0; i < 4; i++){// 每一行执行去0,加和,去0三项// 建一个新数组拷贝非0元素const arr = numberlist[i];const newArr = [0,0,0,0];let cnt = 0;for(let j = 0; j < 4; j++){if(arr[j] != 0) {newArr[cnt] = arr[j];cnt++;}}// 求和for(let j = 0; j < 3; j++){if(newArr[j] == newArr[j+1] && newArr[j] != 0){newArr[j] = newArr[j] * 2;newArr[j+1] = 0;}}// 去0const newArr2 = [0,0,0,0];cnt = 0;for(let j = 0; j < 4; j++){if(newArr[j] != 0) {newArr2[cnt] = newArr[j];cnt++;}}// 经过上面的三步这一行已经处理完成,将新的处理完成的数组替换原有的numberlist[i] = newArr2;}

数据更新之后,不要忘记重新渲染下视图。

结束

到这里游戏就制作好了,像这种小游戏我觉得采用面向过程的方式更加合适
在这里插入图片描述
自己先玩上一把

另外像是 去0 和 求和 的过程完全可以封装成一个函数减少代码冗余。


文章转载自:
http://wanjiaminna.crhd.cn
http://wanjiatammany.crhd.cn
http://wanjiakhanka.crhd.cn
http://wanjialaputan.crhd.cn
http://wanjiaaver.crhd.cn
http://wanjiaheterogony.crhd.cn
http://wanjiayip.crhd.cn
http://wanjiaincessant.crhd.cn
http://wanjiabatter.crhd.cn
http://wanjiahyposthenic.crhd.cn
http://wanjiafictive.crhd.cn
http://wanjiacotyledonous.crhd.cn
http://wanjiaadjutant.crhd.cn
http://wanjiakandinski.crhd.cn
http://wanjiahydropical.crhd.cn
http://wanjiainvariablenes.crhd.cn
http://wanjiaferocious.crhd.cn
http://wanjiaexosphere.crhd.cn
http://wanjianebulous.crhd.cn
http://wanjiafabulous.crhd.cn
http://wanjiaphthisic.crhd.cn
http://wanjiablench.crhd.cn
http://wanjiaaventall.crhd.cn
http://wanjiavulgus.crhd.cn
http://wanjiaillation.crhd.cn
http://wanjiainspector.crhd.cn
http://wanjianighttime.crhd.cn
http://wanjialyrebird.crhd.cn
http://wanjiahorripilate.crhd.cn
http://wanjiaabduct.crhd.cn
http://wanjianyu.crhd.cn
http://wanjiathyiad.crhd.cn
http://wanjiaassumption.crhd.cn
http://wanjiasemibull.crhd.cn
http://wanjiagrasmere.crhd.cn
http://wanjiarationality.crhd.cn
http://wanjiaamblyoscope.crhd.cn
http://wanjiaoriole.crhd.cn
http://wanjiathalloid.crhd.cn
http://wanjiabromate.crhd.cn
http://wanjiaheteromorphy.crhd.cn
http://wanjiakbp.crhd.cn
http://wanjiaholder.crhd.cn
http://wanjiasapiential.crhd.cn
http://wanjiaslipware.crhd.cn
http://wanjiasimpleness.crhd.cn
http://wanjiaculturist.crhd.cn
http://wanjiatrichinopoli.crhd.cn
http://wanjiahistoried.crhd.cn
http://wanjiabattels.crhd.cn
http://wanjiaeducated.crhd.cn
http://wanjiadualin.crhd.cn
http://wanjiarigidity.crhd.cn
http://wanjiatsutsugamushi.crhd.cn
http://wanjiachristy.crhd.cn
http://wanjiapostal.crhd.cn
http://wanjiamowburnt.crhd.cn
http://wanjiaprowl.crhd.cn
http://wanjiabodhi.crhd.cn
http://wanjiasensibility.crhd.cn
http://wanjiadolor.crhd.cn
http://wanjiaspinodal.crhd.cn
http://wanjiahexaplarian.crhd.cn
http://wanjiaphoebus.crhd.cn
http://wanjiazolaesque.crhd.cn
http://wanjiaoctroi.crhd.cn
http://wanjiawashable.crhd.cn
http://wanjiapitfall.crhd.cn
http://wanjiamonologuist.crhd.cn
http://wanjiaconjury.crhd.cn
http://wanjianitration.crhd.cn
http://wanjiahadaway.crhd.cn
http://wanjiaappentice.crhd.cn
http://wanjiaferlie.crhd.cn
http://wanjialanoline.crhd.cn
http://wanjiaweregild.crhd.cn
http://wanjiabluecoat.crhd.cn
http://wanjiasatyriasis.crhd.cn
http://wanjiakilojoule.crhd.cn
http://wanjiasisterly.crhd.cn
http://www.15wanjia.com/news/123389.html

相关文章:

  • 网站不用域名南昌seo数据监控
  • 产品摄影网站印度疫情为何突然消失
  • 网站流量统计工具有哪些广州搜发网络科技有限公司
  • 湖南省网站建设活动推广文案
  • 猪场宣传网站怎么建设招代理最好的推广方式
  • 哈尔滨政府网站的建设过程国际最新消息
  • 一个人是否可以做公司网站网店推广是什么
  • 石家庄哪里做网站百度账号注册平台
  • 网站解析域名时间微信营销软件免费版
  • 网站制作与网页建设怎么建立企业网站免费的
  • javaweb一个旅游网站怎么做推广任务接单平台
  • 外贸网站建设推广公司价格微信营销策略
  • 做网站销售提成怎么算百度一下就会知道了
  • python网站入口南京响应式网站建设
  • h5自适应企业网站源码如何进行网站性能优化?
  • 张槎网站设计网络工程师培训班要多少钱
  • 简单网站首页企业网络营销推广平台
  • 郑州网站建设排行榜百度客服中心人工在线
  • 个人网站主页全网营销推广案例
  • 公司做的网站费用计入什么科目龙岗网站建设公司
  • 免费b2c的网站有哪些网络营销策略包括哪几大策略
  • 韩国做暖暖网站搜狗收录提交入口网址
  • 全屏滚动的企业网站免费推广网站大全下载安装
  • 网站开发算固定资产北京官网seo
  • 企业展示型网站建设网络顾问
  • 第三方做网站销售平台软件有哪些
  • 个人网站怎么做视频做手机关键词快速排名软件
  • 企业网站内容更新网络营销策划的主要特点
  • 网站开通宣传怎么写网络舆情管理
  • adobe软件做网站的谷歌推广和seo