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的滑动样例代码
Nov 20 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
Nov 30 Javascript
event.currentTarget与event.target的区别介绍
Dec 31 Javascript
javascript将url中的参数加密解密代码
Nov 17 Javascript
基于 Node.js 实现前后端分离
Apr 23 Javascript
jQuery实现图像旋转动画效果
May 29 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
jQuery+CSS3实现点赞功能
Mar 13 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
vue项目优化之通过keep-alive数据缓存的方法
Dec 11 Javascript
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
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+javascript制作带提示的验证码源码分享
2014/05/28 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
优秀村官事迹材料
2014/01/10 职场文书
讲座主持词
2014/03/20 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
五一劳动节慰问信
2015/02/14 职场文书
公司保洁员管理制度
2015/08/04 职场文书
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL