精华内容
下载资源
问答
  • web前端之五子棋网页小游戏

    千次阅读 2020-07-05 21:20:54
    五子棋小游戏 这个五子棋小游戏,没有写成人机模式。 但大家可以尝试下自己饰演两个角色的五子棋,嘻嘻嘻 效果图片 效果 代码 index.html <!doctype html> <html lang="en"> <head> <meta...

    五子棋小游戏

    这个五子棋小游戏,没有写成人机模式。

    但大家可以尝试下自己饰演两个角色的五子棋,嘻嘻嘻

    效果图片

    在这里插入图片描述
    在这里插入图片描述

    效果

    在这里插入图片描述
    在这里插入图片描述

    代码

    index.html

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>简易五子棋游戏</title>
      <link rel="stylesheet" href="css/main.css">
      <script type="text/javascript" src="js/jquery.min.js"></script>
    </head>
    <body>
    <h1>简易版五子棋小游戏</h1>
    <h6>说明:体验下自己饰演两个角色的五子棋吧,嘻嘻。</h6>
    
    <!--canvas是个画布,需要修改的是尺寸,不是修改样式-->
      <canvas id="canvas" width="450" height="450"></canvas>
      <div class="mol-main">
        <div class="mol-header">
          <h2>五子棋小游戏</h2>
        </div>
        <div class="mol-success white">
          白棋获胜
        </div>
        <div class="mol-success black">
          黑棋获胜
        </div>
        <br>
        <div>
          <button class="btn">关闭</button>
        </div>
      </div>
    </body>
    <script type="text/javascript" src="js/main.js"></script>
    <script>
      $('.btn').click(function () {
        $('.mol-main').css('display','none');
    
      });
    </script>
    </html>
    

    main.css

    body{
        margin:0;
        background: #ccc;
    }
    h1{
        text-align: center;
    }
    
    h6{
        text-align: center;
        color: darkslategray;
    }
    
    /*------------棋盘-------------------------*/
    #canvas{
        display: block;
        margin: 20px auto;
    
        background:#fff;
    }
    .mol-main{
        width:180px;
        height: 160px;
        margin: 0 auto;
        padding: 10px;
    
        background:#eee;
        border-radius: 10px;
        opacity: 0.9;
    
        position: absolute;
        top:25%;
        left: 40%;
    
        display: none;
    }
    .mol-header h2{
        text-align: left;
        font-weight: bold;
    }
    .mol-success{
        color: firebrick;
        font-weight: bold;
    }
    
    .white{
        display: none;
    }
    .black{
        display: none;
    }
    
    .btn{
        cursor: pointer;
        width: 70px;
        height: 30px;
        border-radius: 5px;
        text-align: center;
        font-weight: bold;;
        background: cadetblue;
        color: #000;
    }
    .btn:hover{
        background: lightseagreen;
        color: #fff;
    }
    

    main,js

    /*
    *1、绘制棋盘
        *1.1绘制棋盘中直线
    * 2、绘制棋子
        *2.1绘制棋子
        * 2.2实现交互,点击下棋
        * 2.3黑白子棋交替操作
        * 2.4棋子落在棋盘交叉点上
        * 2.5设置已下棋处不得再进行操作
    * 3、游戏胜负判断
        *当前所下的棋子参与到胜负判断中,此时下棋的人要么赢,要么不赢(输/继续进行)
        * 此时所下棋子的位置应当作为判断点
        * 一条线上左右颜色连续累加超过5,那么这个颜色就获胜
     */
    //----------------------------------------------------
    
    //获取到html的canvas标签
    var canvas=document.querySelector('#canvas');
    //获取绘制环境
    var ctx =canvas.getContext('2d');
    
    //创建棋子颜色数组
    var chessColor=['#000','#fff'];
    
    //棋盘数组
    var maparr=[];
    
    //判断哪方赢
    var mode=[
        [1,0],//水平方向
        [0,1],//垂直方向
        [1,1],//右下 左上
        [1,-1]//右上 左下
    ];
    
    //----------------------------------
    //将棋盘上所有交叉点创建全为0的数组
    //如果当数组为1时,说明已经有棋子了
    for(var i=0;i<14;i++){
        maparr[i]=[];
        for(var j=0;j<14;j++){
            maparr[i][j]=0;
        }
    }
    
    
    //---设置游戏进行的步数-----为了实现黑白棋子交替进行操作--
    var step=0;
    /*----------绘制棋盘中直线--------------
    *描述绘制路径
    * 开始绘制
    */
    function init() {
        //----------绘制15条垂直和水平直线---------------------
        for(var i=1;i<15;i++){
            //----绘制15条垂直直线------
            //在格子(30,30)处开始画线
            ctx.moveTo(30*i,30);
            //线画到(30,420)的位置
            ctx.lineTo(30*i,420);
    
            //----绘制15条水平直线-----
            //在格子(30,30)处开始画线
            ctx.moveTo(30,30*i);
            //线画到(420,30)的位置
            ctx.lineTo(420,30*i);
        }
        //-----开始绘制线--------------
        ctx.stroke();
    }
    
    init();
    
    //--------绘制棋子---------------------
    function drawChess(x,y,color){
        //修改填充颜色
        ctx.fillStyle=color;
        //画圆---圆心坐标轴(x,y)--半径15--起始点角度0--终点角度为2派---
        ctx.beginPath();
        ctx.arc(x,y,15,0,Math.PI*2,false);
    
        //ctx.fill()填充
        ctx.fill();
        ctx.stroke();
    }
    
    
    //-----下棋----并使棋子都在起哦安交叉线上-----------------------------
    canvas.addEventListener('click',function(e){
        // console.log('点击棋盘');
    
    
        //--------------------------------------
    
        //e.offsetX和offsetY可以获取到点击时的坐标
        // console.log(e.offsetX,e.offsetY);
    
    //--------实现所有棋子都在棋盘的交叉线上---------
        //math.floor()向下取整
        //+15---点下去的位置向右偏移15-----
        //----即使得在一个小正方形象限内位置任意点棋子都在那个交叉点出
        var dx =Math.floor((e.offsetX+15)/30)*30;
        var dy =Math.floor((e.offsetY+15)/30)*30;
    
        //点击落下棋子
        if(dx == 0 || dy == 0 || dx == 450 || dy == 450){
            return false;
        }
    
        //避免已有棋子的点再下一次
        if(maparr[dx/30-1][dy/30-1]==0){
            drawChess(dx,dy,chessColor[step%2]);
            maparr[dx/30-1][dy/30-1]=chessColor[step%2];
    
            checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[0]);
            checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[1]);
            checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[2]);
            checkSuccess(dx/30-1,dy/30-1,chessColor[step%2],mode[3]);
    
            step++;
        }
    });
    
    //-----------判断哪方赢------要么黑赢要么白赢--------------------
    // var mode=[
    //     [1,0],//水平方向
    //     [0,1],//垂直方向
    //     [1,1],//右下 左上
    //     [1,-1]//右上 左下
    // ];
    
    //------根据mode数组检测不用方向-------------
    function checkSuccess(x,y,color,mode) {
        // console.log(x,y,color);
        var count=0;
        for(var i=1;i<5;i++){
            if(maparr[x+i]*mode[0]){
                if(maparr[x+i*mode[0]][y+i*mode[1]]==color){
                    count++;
                }else{
                    break;
                }
            }
        }
        for(var i=1;i<5;i++){
            if(maparr[x-i]){
                if(maparr[x-i*mode[0]][y-i*mode[1]]==color){
                    count++;
                }else{
                    break;
                }
            }
        }
        // console.log('水平方向有',count+1,'个',color);
        if(count>=4){
            if(color=='#000'){
                //显示黑棋获胜框
                $('.mol-main').css('display','block');
                $('.black').css('display','block');
    
                // alert('黑棋获胜');
            }else{
                //显示白棋获胜框
                $('.mol-main').css('display','block');
                $('.white').css('display','block');
    
                // alert('白棋获胜');
            }
        }
    }
    

    引用

    b站教程

    展开全文
  • 基于原生JavaScript开发的网页打砖块小游戏
  • 跳一跳小游戏 效果图片 效果 刷新产生随机位置 跳一跳 game over 代码实现 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>跳一跳</...

    跳一跳小游戏

    效果图片

    跳一跳
    跳一跳

    效果

    刷新产生随机位置

    刷新产生随机位置

    跳一跳

    跳一跳

    game over

    game over

    代码实现

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>跳一跳</title>
      <link rel="stylesheet" href="css/main.css">
      <script type="text/javascript" src="js/jquery.min.js"></script>
    </head>
    <body>
    <div class="gameName">跳一跳小游戏</div>
      <div class="game">
        <div class="content"></div>
    
        <!-- ---------跳棋---------------- -->
        <div id="chess">
          <div class="chess-top"></div>
          <div  class="chess-bottom"></div>
        </div>
        <button id="play">按住它</button>
      </div>
    
    <!----------------游戏结束-------------->
    <div class="modal fade" id="gameOverModal" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-tittle" id="myModalLabel">跳一跳小游戏</h4>
                </div>
                <br>
                <div class="modal-body">
                    Game Over!
                </div>
                <br>
                <div class="modal-footer">
                    <button type="button" class="btn-info" data-dismiss="modal">关闭</button>
                </div>
            </div>
        </div>
    </div>
    </body>
    <script type="text/javascript" src="js/game.js"></script>
    <script>
        $('.btn-info').click(function () {
            $('.modal-dialog').css({'display':'none'});
        });
    </script>
    </html>
    

    main.css

    *{
        padding: 0;
        margin: 0;
    }
    
    /*------------标题-----------------------*/
    .gameName {
        font-size: 35px;
        font-weight: bold;
        text-align: center;
        padding: 30px;
    }
    
    /*------------游戏体------------------------*/
    .game{
        position: relative;
        width: 900px;
        height: 600px;
        border: 1px solid #FAEBD7;
        border-radius: 5px;
        background:	#F5F5F5;
        margin: 0 auto;
    }
    .game .content{
        position: absolute;
        width: 800px;
        height: 600px;
        /*border: 1px solid #000;*/
        left: 0px;
        top: 0px;
    }
    
    /*------------圆柱体------------------*/
    .cylinder{
        position: relative;
        width: 70px;
        height: 100px;
        float: left;
    }
    /*----------圆柱体顶部样式---------------------*/
    .cylinder .top{
        position: absolute;
        width: 70px;
        height: 35px;
        border-radius: 50%;
        background: #FFF0F5;
        z-index: 4;
    }
    /*-----------圆柱体前部样式--------------------*/
    .cylinder .front{
        position: absolute;
        width: 70px;
        height: 70px;
        background: #556B2F;
        margin-top: 17px;
        z-index: 3;
    }
    /*----------圆柱体底部样式--------------------*/
    .cylinder .bottom{
        position: absolute;
        width: 70px;
        height: 35px;
        border-radius: 50%;
        background: #556B2F;
        margin-top: 65px;
        z-index: 4;
    }
    
    /*------------跳棋-----------------------*/
    .game #chess{
        position: absolute;
        width: 40px;
        height: 48px;
        overflow: hidden;
        z-index:100;
        transition-property: all;
    }
    /*-----------跳棋顶部样式---------------------*/
    .chess-top{
        width:20px;
        height:20px;
        border-radius:50%;
        background:#4B0082;
        position:absolute;
        margin-left:13px;
        z-index: 100;
    }
    /*-----------跳棋底部样式---------------------*/
    .chess-bottom{
        width:40px;
        height:40px;
        background:#000;
        overflow: hidden;
        margin-top: 32px;
        transform:rotate(67deg) skewX(40deg);
    }
    
    /*-----------按钮------------------------*/
    #play{
        cursor: pointer;
        position: absolute;
        width: 90px;
        height:50px;
        font-size: 20px;
        text-align: center;
        line-height: 30px;
        border-radius:10px;
        bottom: 10px;
        right: 10px;
    }
    #play:hover{
        background: orange;
        color: #fff;
        font-weight: bold;
    }
    
    /*--------运动动画-----调用jump-------------*/
    .move{
        animation-name: jump;
    }
    
    /* ----------创建跳棋运动动画------------- */
    @keyframes jump{
        0%{transform: rotate(0deg);}
        10%{transform: rotate(36deg);}
        20%{transform: rotate(72deg);}
        30%{transform: rotate(108deg);}
        40%{transform: rotate(144deg);}
        50%{transform: rotate(180deg);}
        60%{transform: rotate(216deg);}
        70%{transform: rotate(252deg);}
        80%{transform: rotate(288deg);}
        90%{transform: rotate(324deg);}
        100%{transform: rotate(360deg);}
    }
    
    /*Sarari和Chrome*/
    @-webkit-keyframes jump{
        0%{transform: rotate(0deg);}
        10%{transform: rotate(36deg);}
        20%{transform: rotate(72deg);}
        30%{transform: rotate(108deg);}
        40%{transform: rotate(144deg);}
        50%{transform: rotate(180deg);}
        60%{transform: rotate(216deg);}
        70%{transform: rotate(252deg);}
        80%{transform: rotate(288deg);}
        90%{transform: rotate(324deg);}
        100%{transform: rotate(360deg);}
    }
    
    /*Opera*/
    @-o-keyframes jump{
        0%{transform: rotate(0deg);}
        10%{transform: rotate(36deg);}
        20%{transform: rotate(72deg);}
        30%{transform: rotate(108deg);}
        40%{transform: rotate(144deg);}
        50%{transform: rotate(180deg);}
        60%{transform: rotate(216deg);}
        70%{transform: rotate(252deg);}
        80%{transform: rotate(288deg);}
        90%{transform: rotate(324deg);}
        100%{transform: rotate(360deg);}
    }
    
    /*Firefox*/
    @-moz-keyframes jump{
        0%{transform: rotate(0deg);}
        10%{transform: rotate(36deg);}
        20%{transform: rotate(72deg);}
        30%{transform: rotate(108deg);}
        40%{transform: rotate(144deg);}
        50%{transform: rotate(180deg);}
        60%{transform: rotate(216deg);}
        70%{transform: rotate(252deg);}
        80%{transform: rotate(288deg);}
        90%{transform: rotate(324deg);}
        100%{transform: rotate(360deg);}
    }
    
    /*-------------game over---------------------*/
    .modal {
        margin-top: 7%;
    }
    .modal .modal-header h4 {
        font-size: 25px;
        text-align: left;
        font-weight: bold;
    }
    .modal .modal-dialog {
        width: 200px;
        height: 120px;
        margin: 0 auto;
        padding: 30px;
    
        background:#eee;
        border-radius: 10px;
        opacity: 0.9;
    
        border:1px solid #000;
        position: absolute;
        top:30%;
        left: 40%;
    
        display: none;
    
        z-index:4;
    
    }
    .modal .modal-body {
        font-size: 20px;
        font-weight: bold;
        color: red;
    }
    
    /*关闭按钮*/
    .modal-footer .btn-info{
        cursor: pointer;
        width: 70px;
        height: 30px;
        border-radius: 5px;
        text-align: center;
        color: #fff;
        background:	#008B8B;
    
        position: absolute;
        left: 30%;
    }
    .modal-footer .btn-info:hover{
        font-weight: bold;
        background:	#2F4F4F;
    }
    /*再玩一次*/
    .modal-footer  .refreshBtn{
        background:	 #8B0000;
    }
    .modal-footer .refreshBtn:hover{
        font-weight: bold;
        background:	#CD5C5C;
    }
    

    game.js

      var time = 0,score = 0,prev = 1;
      var cylinders = document.getElementsByClassName('cylinder');
      var chess = document.getElementById('chess');
    
      var arrLeft = [10,20,30,50];
      var arrTop = [210,290];
    
      //----------初始化------------------------
      function init(){
        draw();
        BindEvent();
      };
    
    
      // ---------生成地图------------------------
      function draw(){
        var str = '';
        for(var n = 0; n < 7; n++){
    
          /*创建圆柱体
          * cylinder-----圆柱体
          * top------圆柱体顶部
          * front----圆柱体前面
          * bottom---圆柱体底部
           */
          str +="<div class='cylinder'><div class='top'></div><div class='front'></div><div class='bottom'></div></div >"
        }
        //将其插入到内容中
        $('.content')[0].innerHTML = str;
    
        //--------------随机确定圆柱体的位置---------------------------
        for(var m = 0; m < 7; m++){
          var Left = arrLeft[Math.floor(Math.random() *arrLeft.length)];
          var Top = arrTop[Math.floor(Math.random() * arrTop.length)];
          cylinders[m].style.marginLeft = Left + 'px';
          cylinders[m].style.marginTop = Top + 'px';
        }
        //----------确定每次棋子的随机位置-------------------
        chess.style.marginTop = cylinders[0].offsetTop - 25 + 'px';
        chess.style.marginLeft = cylinders[0].offsetLeft + 13 + 'px';
      }
    
      //------------按钮事件--------------------------------
      function BindEvent(){
       var play=document.getElementById('play');
        //按钮按下时
        play.onmousedown = function () {
          var timer = setInterval(function () {
            time++;
          }, 100);
    
       // 按钮抬起时
         play.onmouseup = function () {
            //清除定时器
            clearInterval(timer);
            //当按钮抬起时,跳棋执行动画操作
            chess.classList.add('move');
    
            chess.style.animationDuration = time * 0.1 + 's';
            chess.style.transitionDuration = time * 0.1 + 's';
    
            //根据不同情况更改跳棋的位置
            if (cylinders[prev - 1].offsetTop > cylinders[prev].offsetTop) {
              var dx = setTran(prev - 1,prev);
              chess.style.marginLeft = chess.offsetLeft + time * 15 + 'px';
              chess.style.marginTop = chess.offsetTop + time * 15 * dx + 'px';
            } else if (cylinders[prev - 1].offsetTop < cylinders[prev].offsetTop) {
              var dy = setTran(prev - 1, prev);
              chess.style.marginLeft = chess.offsetLeft + time * 15 + 'px';
              chess.style.marginTop = chess.offsetTop + time * 15 * dy + 'px';
            }else if(cylinders[prev - 1].offsetTop == cylinders[prev].offsetTop){
              chess.style.marginTop = chess.offsetTop + 'px';
              chess.style.marginLeft = chess.offsetLeft + time * 15 + 'px';
            }
    
            chess.addEventListener(getTransition(), function () {
              chess.classList.remove('move');
              time = 0;
              judeg();
              chess.removeEventListener(getTransition(), arguments.callee, false);
            }, false);
          }
        }
      }
    
      // top和left移动的比例
      function setTran(prev,next) {
        var d_Top = cylinders[prev].offsetTop - cylinders[next].offsetTop;
        var d_Left = cylinders[prev].offsetLeft - cylinders[next].offsetLeft;
        return d_Top/d_Left;
      }
    
      // ----------判断动画是否结束--------------------------
      function getTransition() {
        var t;
        var transitions = {
          'transition': 'transitionend',
          'OTransition': 'oTransitionEnd',
          'MozTransition': 'transitionend',
          'WebkitTransition': 'webkitTransitionEnd'
        };
        for (t in transitions) {
          if (chess.style[t] !== undefined) {
            return transitions[t];
          }
        }
      };
    
      // ---------判断跳棋是否跳出边界-----------------------
      function judeg() {
        for(; prev < cylinders.length;){
          // 判断条件
          var e_Left = chess.offsetLeft > cylinders[prev].offsetLeft -20 && chess.offsetLeft < cylinders[prev].offsetLeft + 90;
          var e_Top = chess.offsetTop + 48 > cylinders[prev].offsetTop && chess.offsetTop + 48 < cylinders[prev].offsetTop + 35;
          if( e_Left && e_Top ){
            score++;
            if(prev >= cylinders.length){
              prev = 1;
            }else{
              prev++;
            }
            break;
          }else{
            // alert('you lost');
            $('.modal-dialog').css('display','block');
            break;
          }
        }
      }
      init();
    

    引用

    原主代码
    skr~

    展开全文
  • 消消乐小游戏前端

    2018-09-28 11:54:17
    消消乐小游戏前端,不含后端,流行彩虹岛消消乐游戏,自己研究
  • 200个WEB前端小游戏

    2020-06-25 19:34:53
    里面有二百个用h5+css+js开发的小游戏,PC端和手机端都有,有源码。定价比较便宜,欢迎大家以任何方式来下载
  • 其实很多常见的小游戏都是纯前端开发出来的,比如曾经风靡的2048、别踩白块啊等等,简单有趣,对于初学者来说,这些小游戏是非常不错的练手项目。 实验楼上很多前端教程,这里整理7个前端开发的小游戏教程,希望对你...

    其实很多常见的小游戏都是纯前端开发出来的,比如曾经风靡的2048、别踩白块啊等等,简单有趣,对于初学者来说,这些小游戏是非常不错的练手项目。

    实验楼上很多前端教程,这里整理7个前端开发的小游戏教程,希望对你学习前端有所帮助~

    1.网页版2048

    项目通过搭建一个网页版的 2048 ,让大家学习 web 应用程序的开发流程、以及如何让应用在移动端自适应处理以应对各种大小的屏幕,布局和初始化,编写游戏的逻辑、实现让它能移动,判定结果。

    效果图:

    效果图

    是不是和我们玩的2048一模一样呀,O(∩_∩)O~

    2.HTML5实现拼图游戏

    项目使用HTML5和css3实现的九宫格拼图游戏。只要两步既可以实现炫酷的效果和动画。详细的讲解,让你清楚地知道每一句代码的作用。

    效果图:

    效果图

    自己开发完之后还可以玩玩,告诉你,你可以开发它,但是玩可不一定行哦~

    3.网页版扫雷

    项目实现一个Web版本的扫雷游戏,通过该项目将学习并实践 JavaScript 和 CSS 等基本的Web开发知识。

    效果图:

    效果图

    看着就有想玩的冲动啊,有木有~

    4.网页版-别踩白块游戏

    项目用最基础的html,css,以及原生的JavaScript实现一个网页版本的“别踩白块”游戏。

    效果图:

    效果图

    做完后可以试着玩玩,看看速度如何,太快或者太慢都可以随时调整。

    5.HTML5实现抓怪物小游戏

    项目利用 HTML5 的 Canvas 特性,结合 js 来开发一个抓小怪物的小游戏。从中我们可以学习到如何用 HTML5 来构建一个 WebApp。

    效果图:

    效果图

    6.JavaScript打地鼠游戏

    项目为打地鼠,是大家耳熟能详的一款经典的小游戏,用前端技术来实现这个游戏,简单有趣。

    效果图:

    效果图

    7.JavaScript按键控制坦克移动

    项目使用javascript按键控制坦克在网页上移动,通过使用很简单的,清晰明了的代码使坦克在页面上平滑的移动,通过学习,可以掌握javascript的按键操作,从而让页面更好的与用户互动。

    效果图:

    效果图

    看效果图很简单,但是只要稍微发挥你的想象力,把坦克改成其他的物体,就可以变成其他的小游戏了,比如加一个迷宫,就是走出迷宫游戏了。

    最后:

    转载于:https://www.cnblogs.com/shiyanlou/p/7908568.html

    展开全文
  • 一个有趣的前端小项目----新手练手小游戏

    万次阅读 多人点赞 2018-05-24 14:28:17
    对于学前端伙伴们来说,最难的应该就是Javascript的理解与运用了,很重要,很有用,也很难真的掌握,但是对于这种难啃的骨头,多去啃一啃的话还是很有意思的~~不好意思,一不小心暴露了我吃货的本质,今天给大家...

        对于学前端的小伙伴们来说,最难的应该就是Javascript的理解与运用了,很重要,很有用,也很难真的掌握,但是对于这种难啃的骨头,多去啃一啃的话还是很有意思的~~不好意思,一不小心暴露了我吃货的本质,今天给大家分享的是一个小游戏,之前有在github上看见有大神做过一个类似的游戏,然后自己就花了一天的时间写了这个小游戏,废话不多说,先给大家看一下这个游戏的效果图:


    1、大家看到的实在点击开始游戏后,会随机生成不同的水果,这个是将图片放在一个数组里面的,然后获取随机的图片就行

    2、在点击图片之后,图片会左右晃动一下,然后变成衰的表情,这个不设置的话也挺好的

    3、接下来给大家展示一下未点中的效果:


    4、当未点击中图片的时候,图片会掉落下去,分数会扣一分,屏幕会震动一下,这个效果是参考了大神的,毕竟这个游戏很单一,这个效果会比较明显。

    5、接下来给大家介绍一个封装好的js-----简易运动框架,这个很适合用来做这些简单的运动动画,这个小游戏就是我直接在网上找到的这个框架,然后直接调用的,封装不易,膜拜大佬,请大佬收下我的膝盖~


    6、代码部分:

    6.1大神做的:(此处表白大神死循环),但这个小游戏只用到了前三个封装的,hide和out没有用上

    由于封装格式有问题,不能直接放上来,我就截图给大家看,大家可以看一下这个js下载网址:网址http://www.mamicode.com/info-detail-1612909.html 





    6.2 看我写的,先叉会儿腰,可把我牛逼坏了

    <!doctype html>
    <html lang="en">
    
    <head>
    	<meta charset="UTF-8">
    	<meta name="Generator" content="EditPlus®">
    	<meta name="Author" content="">
    	<meta name="Keywords" content="">
    	<meta name="Description" content="">
    	<title>收获水果大赛</title>
    	<style>
    		* {
    			margin: 0px;
    			padding: 0px;
    		}
    
    		body {
    			background: pink;
    		
    		}
    
    		#box {
    			width: 920px;
    			height: 600px;
    			margin: 0px auto;
    			position: relative;
    			color: #f2f2f2;
    		}
    
    		#top {
    			width: 100%;
    			height: 145px;
    		}
    
    		#top .title {
    			width: 100%;
    			height: 50px;
    			text-align: center;
    			line-height: 70px;
    			font-size: 25px;
    			font-weight: 900;
    		}
    
    		#top .sm {
    			width: 100%;
    			height: 50px;
    			text-align: center;
    			line-height: 50px;
    		}
    
    		#top .but {
    			width: 140px;
    			height: 40px;
    			outline: 0;
    			border: 1px solid #241d13;
    			background: #a73f2d;
    			color: #fff;
    			border-radius: 5px;
    			box-shadow: 0 0 15px #7a2a1d;
    			font-size: 16px;
    			margin-left: 390px;
    			cursor: pointer;
    		}
    
    		#middle {
    			width: 100%;
    			height: 455px;
    			background: #fff;
    			position: absolute;
    			left: 0px;
    			top: 165px;
    			color: #333;
    		}
    
    		#middle .left {
    			width: 125px;
    			height: 55px;
    			float: left;
    			padding: 10px;
    		}
    
    		#middle .left p {
    			width: 145px;
    			line-height: 25px;
    		}
    
    		#middle .right {
    			width: 771px;
    			height: 455px;
    			border-left: 2px solid #333;
    			float: left;
    			position: relative;
    			overflow: hidden;
    		}
    
    		#middle .right img {
    			width: 34px;
    			height: 34px;
    			cursor: pointer;
    			position: absolute;
    			left: 0px;
    			top: 0px;
    			display: none;
    		}
    		#middle p{
    			font-size: 20px;
    		}
    		#middle span{
    			color:#f10215;
    		}
    	</style>
    	<script src="index.js"></script>
    	<script>
    		$(function () {
    			var input = $('top').getElementsByTagName('input')[0];  //开始游戏模块
    			var Span = $('middle').getElementsByTagName('span');    //左边计分模块
    			var Div = $('middle').getElementsByTagName('div')[1];   //右边大模块
    			var Img = $('middle').getElementsByTagName('img')[0];   //掉下来的图片
    			var arrImg = ['img/1.png', 'img/2.png', 'img/3.png', 'img/4.png', 'img/5.png', 'img/6.png', 'img/7.png','img/8.png', 'img/9.png', 'img/10.png'];
    			var sdNum = 1; //图片运行速度
    			var onOff = true; //假设一个开关,后面要用来判断
    			for (var i = 0; i < Span.length; i++) {
    				Span[i].num = 0; //一开始就把所有的得分和失分都归0
    			}
    			//给开始游戏注册一个点击事件
    			input.onclick = function () {
    				this.value = '游戏进行中…'; //点击后,游戏开始变成游戏进行中……
    				this.disabled = true; //游戏进行中的时候让开始按钮无法再次点击
    				var width = parseInt(getStyle(Div, 'width')); //获取图片活动的宽度
    				var height = parseInt(getStyle(Div, 'height')) - 50; //获取图片活动的高度,并且减去本身的高度
    				Img.style.display = 'block'; //让水果能够显示出来
    				auto(); //开始执行代码
    				function auto() {
    					onOff = true; //假设为true就表示水果落到最下面时会被扣分
    					var n = Math.round(Math.random() * (arrImg.length - 1)); //获取数组里面随机的水果
    					var positions = Math.round(Math.random() * (width - 50)); //随机获取水果的位置
    					Img.src = arrImg[n]; //赋值
    					Img.style.left = positions + 'px'; //赋值
    					doMove(Img, 'top', sdNum, height, function () { //落下去的时候
    						if (onOff == true) { //假设为true就表示水果落到最下面时会扣分
    							shake($('middle'), 'top', function () { //掉下去后就会开始抖动窗口
    								Img.style.top = '0px'; //让水果回到0px的位置
    								Span[1].num++; //失分上面+1
    								Span[1].innerHTML = Span[1].num; //显示在失分上面
    								if (Span[1].num == 10) { //如果失去分大于了10
    									//Img.style.display = 'none';	//如果游戏结束,将水果清除
    									input.value = '开始游戏'; //可以重新点击开始游戏
    									input.disabled = false; //让开始游戏显示出来
    									alert('游戏结束,你共获得' + Span[0].num + '分'); //弹出游戏结束,并且显示得分
    									for (var i = 0; i < Span.length; i++) {
    										Span[i].num = 0; //得分和失分归零
    									}
    								} else {
    									auto();
    								}
    							});
    						}
    
    					});
    				}
    
    				Img.onclick = function () {
    					onOff = false; //如果为false,哪怕水果掉在最下面,也不会获得失分
    					Img.src = 'img/qq.png'; //点击最后,水果变成哭的样子
    
    					//这是一个Bug,直线增长会造成用户的体验感差,修改如下,引入对数函数
    					// sdNum = sdNum + 0.2; //每一次点击,水果下降的速度增加0,
    					// console.log(sdNum);
    
    					shake(Img, 'left', function () { //点击之后开始抖
    						Img.style.top = '0px'; //然后水果恢复到0px的位置
    						Span[0].num++; //获得得分+1
    						Span[0].innerHTML = Span[0].num; //获得得分一枚
    						
    						sdNum=sdNum+0.2*Math.LOG10E;
    						console.log(sdNum);
    						auto(); //继续执行代码
    					});
    				}
    			}
    
    		})
    		
    	</script>
    </head>
    
    <body>
    	<div id="box">
    		<div id="top">
    			<p class="title">你的鼠标有多快?</p>
    			<p class="sm">游戏说明:点击“开始游戏”,随机掉下水果,点中它,千万别让他掉下来!!</p>
    			<input class="but" type="button" value="开始游戏">
    		</div>
    		<div id="middle">
    			<div class="left">
    				<p>得分:
    					<span>0</span>分</p>
    				<p>失分:
    					<span>0</span>分</p>
    			</div>
    			<!-- 禁止选取 -->
    			<div class="right" onselectstart="return false">
    			<!-- 禁止鼠标在网页上拖动 -->
    				<img οndragstart="return false" />
    				
    			</div>
    		</div>
    	</div>
    </body>
    
    </html>

    6.3总结:

    a.大家对于封装的函数如果想深入了解的话,可以参考该网址http://www.mamicode.com/info-detail-1612909.html 

    b.我在写这个游戏的时候遇到的bug,这个对于一个前端来说,每个bug都将是我们走向人生巅峰的垫脚石,好了,废话不多说,

    //这是一个Bug,直线增长会造成用户的体验感差,修改如下,引入对数函数
    		 sdNum = sdNum + 0.2; //每一次点击,水果下降的速度增加0.2,
    	         console.log(sdNum);

    在最初,我设想的是让每张图片掉落后速度就增加0.2s,但是对于一个理科生来说,理想很丰满,现实很骨感哈~~~,这个的速度是呈直线增加的,我们会在慢速的时候突然加速,也就是我们常吐槽的,用户体验极差,在做了一系列深刻的反省之后,我跟我的数学老师说:我已经把知识全还给你了,你什么时候把学费还给我?数学老师反手就给了我一个对数函数,然后我的游戏就瞬间得到了升华,哈哈哈哈哈哈哈哈哈哈,都让开,我要膨胀了~~~~

    	
    						sdNum=sdNum+0.2*Math.LOG10E;
    						console.log(sdNum);
    最后的最后,希望大家能够一直秉持着:“js虐我千百遍,我待js如初恋”的初心,走上前端‘一去不复返’的康庄大道~~~·

    展开全文
  • 12.3 游戏功能实现 实现单元格移动动画效果移动单元格 继续在Game2048函数中编写以下代码在单元格移动后执行一些相关操作 board对象中编写onMove)和onMoveComplete)事件方法与页面进行联动 在onMove)方法体中调用...
  • 前端40款小游戏源码

    2020-12-03 13:40:43
    40款小游戏各种小例子,切水果,2048,连连看,HTML+CSS+JavaScript练习小例子,应有尽有下载解压后即可运行,完整源代码。
  • 最近打算用HTML、CSS和JS纯手撸一个个人网页,提升一下自己对CSS的熟悉程度。 CodePen上面的大牛做的东西真的好好看...参考了一下其它的js小游戏。思想是类似的。 设计Game Initial->ScoreBoard js的类思想!!
  • 打地鼠的简陋版本的小游戏,希望对大家有所帮助!!
  • 这是一个拥有智能AI对手的井字棋小游戏,使用JavaScript语音进行开发,是一个前端小游戏,打开之后运行井字棋.html即可在网页上与AI进行井字棋游戏对战。也可以参考...
  • 飞机大战小游戏,直接打开index.html,单击即可开始游戏。此游戏为HTML+JavaScript组合而制成。
  • JavaScript前端开发教程 ...第十二章 网页版2048小游戏 2048游戏分析 设计游戏界面 控制游戏数值 实现单元格移动 设置游戏分数 判断胜利和失败 重新开始游戏 链接:第十二章 网页版2048小游戏 PPT???? ...
  • web前端实战小游戏两则(附源码)

    千次阅读 多人点赞 2020-04-20 23:39:13
    前端项目实战?不如从小游戏开始!
  • (给前端瓶子君加星标,提升前端技能.)作者:红领巾小莫https://juejin.cn/post/6890206996008534030简介前两天编在B站看到一个AE MG动画,动画...
  • 游戏查看源码和素材下载博主学习前端一年多一点,还是个新手,不过勇于尝试,才能不断进步,如果代码质量不好,欢迎提意见,下面开始讲解,首先贴张游戏界面图:游戏使用canvas画图制作,分析游戏确定有这几个元素:...
  • 前端开发2048小游戏,纯html+css+js,欢迎大家阅读交流,如果代码有什么不足,希望大家指正
  • 网页版扫雷小游戏

    千次阅读 2019-05-07 11:28:30
    扫雷小游戏(原生js) 实验介绍 实验简介 先上一张效果图 源代码获取(非本文章中代码) $ git clone https://github.com/shiyanlou/js-minesweeper 学习网页 实验楼-网页版扫雷 实现原理 扫雷游戏的规则: ...
  • HTML5五子棋网页小游戏代码是一款基于html5+css3绘制的五子棋游戏,可随意调整棋盘大小。
  • Web前端期末大作业---HTML+CSS+JS实现实现捉虫小游戏

    千次阅读 多人点赞 2021-10-25 12:22:43
    目录 网页截图展示:文末获取源码 项目源码结构:图片和js以及css...有密集恐惧症的别玩哟、游戏永远不会停止 一直玩 项目源码结构:图片和js以及css等基础文件代码实现 主要源码展示: index.html:引...
  • 前端游戏框架哪个好

    万次阅读 2018-08-14 00:44:08
    随着浏览器功能越来越强大,在网页端实现各种小游戏已经是家常便饭。微信小游戏出现后,游戏(特别是小型游戏)的开发已经进入了一个相当火爆的时期。那么作为一个普通的前端开发者,如何取选择一个合适的游戏开发...
  • 转 移动前端系列——websocket实时互动小游戏 原本是想在写这文章之前,给大家来个二维码,让大家来感受一下我那个狂拽酷炫叼炸天的实时互动小游戏,无奈一直没有找到一台足以hold住其气场的服务器。所以,此处可能...
  • 基于html5的js飞机大战程序,对于学习js、jq的新手有帮助
  • HTML5网页版五子棋小游戏通过原生js和canvas实现五子棋小游戏,可以试下左右手互搏。
  • Unity导出的WebGL、网页前端、服务端以及硬件四级交互结构的实现(简单3d建模网页端物联网) 介绍博客地址 https://blog.csdn.net/Koweico/article/details/111195285
  • 通过一个简单的算法,来实现AI智能对弈的五子棋小游戏AI难点解析赢法数组赢法的统计数组判断胜负计算机的落子规则代码实现赢法数组赢法种类的索引横线赢法竖线赢法横线赢法斜线赢法反斜线赢法赢法的统计数组定义函数...
  • Chrome恐龙游戏前端修改代码【含原理和代码】

    万次阅读 多人点赞 2020-01-12 23:44:52
    Chrome恐龙前端修改代码分享 Chrome恐龙是什么? 在Chrome(谷歌浏览器)断网之后访问在线页面,如a.com会出现以下界面,叫做Chrome恐龙游戏.这是一个隐藏的彩蛋。除了断网以外,直接在Chrome里访问网站chrome:/...
  • 游戏涉及到的文件: 实现的html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,579
精华内容 7,831
关键字:

网页前端小游戏