基于JS的别踩白块游戏

2023-10-11 03:30
文章标签 js 游戏 白块

本文主要是介绍基于JS的别踩白块游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

想做一个小项目,但是知识有限,那么来做一个基于html,css以及js的小游戏。该小游戏的所以小方块都是基于盒子来实现的,打开时的界面比较简单,用了定位,隐藏了盒子,点击”开始游戏“,”白格“将开始向下移动,此后再每一行上开始出现一个“黑格”,这个黑格是随机的,对应列上按下对应的键即可消除黑格。
界面如下:
在这里插入图片描述

运行时界面如下:
在这里插入图片描述
代码:
html:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>别踩白块</title><link rel="stylesheet" href="./index.css"><script src="./index.js"></script>
</head><body><h2>score</h2><h2 id="score">0</h2><div id="main"><div id="con"></div></div><div class="btn"><button class="start" onclick="start()">开始游戏</button></div>
</body></html>

css:

#main {width: 408px;height: 408px;background: white;border: 2px solid gray;margin: 0 auto;overflow: hidden;
}h2 {text-align: center;
}#con {width: 100%;height: 400px;position: relative;
/*隐藏所有格子*/top: -408px; border-collapse:collapse;
}
/* 行 */
.row{height: 100px;width: 100%;
}
/* 一个块 */
.cell{height: 100px;width: 100px;float: left;border: 1px solid;
}.black {background: black;
}.btn {width: 100%;text-align: center;
}.start {margin: 20px auto;width: 150px;height: 50px;border-radius: 10px;background: yellowgreen;line-height: 50px;color: #fff;
}

js:

function $(id) {return document.getElementById(id);
}function creatediv(className) {var div = document.createElement('div');div.className = className;return div;
}
var speed = 6;
var clock = null;
var flag = false
// 点击开始游戏按钮
function start() {if(!flag) {init()}else {alert('游戏已经开始,无需再次点击');}
}
// 初始化init
function init() {flag = true;for(var i = 0; i < 4; i++) {createrow();}// 添加onclick事件$('main').onclick = function (ev) {ev = ev || event;judge(ev);}clock = window.setInterval('move()', 30);
}
// 创造一个<div class="row">并且有四个子节点<div class="cell">
function createrow() {var con = $('con');var row = creatediv('row');var arr = creatcell();con.appendChild(row);for(var i = 0; i< 4; i++) {row.appendChild(creatediv(arr[i]));}if(con.firstChild == null) {con.appendChild(row);}else {con.insertBefore(row, con.firstChild)}
}
function creatcell() {var temp = ['cell', 'cell', 'cell', 'cell'];var i = Math.floor(Math.random() * 4);temp[i] = 'cell black';return temp;
}
function judge(ev) {if (ev.target.className.indexOf('black') == -1 && ev.target.className.indexOf('cell') !== -1) {ev.target.parentNode.pass1 = 1; //定义属性pass,表示此行row的白块已经被点击}if (ev.target.className.indexOf('black') !== -1) {//点击目标元素 类名中包含 black 说明是黑块ev.target.className = 'cell';ev.target.parentNode.pass = 1; //定义属性pass,表明此行row的黑块已经被点击score();}
}
// 让黑块动起来
function move() {var con = $('con');var top = parseInt(window.getComputedStyle(con,null)['top']);if(speed + top > 0) {top = 0;} else {top += speed;}con.style.top = top + 'px';over();if(top == 0) {createrow();con.style.top = '-102px';delrow();}
}
function over() {var rows = con.children;if ((rows.length == 5) && (rows[rows.length - 1].pass !== 1)) {fail();}for(let i = 0; i < rows.length; i++) {if(rows[i].pass1 == 1) {fail();}}
}function fail() {clearInterval(clock);flag = false;confirm('你最终的得分是' + parseInt($('score').innerHTML));var con = $('con');con.innerHTML = '';$('score').innerHTML = 0;con.style.top = '-408px';
}//删除某行
function delrow () {var con = $('con');if (con.childNodes.length == 6) {con.removeChild(con.lastChild);}
}
// 记分
function score () {var newscore = parseInt($('score').innerHTML) + 1;//分数加一$('score').innerHTML = newscore;//修改分数if (newscore % 10 == 0) {//当分数是10 的倍数时使用加速函数,越来越快speedup();}
}
// 加速函数
function speedup () {speed += 2;if (speed == 20) {alert('你超神了');}
}

遇到一个很神奇的问题,就是在over()这个函数里面的第一句 var rows = con.children; 之前写的是 var rows = con.childNode;那就会存在一个问题是在第一次开始游戏时会直接弹出游戏结束。关于children与childNode的区别,请见下一篇博客。

这篇关于基于JS的别踩白块游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/185199

相关文章

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例