javascript实现简单打字游戏


Posted in Javascript onOctober 29, 2019

本文实例为大家分享了javascript打字游戏的具体代码,供大家参考,具体内容如下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>传智打字游戏</title>
<style type="text/css">
 .label{
 position:absolute;left: 0px;
 }
</style>
<script type="text/javascript" src="game.js"></script>
</head>
<body>
 <div id="msg"></div>
 <input id="startBtn" type="button" value="开始游戏" οnclick="startGame(this)"/>
 <input type="button" value="停止游戏" οnclick="stopGame()"/>
</body>
</html>
var CODE = "QWERTYUIOPASDFGHJKLZXCVBNM";
var codeArray = [];
var number = 0; 
 
//创建随机字母 
function createCode(){
 //0-25
 var index = parseInt(Math.random()*26);
 return CODE.charAt(index);
};
 
//创建显示label方法
function createLabel(code){
 /**
 * <label class="label">
 A
 </label>
 */
 var label = document.createElement("label");
 label.className = "label";
 label.style.top = "50px";
 label.innerHTML = code;
 label.code = code;
 
 var html = document.documentElement;
 
 //所有label标签的x坐标
 var labelX = parseInt(Math.random()*html.clientWidth);
 if(labelX>100){
 labelX-=20;
 }
 
 label.style.left = labelX+"px";
 
 return label;
}
 
window.onload = function(){
 document.getElementById("startBtn").disabled = false;
 
 
 //注册键盘事件
 document.documentElement.οnkeydοwn=function(event){
 var keyCode = event.keyCode; //获取按下的吗
 var code = String.fromCharCode(keyCode);//A-Z
 for ( var i = 0; i < codeArray.length; i++) {
 //label标签
 var label = codeArray[i];
 if(label.code==code){
  clearInterval(label.interval_id);
  label.parentNode.removeChild(label);
  codeArray.splice(i,1);
  number+=10;
  
  document.getElementById("msg").innerHTML = number+"分";
 break;
 }
 }
 };
};
 
//让label标签慢慢的从上向下移动
function runLabelTop(label){
 
 //获取页面的高度
 var height = Math.max(document.documentElement.clientHeight,document.documentElement.scrollHeight);
 
 label.interval_id = setInterval(function(){
 //50px
 var top = parseInt(label.style.top);
 top+=1;
 //判断label是否已经超过页面的高度
 if(top>height-30){
 removeLabel(label,false);
 }else{
 label.style.top = top+"px";
 }
 },10);
}
 
//flag = false用户没有按下该字母
function removeLabel(label,flag){
 clearInterval(label.interval_id);
 label.parentNode.removeChild(label);
 codeArray.shift();
 number-=20;
 document.getElementById("msg").innerHTML = number+"分";
}
 
var game_id = null;
 
//开始游戏
function startGame(startButton){
 
 startButton.disabled = true;
 
 game_id = setInterval(function(){
 //创建要显示的字符
 var code =createCode();
 //创建一个label显示字符
 var label = createLabel(code);
 
 //让label标签慢慢向下移动,修改标签的style.top属性
 runLabelTop(label);
 
 //把label标签节加入到页面中
 document.body.appendChild(label);
 codeArray.push(label);
 },1000);
}
 
//停止游戏
function stopGame(){
 clearInterval(game_id);
 for ( var i = 0; i < codeArray.length; i++) {
 clearInterval(codeArray[i].interval_id);
 codeArray[i].parentNode.removeChild(codeArray[i]);
 }
 codeArray = [];
 document.getElementById("startBtn").disabled = false;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 验证码的实例代码(附效果图)
Mar 22 Javascript
jquery实现多级下拉菜单的实例代码
Oct 02 Javascript
js根据日期判断星座的示例代码
Jan 23 Javascript
jQuery中:file选择器用法实例
Jan 04 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 Javascript
JS实现iframe自适应高度的方法示例
Jan 07 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
vue awesome swiper异步加载数据出现的bug问题
Jul 03 Javascript
微信小程序 Animation实现图片旋转动画示例
Aug 22 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
Dec 12 Javascript
Vue this.$router.push(参数)实现页面跳转操作
Sep 09 Javascript
简单使用webpack打包文件的实现
Oct 29 #Javascript
vue 解决异步数据更新问题
Oct 29 #Javascript
VUE实现强制渲染,强制更新
Oct 29 #Javascript
js实现贪吃蛇小游戏
Oct 29 #Javascript
浅谈vue异步数据影响页面渲染
Oct 29 #Javascript
详解vue中多个有顺序要求的异步操作处理
Oct 29 #Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 #Javascript
You might like
PHP异常处理定义与使用方法分析
2017/07/25 PHP
图片之间的切换
2006/06/26 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python性能优化技巧
2015/03/09 Python
python妹子图简单爬虫实例
2015/07/07 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
小学一年级评语大全
2014/04/22 职场文书
企业环保标语
2014/06/10 职场文书
个人收入证明模板
2014/09/18 职场文书
市场总监岗位职责
2015/02/11 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
刑事附带民事代理词
2015/05/25 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
如何书写邀请函?
2019/06/24 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python