打字小游戏(二)

news/2024/11/8 17:49:00/
/* 浏览器和标签都有默认的样式 清除默认样式 */
*{margin: 0;padding: 0
}
/* 清除加粗标签的默认样式 */
b,strong{font-weight: normal
}
/* 清除倾斜标签的默认样式 */
i,em{font-style: normal
}
/* 清除默认下划线 */
a,u{text-decoration: none
}
/* 清除列表的默认符号样式 */
ul,ol,li{list-style: none
}
/* 万能清除法 解决高度塌陷 */
.clear-fix::after{content: '';display: block;width: 100%;height: 0;clear: both;overflow: hidden;visibility: hidden;
}
/* 兼容写法 */
.clear-fix{zoom: 1 /* 兼容IE */
}
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="./02-reset.css"><title>Document</title>
</head>
<style>body,html {height: 100%;}body {display: flex;justify-content: center;align-items: center;background-color: #000;}.div {width: 1000px;height: 350px;display: flex;flex-wrap: wrap;align-content: space-around;justify-content: center;}.row {width: 100%;height: 100px;display: flex;justify-content: space-around;align-items: center;}.row:nth-child(2) {width: 90%;}.row:nth-child(3) {width: 80%;}.row li {width: 80px;height: 80px;background-color: #fff;font-size: 22px;font-weight: 600;text-align: center;line-height: 80px;border-radius: 15px;}.row li.li1 {background-color: #c91a35;}.row li.li2 {background-color: #e36947;}.row li.li3 {background-color: #e67a36;}.row li.li4 {background-color: #f7d847;}.row li.li5 {background-color: #ede886;}.row li[name="xz"] {transform-style: preserve-3d;/* transform: scale(1.1); */background: none;color: #c91a35;border: 1px solid #e36947;animation: xz .3s infinite;}@keyframes xz {0% {transform: translate(0);}20% {transform: translate(-2px, 2px);}40% {transform: translate(-2px, -2px);}60% {transform: translate(2px, -2px);}80% {transform: translate(-2px, -2px);}100% {transform: translate(0);}}h2 {width: 100px;height: 30px;background-color: pink;position: absolute;top: 50px;left: calc(50% - 50px);text-align: center;line-height: 30px;}p {width: 300px;height: 50px;background-color: pink;position: absolute;top: 100px;left: calc(50% - 150px);text-align: center;line-height: 50px;font-size: 20px;}h3 {width: 200px;height: 30px;background-color: pink;position: absolute;top: 150px;left: calc(50% - 100px);text-align: center;line-height: 30px;}
</style><body><h2></h2><p>分数每累计 5 分,速度会提升</p><h3></h3><div class="div"><ul class="row"><li class="li1">Q</li><li class="li2">W</li><li class="li3">E</li><li class="li4">R</li><li class="li5">T</li><li class="li5">Y</li><li class="li4">U</li><li class="li3">I</li><li class="li2">O</li><li class="li1">P</li></ul><ul class="row"><li class="li1">A</li><li class="li2">S</li><li class="li3">D</li><li class="li4">F</li><li class="li5">G</li><li class="li4">H</li><li class="li3">J</li><li class="li2">K</li><li class="li1">L</li></ul><ul class="row"><li class="li1">Z</li><li class="li2">X</li><li class="li3">C</li><li class="li4">V</li><li class="li3">B</li><li class="li2">N</li><li class="li1">M</li></ul></div>
</body>
<script src="./utils.js"></script>
<script>// 获取所有 li 标签var lis = document.querySelectorAll("li");// 定义一个26个字母var str = "ABCDEFGHIJKLNMOPQISTUVWXYZ"randomkey()// 创建函数 - 随机获得按键function randomkey() {//调用随机数var randomletter = getRandom(0, 26);// 遍历所有 li 标签for (var i = 0; i < lis.length; i++) {// 判断 随机字符 与 哪个 li 内容对等if (str[randomletter] === lis[i].innerText) {// console.log(str[randomletter])for (var j = 0; j < lis.length; j++) {lis[j].setAttribute("name", "")}lis[i].setAttribute("name", "xz")}}}//定义一个计数器 - 分数var num = 0;// 定义一个变量a,接收定时器的执行时间var a = 3000;// 定义一个全局变量的timerId接收定时器 - 便于调用var timerId;// 定义定时器,每三秒换个键timerId = setInterval(randomkey, a)//获取h2标签document.querySelector("h2").innerText = "分数:" + num//获取 h3 标签 document.querySelector("h3").innerText = "现在速度:" + a + "毫秒"// 创建键盘按下事件document.addEventListener("keydown", function () {// 获取事件对象var evt = window.event// 获取键盘输出的字母var keyboard = String.fromCharCode(evt.keyCode)// 获取被选中的 livar li = document.querySelector(".row li[name=xz]")// 判断键盘输入的字母是否与选中li内容相等if (keyboard === li.innerText) {// 如果相等则分数+1//运行一次函数,更换下个键位randomkey();num++// 116 对应键盘上的 F5键}// 判断,如果输入的键位不符合则游戏失败// 116 对应键盘上的 F5键else if (evt.keyCode != 116) {clearInterval(timerId)num = 0a = 3000alert("游戏失败")}// // 如果分数够 30 则游戏通过// if (num === 30) {//     clearInterval(timerId)//     num = 0//     a = 3000//     alert("游戏通关")// }// 将分数放在 h2 中document.querySelector("h2").innerText = "分数:" + num})//创建键盘抬起事件document.addEventListener("keyup", function () {//每五次加速if (num % 5 == 0 && num !== 0) {if (a > 1000 ) {a -= 500} else if (a <= 1000) {a -= 100if (a === 200) {a = 200}}}//获取 h3 标签 document.querySelector("h3").innerText = "现在速度:" + a + "毫秒"// 先停止定时器 -  解决定时器会造成 键位 的频繁切换clearInterval(timerId)// 从新定义新的定时器,继续循环timerId = setInterval(randomkey, a)})
</script></html>
/*** 获取随机数的函数* @param {number} a 代表范围的数字* @param {number} b 代表范围的数字* @return {number} 返回范围内的随机整数*/
function getRandom(a, b){var max = a>b?a:bvar min = a>b?b:areturn parseInt(Math.random() * (max - min)) + min
}
/*** 获取16进制的随机颜色值*/
function getColor(){var color = '#'for(var i=0;i<3;i++){var num = getRandom(0, 256)var hex = num.toString(16)hex = hex.length === 1 ? '0' + hex : hex;color += hex}return color
}
/*** 批量设置样式的函数* @param {node} ele 被设置样式的标签对象* @param {object} styleObj 要设置的样式组成的键值对*/
function setStyle(ele, styleObj){for(var key in styleObj){ele.style[key] = styleObj[key]}
}

 


http://www.ppmy.cn/news/527690.html

相关文章

抢滩登陆-秘籍

抢滩登陆2002下载链接: https://pan.baidu.com/s/1iFNUwQ0Yrr4L-e4lz2i9Og 提取码: f6mc 在游戏界面中按电脑键盘的数字键。 1 无敌&#xff0c;不受伤害&#xff0c;有防御力。 2 弹药无限&#xff0c;不用换弹夹。 电脑键盘的字母键。 g 手枪。子弹有限十二颗。 m 飞弹&…

金山打字通2008下载-金山打字通2008正式版-金山打字通2008完整版

金山打字通2008下载&#xff1a;金山打字通2008正式版集成金山打字通2008以及金山打字游戏2008两个版本于一身。主要由英文打字、拼音打字、五笔打字、打字游戏等六部分组成。所有练习用词汇和文章都分专业和通用两种&#xff0c;用户可根据需要进行选择。英文打字由键位记忆到…

Java 文字版打斗游戏

文章目录 一、题目描述二、界面展示1.第一次运行结果英雄信息显示攻击过程显示 2.第二次运行结果英雄信息显示攻击过程显示 三、功能实现1.英雄类字段定义2.长相描述定义3.攻击方式和受伤描述 四、代码展示1.javabean类&#xff1a;Role.java2.game.java 一、题目描述 java文字…

飞机大战最强版本来袭——Java游戏开发

前两天给大家带来了《飞翔的小鸟》《大鱼吃小鱼》《王者荣耀》《黄金矿工》《超级玛丽》等游戏的项目制作&#xff0c;大家应该都上手实操了吧&#xff0c;那么今天给大家带来不一样的《飞机大战》&#xff01; 《飞机大战》是一款经典飞行射击类游戏&#xff0c;精美绚丽…

仿金山打字通游戏 Java代码

Code: package com.mxs.util;import javax.swing.*; import java.awt.*; import java.awt.event.*;public class ZiMu extends JFrame {ZiMu() {this.setSize(300, 600);this.setResizable(false);this.setTitle("打字游戏");this.setBackground(Color.BLACK);MyPane…

基于JavaSwing写的雷霆战机(飞机大战)

自学Java已经有一段时间了吧&#xff0c;一直都没有一个关于界面的完整的项目&#xff0c;计算器这些又太简单&#xff0c;所以就一直构思写一个基于JavaSwing的游戏。虽然在日常开发中使用到JavaSwing开发界面的很少。但是这个游戏也就当做一次对我前面所学习的知识的巩固吧&a…

打单词游戏 html5,html打字游戏

【实例简介】 html5写的一款打字小游戏&#xff0c;是以射击类游戏为模型&#xff0c;练习英语单词也是这款游戏的特色 【实例截图】 【核心代码】 HTML5打字游戏 └── 打飞字 ├── index.html ├── media │ ├── background │ │ ├── 20140919124256_zaWss…

金山打字通生死时速游戏介绍

金山打字通是一款帮助用户从零开始学习打字的软件&#xff0c;其内置的游戏使打字这一枯燥的活动变得更加有趣。在内置的五款游戏中&#xff0c;属生死时速&#xff08;又名警察抓小偷&#xff09;的制作最为精良&#xff0c;可玩性也最高。 设计元素 玩家 角色与特征&#x…