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 相关文章推荐
Javascript之文件操作
Mar 07 Javascript
小议Javascript中的this指针
Mar 18 Javascript
jQuery.getScript加载同域JS的代码
Feb 13 Javascript
解析页面加载与js函数的执行 onload or ready
Dec 12 Javascript
jQuery中hasClass()方法用法实例
Jan 06 Javascript
jQuery查看选中对象HTML代码的方法
Jun 17 Javascript
JS获取url参数、主域名的方法实例分析
Aug 03 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
微信小程序入门之广告条实现方法示例
Dec 05 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
深入了解Vue3模板编译原理
Nov 19 Vue.js
在Angular项目使用socket.io实现通信的方法
Jan 05 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
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
python编写简单爬虫资料汇总
2016/03/22 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
python模块之paramiko实例代码
2018/01/31 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
Python如何进行时间处理
2020/08/06 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
大学生个人求职信
2014/06/02 职场文书
2014最新实习证明模板
2014/10/02 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
远程教育学习心得体会
2016/01/23 职场文书
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP