我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用JavaScript编写一个2048小游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用JavaScript编写一个2048小游戏

今天就跟大家聊聊有关使用JavaScript编写一个2048小游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

JavaScript可以做什么

1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。2.可以处理表单,检验用户的输入,并提供及时反馈节省用户时间。3.可以根据用户的操作,动态的创建页面。4使用JavaScript可以通过设置cookie存储在浏览器上的一些临时信息。

首先2048小游戏离不开16个格子,我们通过html和css创建好对应的标签和样式,然后开始js逻辑

<div id="box">//一个盒子里面16个小div <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div> <div id="son"></div></div>

设置对应的样式: (仅供参考)

#box{ width: 450px; height: 450px; background-color: brown; display: flex; flex-wrap: wrap; justify-content: space-evenly; border: 1px solid #000; margin: 100px auto; border-radius: 10px; } div>div{ margin-top: 5px; width: 100px; height: 100px; border-radius: 5px; background-color: bisque; text-align: center; line-height: 100px; font-size: 40px; }

效果如下:

使用JavaScript编写一个2048小游戏

然后真正的js部分真正开始了
先使用 css选择器 获取所有小格子的div

var divs = document.querySelectorAll('[id ==son]');

然后创建一个二维的数组 来接收这16个小格子div的dom对象

var arr = [[],[],[],[]];var a = 0;for(var i=0 ;i < 4; i ++){ for(var j=0 ;j < 4; j++){ arr[i][j] = divs[a]; a++ ; }}

这就形成了:i 和 j 轴

使用JavaScript编写一个2048小游戏

这样就便于我们后面的移动操作

现在我们写一个在该16各种里随机产生一个随机数2和4 填入一个空格子里,我们后面在调用!

function sj(){ //产生随机数 var a = Math.floor(Math.random() * 4); var b = Math.floor(Math.random() * 4); if(arr[a][b].innerHTML == ""){ if(Math.random()>0.5){ arr[a][b].innerHTML = 2; }else{ arr[a][b].innerHTML = 4; }  }else{ //如果该格子不为空我们在执行函数 sj(); }}

第二个就是要判断游戏是否 结束时的函数:当格子你所有的值都不为空的时候结束游戏!(后面在调用)

function js(){ //游戏是否结束 var bool = true; for(var i=0 ;i < 4; i ++){ for(var j=0 ;j < 4; j++){ if(arr[i][j].innerHTML == ""){  bool = false; }else{   } } }  if(bool){ alert("游戏结束"); for(var i=0 ;i < 4; i ++){ for(var j=0 ;j < 4; j++){ arr[i][j] = null; } }  }}

然后我们分别写如按下上下左右键执行的函数:

以按上键为例子:

①如果上面一个数为空,下面一个不为空上下值交换;
②如果上面一个为数字且和下面的相等,那么上面数 * 2 下面的改值为空。其他情况不变。

function downtop(){ //按上 执行的函数 for(var i=0 ;i < 4; i ++){ for(var j=0 ;j < 4; j++){ if(arr[i][j].innerHTML == "" && i<3 &&arr[i+1][j].innerHTML != ""){ arr[i][j].innerHTML = arr[i+1][j].innerHTML ; arr[i+1][j].innerHTML = ""; downtop(); // 如果条件满足就执行  // 不满足了就不会进入到if里了 }else if(i<3&&arr[i][j].innerHTML !="" && arr[i+1][j].innerHTML !="" &&arr[i][j].innerHTML == arr[i+1][j].innerHTML){ arr[i][j].innerHTML = 2*arr[i+1][j].innerHTML ; arr[i+1][j].innerHTML = ""; }else{  } } }}

同理只需要改变 (一些参数) 就完成另外3个键的逻辑:

function downbottom(){ for(var i=3 ;i > 0 ; i--){ for(var j=0 ;j < 4; j++){ if(arr[i-1][j].innerHTML != "" && i>0 &&arr[i][j].innerHTML == "" ){  arr[i][j].innerHTML = arr[i-1][j].innerHTML ; arr[i-1][j].innerHTML = ""; downbottom(); } else if(arr[i-1][j].innerHTML !=""&& arr[i][j].innerHTML !="" && i>0 &&arr[i-1][j].innerHTML == arr[i][j].innerHTML){ arr[i][j].innerHTML = 2*arr[i-1][j].innerHTML ; arr[i-1][j].innerHTML = ""; } } }}function downleft(){ for(var i=0 ;i < 4; i ++){ for(var j=0 ;j < 4; j++){ if(arr[i][j].innerHTML == "" && j<3 &&arr[i][j+1].innerHTML != ""){ arr[i][j].innerHTML = arr[i][j+1].innerHTML ; arr[i][j+1].innerHTML = ""; downleft(); }else if( j<3&& arr[i][j].innerHTML !=""&& arr[i][j+1].innerHTML !="" &&arr[i][j].innerHTML == arr[i][j+1].innerHTML){ arr[i][j].innerHTML = 2*arr[i][j+1].innerHTML ; arr[i][j+1].innerHTML = ""; } } }}function downright(){  for(var i=0 ;i < 4; i ++){ for(var j = 3 ;j > 0; j--){ if(j > 0 && arr[i][j].innerHTML == ""&&arr[i][j-1].innerHTML != ""){ arr[i][j].innerHTML = arr[i][j-1].innerHTML ; arr[i][j-1].innerHTML = ""; downright(); }else if( j>0 && arr[i][j].innerHTML !=""&& arr[i][j-1].innerHTML !="" &&arr[i][j].innerHTML == arr[i][j-1].innerHTML){ arr[i][j].innerHTML = 2*arr[i][j-1].innerHTML ; arr[i][j-1].innerHTML = ""; } } } }

为不同的值添加不同的背景颜色:(可要可不要)

function color(){for(var i=0 ;i < 4; i ++){ for(var j=0 ;j < 4; j++){ switch(arr[i][j].innerHTML){ case "": arr[i][j].style.backgroundColor = "bisque";break;  case "2": arr[i][j].style.backgroundColor = "red";break;  case "4": arr[i][j].style.backgroundColor = "orange";break;  case "8": arr[i][j].style.backgroundColor = "yellow";break;  case "16": arr[i][j].style.backgroundColor = "green";break;  case "32": arr[i][j].style.backgroundColor = "blue";break;  case "64": arr[i][j].style.backgroundColor = "#000";break;  case "128": arr[i][j].style.backgroundColor = "aqua";break;  case "256": arr[i][j].style.backgroundColor = "pink";break;  }   }}}

然后整个窗口设置键盘监听事件:

上 的keyCode: 38
下 的keyCode: 40
左 的keyCode:37
右 的keyCode: 39
没按一次
①调用 对应方向的函数
②调用 随机参数一个数的函数
③调用 判断游戏是否结束的函数
④调用 不同的值不同元素的函数
⑤游戏开始调用2次(默认有2个)

window.onkeydown = function(e){ switch(e.keyCode){ case 37: downleft(); sj(); color(); js(); break; //左 case 38: downtop(); sj(); color(); js(); break; //上 case 39: downright(); sj(); color(); js(); break; //右 case 40: downbottom(); sj(); color(); js(); break; //下 }}sj(); //开局自动有默认的2个数sj();

看完上述内容,你们对使用JavaScript编写一个2048小游戏有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用JavaScript编写一个2048小游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用JavaScript编写一个2048小游戏

今天就跟大家聊聊有关使用JavaScript编写一个2048小游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点
2023-06-07

使用Java编写一个2048小游戏

本文章向大家介绍使用Java编写一个2048小游戏的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页
2023-06-06

Android编写2048小游戏

先来说说2048游戏规则: 开始时棋盘内随机出现两个数字,出现的数字仅可能为2或4 玩家可以选择上下左右四个方向,若棋盘内的数字出现位移或合并,视为有效移动 玩家选择的方向上若有相同的数字则合并,每次有效移动可以同时合并,但不可以连续合并
2022-06-06

用Python写一个无界面的2048小游戏

以前游戏2048火的时候,正好用其他的语言编写了一个,现在学习python,正好想起来,便决定用python写一个2048,由于没学过python里面的界面编程,所以写了一个极其简单的无界面2048。游戏2048的原理和实现都不难,正好可以
2022-06-04

利用java编写一个弹球小游戏

本篇文章给大家分享的是有关利用java编写一个弹球小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。弹球游戏实现原理:  隔一定时间(小于1秒)重新绘制图像,因为Graphi
2023-05-31

基于JavaScript编写一个翻卡游戏

这篇文章主要为大家详细介绍了如何溧阳JavaScript编写一个简单的翻卡游戏,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
2023-02-15

怎么用Elixir语言编写一个小游戏

本篇内容主要讲解“怎么用Elixir语言编写一个小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Elixir语言编写一个小游戏”吧!通过编写“猜数字”游戏来学习 Elixir 编程语言
2023-06-15

使用java编写一个猜字母游戏

使用java编写一个猜字母游戏?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和
2023-06-06

基于JavaScript如何编写一个翻卡游戏

这篇文章主要介绍“基于JavaScript如何编写一个翻卡游戏”,在日常操作中,相信很多人在基于JavaScript如何编写一个翻卡游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于JavaScript如
2023-07-05

利用Java编写一个俄罗斯方块小游戏

这期内容当中小编将会给大家带来有关利用Java编写一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java游戏俄罗斯方块的实现实例 java小游戏主要理解应用java S
2023-05-31

使用java实现2048小游戏的案例

这篇文章将为大家详细讲解有关使用java实现2048小游戏的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下实现文件APP.javaimport javax.swing.*;public c
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录