分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

【2048小游戏】——CSS/原生js爬坑之纯CSS模态对话框&游戏结束

发布时间:2023-09-06 01:07责任编辑:彭小芳关键词:jsCSS

引言:2048小游戏的结束界面,使用纯CSS制作模态对话框,一般做模态对话框都会使用BootStrap自带的模态对话框组件方便使用,但在制作要运行在移动端的小项目时,就不能使用BootStrap,因为文件太大,下载耗时,耗费流量。



一、模态对话框的组成

     2个Div,一个铺满整屛,一个显示内容

  • 坑:如何让Div铺满整屛?解决:2个办法
  1. 宽  高 100%    →    position:absolute;  →   top=0;left=0;
  2. 四个方向  margin-top/left/right/bootom  都设为0
  • 坑:如何让一个Div在整个窗口居中?
  1. 错误做法:  top  /  left   50%  不能设置居中  因为top / left是左上角的定位
  2. 正确做法:  top  /  left   50%  →  margin-top:-100px;(高的一半)   margin-left:-150px;(宽的一半)
  • 坑:模态框背景div的透明度  opacity是继承父元素的
  • 解决:background:rgba(55,55,55,.5);  使用rgba() 可以避免继承
  • 关键代码   ↓
<div id="gameover"> ???<p> ???????GAME OVER!<br> ???????SCORE:<span id="final">0</span><br> ???????<a class="btn" href="javascript:start();">TRY AGAIN!</a> ???</p></div>
p{ ???width:480px; ???margin:0 auto; ???font-size:40px; ???font-weight: bold; ???font-family:Arial; ???padding-top: 15px;}#gameover{ ???position:absolute; ???top:0; ???left:0; ???width:100%; ???height:100%; ???background: rgba(55,55,55,0.5);}
二、游戏结束
  • 游戏状态: 2048游戏有两个游戏状态
  1. 运行中  → game over 模态对话框不显示
  2. 游戏结束  → game over 模态对话框显示
  • 标准状态保存:给每个状态起名 (一般全大写字母)定义常量,使特殊的值有意义,易维护
  1. const RUNNING= 1,GAMEOVER=0;  
  2. RUNNING 和 GAMEOVER只是一个名称,实际存储的还是1/0,所以,并不会增大存储空间
  3. 坑:判断游戏结束的时候
  4. 解决:创建关键函数   function isGameOver(){ }
  • 游戏没有结束的条件:
  1. 有0
  2. 当前元素等于右侧元素(不用和左侧元素比较,因为左侧的元素已经和当前元素比较过了;最右侧一列元素没有右侧元素,也不用比较  c < CN-1)
  3. 当前元素等于下方元素(不用和上方元素比较,因为上方的元素已经和当前元素比较过了;最下方一行元素没有下方元素,也不用比较 r < RN-1)
  • 每一次移动后,都调用一次 isGameOver()  判断是否游戏结束
  1. 坑:调用isGameOver() 要在随机生成数之后 →  随机数把空格填满了,才可以进行游戏结束判断
  • 关键代码  ↓
var status=0;//保存游戏状态 ??0:游戏结束 ?1:运行中const RUNNING= 1,GAMEOVER=0;
function start(){ ???//创建空数组保存到data中 ???status=RUNNING;//将游戏状态重置为运行中 ???score=0;//将得分归零 ???……}
//判断游戏是否结束function isGameOver(){ ???for(var r=0;r<RN;r++){ ???????for(var c=0;c<CN;c++){ ???????????if(data[r][c]==0) ???????????????return false; ???????????if(c<CN-1&&data[r][c]==data[r][c+1]) ???????????????return false; ???????????if(r<RN-1&&data[r][c]==data[r+1][c]) ???????????????return false; ???????} ???????return true; ???}}
//每一次移动之后,判断游戏是否结束 if(before!=after){ ???????randomNum(); ???????isGameOver(); ???????updataView(); }

注:转载请注明出处

【2048小游戏】——CSS/原生js爬坑之纯CSS模态对话框&游戏结束

原文地址:http://www.cnblogs.com/ljq66/p/7785036.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved