博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打字游戏
阅读量:6800 次
发布时间:2019-06-26

本文共 1568 字,大约阅读时间需要 5 分钟。

"柴米油盐酱醋茶",现在我们想要写一个小游戏是不是得先要了解一些基本知识,就比如说你想要煮饭,你得认识"米"、你得知道生火煮饭这个流程吧!

  核心部分:第一步我们需要一个键盘按下事件onkeydown,第二步我们需要知道我们按下的是哪个按钮:e.keyCode ||e.which(返回的是ASCII码),第三步判断屏幕上字母的ASCII码是不是和你键盘按下的ASCII码是不是一致.

  

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding: 0}
#content{width:900px;margin:0 auto;position: relative;}
div{font-size:60px;position: absolute}
</style>
</head>
<body>
<div id="content">
</div>
</body>
</html>
<script>

//得到一个随机数

function numRandom(){
return parseInt(arguments[0]+Math.random()*(arguments[1]-arguments[0]+1));
}

//第一步获取大盒子
var oCon = document.getElementById("content");

//第二步开启一个定时器不间断的创建div并且插入到大盒子里面去(这就是头部不断产生字母的效果)

setInterval(function(){
var div = document.createElement("div");
div.innerHTML = String.fromCharCode(numRandom(65,90))//将ASCII码转换为字符
div.className = "char";
div.style.left = numRandom(0,900)+"px";
oCon.appendChild(div);
move(div)

},500)

//第三部创建一个运动的函数 每一个小的div都会运动起来如果某一个小的div的top值超过了500那么就会被销毁掉同时关闭 自身的定时器

function move(obj){

var t = 0;
obj.timer = setInterval(function(){
t+=10;
if(t>=500){
obj.remove();
clearInterval(obj.timer)
}else{
obj.style.top = t+'px';
}
},200)
}

//当用户按下的时候 首先获取下用户按下的code值 然后在将code值与所有的div里面的innerHTML转换成的code值做比较 如果比较成功则删除自身

document.onkeydown = function(e){
var e = e||event;
var code = e.keyCode ||e.which;
var aDiv = document.querySelectorAll(".char");
for(var i=0;i<aDiv.length;i++ ){
if(aDiv[i].innerHTML.charCodeAt(0) == code){
aDiv[i].remove();
}
}
}
</script>

打字游戏完成了,该是你练习的时候 了

转载于:https://www.cnblogs.com/tc-jieke/p/9060575.html

你可能感兴趣的文章
webpack4+vue实现多页面,结合Hbuilder快速开发APP
查看>>
springCloud Finchley 微服务架构从入门到精通【八】断路器 Hystrix(feign)
查看>>
vue的axios组件如何与PHP后端交换数据
查看>>
Flutter教程(二) 了解Dart语言
查看>>
ES6 札记:let 和 const
查看>>
FCC 成都社区·前端周刊 第 8 期
查看>>
Ant Design Pro用小乌龟版的git提交时报错
查看>>
Laravel 中使用 puppeteer 采集异步加载的网页内容
查看>>
Python每日小知识(5):调用和定义函数
查看>>
Spring中使用ActiveMQ
查看>>
【数据结构】Java语言描述-循环链表和双向链表操作
查看>>
什么是跨域以及几种简单解决方案
查看>>
reactor-netty中TcpClient的create过程
查看>>
使用vue开发桌面应用(electron)
查看>>
pipenv 更优雅的管理你的python开发环境
查看>>
微信小程序生成二维码工具
查看>>
weex-android添加返回按钮监听
查看>>
Android精品源码,微信红包动画动画效果库输入框风格新闻客户端组件化方案...
查看>>
CSS相关文章
查看>>
Spark User-guide Summary - Streaming
查看>>