js实现打地鼠小游戏


Posted in Javascript onFebruary 13, 2017

话不多说,请看代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>打地鼠</title>
 <style type="text/css">
 #content {
 width:960px;
 margin:0 auto;
 text-align:center;
 margin-top:40px;
 }
 #form1 {
 margin:20px 0;
 }
 table {
 margin:0 auto;
 cursor:url(http://cdn.attach.qdfuns.com/notes/pics/201702/12/115915n79d7hvffengpdxe.png),auto;
 }
 td {
 width:95px;
 height:95px;
 background:#00ff33;
 }
 </style>
 <script type="text/javascript">
 var td = new Array(),  //保存每个格子的地鼠
 playing = false,  //游戏是否开始
 score = 0, //分数
 beat = 0, //鼠标点击次数
 success = 0, //命中率
 knock = 0, //鼠标点中老鼠图片的次数
 countDown = 30, //倒计时
 interId = null, //指定 setInterval()的变量
 timeId = null; //指定 setTimeout()的变量
 //游戏结束
 function GameOver(){
 timeStop();
 playing = false;
  clearMouse();
 alert("游戏结束!\n 你获得的分数为:"+score+"\n 命中率为:"+success);
 success = 0;
 score = 0;
 knock = 0;
 beat = 0;
 countDown = 30;
 }
 //显示当前倒计时所剩时间
 function timeShow(){
 document.form1.remtime.value = countDown;
 if(countDown == 0){
 GameOver();
 return;
 }else{
 countDown = countDown-1;
 timeId = setTimeout("timeShow()",1000);
 }
 }
 //主动停止所有计时
 function timeStop() {
 clearInterval(interId);
 clearTimeout(timeId); 
 }
 //随机循环显示老鼠图片
 function show(){
 if(playing){
 var current = Math.floor(Math.random()*25);
 document.getElementById("td["+current+"]").innerHTML = '<img src="http://cdn.attach.qdfuns.com/notes/pics/201702/12/115915w6tluu1gq8l1b54h.png">';
 setTimeout("document.getElementById('td["+current+"]').innerHtml=''",3000); //使用 setTimeout()实现3秒后隐藏老鼠图片
 }
 }
 //清除所有老鼠图片
 function clearMouse(){
 for(var i=0;i<25;i++){
 document.getElementById("td["+i+"]").innerHTML="";
 }
 }
 //点击事件函数,判断是否点中老鼠
 function hit(id){
 if(playing == false){
 alert("请点击开始游戏!");
 return;
 }else{
 beat += 1;
 if(document.getElementById("td["+id+"]").innerHTML != ""){
 score += 1;
 knock += 1;
 success = knock/beat;
 document.form1.success.value = success;
 document.form1.score.value = score;
 document.getElementById("td["+id+"]").innerHTML = "";
 }else{
 score += -1;
 success = knock/beat;
 document.form1.success.value = success;
  document.form1.score.value = score;
 }
 }
 }
 //游戏开始
 function GameStart(){
 playing = true;
 interId = setInterval("show()",1000); 
 document.form1.score.value = score;
 document.form1.success.value = success;
 timeShow();
 } 
 </script>
</head>
<body>
 <div id="content">
 <input type="button" value="开始游戏" onclick="GameStart()" />
 <input type="button" value="结束游戏" onclick="GameOver()" />
 <form name="form1" id="form1">
  <label>分数:</label>
  <input type="text" name="score" size="5">
  <label>命中率:</label>
  <input type="text" name="success" size="10">
  <label>倒计时:</label>
  <input type="text" name="remtime" size="5">
 </form> 
 <table>
  <tr>
  <td id="td[0]" onclick="hit(0)"></td>  
  <td id="td[1]" onclick="hit(1)"></td>
  <td id="td[2]" onclick="hit(2)"></td>
  <td id="td[3]" onclick="hit(3)"></td>
  <td id="td[4]" onclick="hit(4)"></td>
  </tr>
  <tr>
  <td id="td[5]" onclick="hit(5)"></td>
  <td id="td[6]" onclick="hit(6)"></td>
  <td id="td[7]" onclick="hit(7)"></td>
  <td id="td[8]" onclick="hit(8)"></td>
  <td id="td[9]" onclick="hit(9)"></td>
  </tr>
  <tr>
  <td id="td[10]" onclick="hit(10)"></td>
  <td id="td[11]" onclick="hit(11)"></td>
  <td id="td[12]" onclick="hit(12)"></td>
  <td id="td[13]" onclick="hit(13)"></td>
  <td id="td[14]" onclick="hit(14)"></td>
  </tr>
  <tr>
  <td id="td[15]" onclick="hit(15)"></td>
  <td id="td[16]" onclick="hit(16)"></td>
  <td id="td[17]" onclick="hit(17)"></td>
  <td id="td[18]" onclick="hit(18)"></td>
  <td id="td[19]" onclick="hit(19)"></td>
  </tr>
  <tr>
  <td id="td[20]" onclick="hit(20)"></td>
  <td id="td[21]" onclick="hit(21)"></td>
  <td id="td[22]" onclick="hit(22)"></td>
  <td id="td[23]" onclick="hit(23)"></td>
  <td id="td[24]" onclick="hit(24)"></td>
  </tr>
 </table>
 </div>
</body>
</html>

流程设计:

  • 点击“开始游戏”按钮游戏开始,否则将提示“请点击开始游戏”字样
  • 分数、命中率显示重置为“0”,倒计时开始(默认为30秒)
  • 老鼠图片不断显示、隐藏,玩家可点击鼠标左键进行游戏
  • 当30秒倒计时结束或者玩家主动点击“结束按钮”时,游戏结束并显示游戏结果

实例中用到的图片附件下载

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
jQuery原生的动画效果
Jul 10 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 Javascript
Angular2实现自定义双向绑定属性
Mar 22 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
JavaScript实现无限级递归树的示例代码
Mar 29 Javascript
基于jQuery实现可编辑的表格
Dec 11 jQuery
uin-app+mockjs实现本地数据模拟
Aug 26 Javascript
canvas实现钟表效果
Feb 13 #Javascript
深入理解Javascript箭头函数中的this
Feb 13 #Javascript
ES6学习之变量的解构赋值
Feb 12 #Javascript
AngularJS实现路由实例
Feb 12 #Javascript
jQuery文字轮播特效
Feb 12 #Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 #Javascript
jQuery、zepto、js常用小技巧
Feb 12 #Javascript
You might like
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python 两个数据库postgresql对比
2019/10/21 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
销售工作岗位职责
2013/12/24 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
旅游市场营销方案
2014/03/09 职场文书
活动倡议书范文
2014/05/13 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
护士自荐信范文
2015/03/25 职场文书
学校通报表扬范文
2015/05/04 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
vue实现简易音乐播放器
2022/08/14 Vue.js
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers