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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
Mozilla 表达式 __noSuchMethod__
Apr 05 Javascript
JavaScript中的null和undefined解析
Apr 14 Javascript
地址栏传递中文参数乱码在js里用escape转码
Aug 28 Javascript
html5 canvas js(数字时钟)实例代码
Dec 23 Javascript
jQuery实现瀑布流布局
Dec 12 Javascript
JavaScript实现N皇后问题算法谜题解答
Dec 29 Javascript
js实现键盘Enter键提交表单的方法
May 27 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
详细分析JS函数去抖和节流
Dec 05 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 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
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
24式加速你的Python(小结)
2019/06/13 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
浅谈python 类方法/静态方法
2020/09/18 Python
新员工试用期自我鉴定
2014/04/17 职场文书
学校搬迁方案
2014/06/15 职场文书
健康证明
2015/06/19 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
基于python制作简易版学生信息管理系统
2021/04/20 Python
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python
小程序实现侧滑删除功能
2022/06/25 Javascript