js写打地鼠游戏练习

最近上课写了一个打地鼠的小游戏,分享一下给大家。
以下是js的代码,完整代码链接:https://github.com/mouseGame

/**
 * 打地鼠游戏
 */
let time = 59; //时间,默认为1分钟,即59秒
let timeBox = document.querySelector("#time"); //显示时间的盒子
let score = 0; //得分
let scoreBox = document.querySelector("#score"); //显示得分的盒子
let level = 1000; //难度,即生成地鼠的时间频率,默认为1秒,也就是1000毫秒
let laughBox = document.querySelector("#mshow"); //笑的音效盒子
let cryBox = document.querySelector("#mcry"); //哭的音效盒子
let controlBtn = document.querySelector("#begin"); //控制按钮
let maps = document.querySelectorAll(".table>div>div"); //地图,为生成地鼠的单元格(选择了16个格子)
let timerForT = null; //时间计时器
let timeForM = null; //地鼠生成计时器
/**
 * 时间显示函数
 */
function showTime() {
	//显示当前时间,时间减一,判断时间是否为0,为0则清楚两个计时器(地鼠生成计时器和时间计时器),游戏结束
    timeBox.innerHTML = time<10 ? "0"+time : time;
    time--;
    if(time<0){
        clearInterval(timerForT);
        clearInterval(timeForM);
    }
}
/**
 *随机生成地鼠
 */
function showMouse() {
    // let pos = Math.round(Math.random()*100)%maps.length;
	let pos = Math.floor(Math.random()*maps.length); //随机生成一个0-15的数字
    for (let i = 0; i < maps.length; i++) {
       if(i== pos){
           //利用随机数和地图数组下对应关系,设置地鼠出现
           maps[i].innerHTML = "<img src='images/init.png' />";
           //做地鼠出现的标记
           maps[i].setAttribute("v",1);
           laughBox.play();//播放笑的音效
       }
       else{
              //地鼠未出现的地方,清除地鼠出现的标记
              maps[i].innerHTML = "";
              maps[i].removeAttribute("v",0);//设置地鼠未出现的标记
       }
   }
}

/**
 * 打地鼠
 */
function breakMouse() {
    if(event.target.parentNode.getAttribute("v")==1){
        //判断点击的地方是否有地鼠,有则得分加一,播放哭的音效
        score++;
        event.target.src="images/break.png";
        cryBox.play();
        //刷新成绩
        scoreBox.innerHTML = score.toString();
        //立即修改该单元的v属性为0,防止连击,重复得分
        event.target.setAttribute("v",0);
    }
	
	
}

/**
 * 开始游戏
 */
function gameStart() {
    //初始化时间和得分,设置控制按钮的状态,开始计时,随机生成地鼠
    time=59;
    score=0;
    scoreBox.innerHTML = score.toString();
    controlBtn.innerHTML = "结束游戏";
    controlBtn.setAttribute("s",1);
    //随机生成地鼠
    timeForM = setInterval(showMouse,level);
    //开始计时
    timerForT = setInterval(showTime,1000);

	
}
/**
 * 结束游戏
 */
function gameFinish() {
    controlBtn.innerHTML = "开始游戏";
    controlBtn.setAttribute("s",0);
    clearInterval(timerForT);
    clearInterval(timeForM);
	
}

/**
 * 游戏初始化
 * 功能:关联按钮的事件
 */
function gameInit() {
    controlBtn.innerHTML = "开始游戏";
    controlBtn.setAttribute("s",0);
    //安装单元格的监听器
    for (let i = 0; i < maps.length; i++) {
        maps[i].addEventListener("click",breakMouse,false);
    }
    //安装控制按钮的监听器
    controlBtn.addEventListener("click",function () {
        if(event.target.getAttribute("s")==0){
            gameStart();
        }
        else{
            gameFinish();
        }
    });
}

效果图:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值