JavaScript实现简单的打字游戏

简介: JavaScript实现简单的打字游戏

完整项目下载:https://download.csdn.net/download/weixin_44893902/13131694

演示地址:https://url_777.gitee.io/typing-games/


实现代码:


目录结构:


80.png


HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>打字游戏</title>
    <link rel="stylesheet" href="css/new_file.css" />
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script src="js/index.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body>
    <!-- 背景音乐 -->
    <audio id="mus">
      <source src="music/music_bg.mp3"></source>
    </audio>
    <!-- 主体部分 -->
     <div id="box">
       <div id="">
       </div>
       <!-- 左右的生命和音量图标 -->
      <img src="./img/生命.png" style="float: left; margin: 45px;" width="45" height="38" id="life" />
      <img src="./img/volume.png" style="float: right; margin: 45px;" width="45" height="38" id="volume" />
      <!-- 计分模块 -->
      <div class="score"><font>0</font></div>
            <div id="game"></div>
      <!-- 重新开始界面 -->
            <div class="reload">
          <input type="button" class="btn squick" value="重新开始" />
          <a href="http://www.baidu.com"> <input type="button" class=" btn tu" value="退出游戏" /></a> 
            </div>
      <!-- 按钮 -->
        <input type="button" class=" btn start" value="开 始 游 戏" />
        <input type="button" class=" btn stop" value="暂 停 游 戏" />
        <input type="button" class=" btn quick" value="增 加 难 度" />
  </div>
</html>


CSS


*{
  margin: 0;
  padding: 0;
}
.btn{
      width: 170px;
      height: 70px;
      border-radius: 20px;
      border: 1px solid greenyellow;
    outline: medium;
      background: url(../img/background.jpg) no-repeat;
      background-size:170px 70px;
      float: left;
    margin-left: 20px;
    margin-top: 300px;
      text-align: center;
      /* cursor: pointer; */
      /* user-select: none; */
      font-weight: bold;
      font-size: 30px;
      color:white;
}
.btn:hover{
  border: 3px solid greenyellow;
}
#box{
     width: 100%;
     height: 100vh;
     background:url(../img/background.jpg) no-repeat;
     background-size:100% 100%;
     overflow: hidden;
}
.score{
     width: 250px;
     height: 355px;
     background: url(../img/score.png) no-repeat;
     background-size:100% 100%;
     position: absolute;
     right:10px;
     /* bottom: -80px; */
     font-size: 60px;
     text-align: center;
     line-height: 280px;
     color: white;
     cursor: pointer;
     user-select: none;
   margin-top: 395px;
}
.startorstop{
     width: 100%;
     height: 50px;
     position: absolute;
     bottom: 20px;
}
.reload{
        width: 500px;
        height: 350px;
        background: url(../img/reload.gif) no-repeat;
        background-size:350px 270px;
        margin: 0 auto;
        position: relative;
        top: -650px;
}
.squick{
  width: 130px;
    height: 50px;
  margin-top: 280px;
  margin-left: 40px;
}
.tu{
  width: 130px;
    height: 50px;
  margin-top: -49px;
  margin-left: 210px;
}       
#game img{
        position: absolute;
}
#music_btn{
        width: 70px;
        height: 70px;
        position: absolute;
        left: 10px;
        top: 20px;
        cursor: pointer;
        user-select: none;  
}
.play-tips{
  width: 500px;
  height: 400px;
  margin: 0 auto;
  margin-top: 150px;
  border:  1px solid red;
}
#buttons1{
  width: 700px;
  height: 200px;
  margin-bottom: 100px;
}


JavaScript


$(function(){
      var chars =['A','B','C','D','E','F','G','H','T','J','K','L','M','N','O','P','Q','R','S','G','U','V','W','X','Y','Z'];
    //积分
      var score = 0;
     //默认游戏的状态
      var flag = true;
     //声明刚开始游戏的状态
      var f = true;
    //开始游戏的标识
      var speed = 1;
      var start = $(".start");
      var createImgInterval;
      var downImgInterval;
    //默认游戏的状态
     //点击开始游戏按钮所执行的函数
    start.click(function(){
      play(speed);
      var music=document.getElementById("mus");
      music.play();
      flag = true;
      if(f){
      f = false;
    }
   });
    //点击暂停按钮所执行的函数
     $(".stop").click(function(){
       if(flag){
       flag = false;
       $(this).val("继 续 游 戏")
       var music=document.getElementById("mus");
       music.pause();
      }else{
       flag = true;
       $(this).val("暂 停 游 戏")
       var music=document.getElementById("mus");
       music.play();
      }
   });
    //增加难度
     $(".quick").click(function(){
      if(!f){
      speed += 0.5;
      play(speed);
     }
   });
   //重新开始游戏
   $(".reload").click(function(){
     $(this).animate({top:"-350px"});
     $("#game").children().remove();
     score = 0;
     $(".score").html(score);
     flag = true;
     f = true;
     speed = 1;
     play(speed);
     console.log(speed)
   });
   //创建图片
  function createImg(){
    if(flag){
    //随机创建
    var random = randomScope(0,25);
    var img = chars[random];
    var Dwidth = $(document).width();//获取浏览器的宽度
    var left = randomScope(Dwidth-100,100);
    $("#game").append("<img src='img/"+img+".png' width='80' height='100' style='left:"+left+"px; top:-100px;' />");
    }
   }
   //加载图片
   function downImg(){
     if(flag){
       var imgs = $("#game").children();//获取生成的所有字母
       for(var i=0;i<imgs.length;i++){
         var img = imgs[i];
         //当前字母
         var Top = parseInt(img.style.top);
         //当前字母距离顶部的值
         var Height = $("#box").height()-200;
         if(Top<=Height){
         img.style.top=(Top+2)+"px";
         }else{
         img.remove();
//                   error.play();
         if(score==0){
           score=0
         }else{
           score -= 10;
         }
         $(".score").html(score);
         if(score <= 0){
           flag = false;
           $(".reload").animate({"top":"30px"});
//                     gameOver.play();
           window.clearInterval(createImgInterval);
           window.clearInterval(downImgInterval);
           return  ;
         }
         }
       }
     }
   }
    $(window).keyup(function(e){
    var eve = window.event || e;//获取事件对象
    var imgs = $("#game").children();//获取所生成的字母
    var code = eve.keyCode;//获取用户按下的键
     if(flag){
     for(var i =0;i<imgs.length;i++){
       var img = imgs[i];
       var imgSrc = img.src.split("/");
       var name = imgSrc[imgSrc.length-1].split(".")[0];
       if(name == chars[code-65]){
       img.remove();
       score+=10;
       $(".score").html(score); 
       if(score <= 0){
         // $(".tupian").animate({"bottom":"0px"});
         window.clearInterval(createImgInterval);
         window.clearInterval(downImgInterval);
       }
       return;
       }
     }
     }
   });
   //定时器
   function play(speed){
    console.log(speed)
    createImgInterval = window.setInterval(createImg,1000-speed*50);
    downImgInterval = window.setInterval(downImg,20-speed/2); 
   }
   //随机范围方法
   function randomScope(minScope,maxScope){
     return Math.floor(Math.random()*(maxScope-minScope+1)+minScope);
   }
   var music=document.getElementById("volume");
   music.onclick = function(){
     var i = true;
     var mus=document.getElementById("mus");
     if (mus.paused) {
       mus.play();
         // 暂停中
     } else {
         // 播放中
       mus.pause();
     }
   }
    });



相关文章
|
9天前
|
JavaScript
JS趣味打字金鱼小游戏特效源码
hi fish是一款打字趣味小游戏,捞出海里的鱼,捞的越多越好。这款游戏用于电脑初学者练习打字。初学者可以根据自己的水平设置游戏难度。本段代码可以在各个网页使用,有需要的朋友可以直接下载使用,本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码!
16 3
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的使命召唤游戏助手附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的使命召唤游戏助手附带文章和源代码部署视频讲解等
56 5
基于ssm+vue.js+uniapp小程序的使命召唤游戏助手附带文章和源代码部署视频讲解等
|
10天前
|
JavaScript
JS趣味打字金鱼小游戏特效源码
hi fish是一款打字趣味小游戏,捞出海里的鱼,捞的越多越好。这款游戏用于电脑初学者练习打字。初学者可以根据自己的水平设置游戏难度。本段代码可以在各个网页使用,有需要的朋友可以直接下载使用,本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码!
20 0
JS趣味打字金鱼小游戏特效源码
|
5月前
|
前端开发 JavaScript Java
【JavaScript】JavaScript 防抖与节流:以游戏智慧解锁实战奥秘
【JavaScript】JavaScript 防抖与节流:以游戏智慧解锁实战奥秘
61 3
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的原神游戏商城附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的原神游戏商城附带文章和源代码部署视频讲解等
65 4
|
2月前
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
34 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的游戏虚拟道具交易网站附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的游戏虚拟道具交易网站附带文章和源代码部署视频讲解等
147 20
基于ssm+vue.js+uniapp小程序的游戏虚拟道具交易网站附带文章和源代码部署视频讲解等
|
3月前
|
JavaScript
JS九行代码实现1~10猜数字游戏
JS九行代码实现1~10猜数字游戏
47 0
|
3月前
|
移动开发 前端开发 JavaScript
2D物理引擎 Box2D for javascript Games -- 番外篇-- (为游戏添加皮肤)
2D物理引擎 Box2D for javascript Games -- 番外篇-- (为游戏添加皮肤)
|
5月前
|
JavaScript 前端开发 算法
设计一个简单的JavaScript版“俄罗斯方块”游戏
【6月更文挑战第16天】构建JavaScript版俄罗斯方块涉及初始化游戏环境、生成与控制方块、处理碰撞消除、游戏结束判断及循环管理。伪代码示例展示了游戏核心逻辑,包括初始化、方块生成、移动、锁定、碰撞检测、行消除、游戏结束条件及状态更新。实际实现需考虑更多细节,如方块形状、动画、音效等。
83 9