zoukankan      html  css  js  c++  java
  • 使用jquery类库编写的强手棋小游戏


    用js写的小游戏,使用了jquery类库./Files/xhan/game.rar
    game.js
    $(
      
    function()
      
    {
          initTable();
    //初始化表格颜色
          window.playerA=new Player(0,"A","playerA");//初始化玩家A的初始位置,名字,和,样式信息
          window.playerB=new Player(0,"B","playerB");//初始化玩家B的初始位置,名字,和,样式信息
          window.currentPlayer=  window.playerA;//设定A为初始当前的玩家
          showPlayerMessage();//在界面上显示玩家的信息
          $("#rollButton").click(rollButton_click);//绑定投掷骰子按钮的click事件处理函数
      }

     );

    function rollButton_click()
    {
        
    //如果当前用户是A,玩家A开始掷骰子。然后将当前玩家设为B
        if(window.currentPlayer==window.playerA)
        
    {
            doRoll(window.currentPlayer);
            window.currentPlayer
    = window.playerB;
            
    return;
        }

         
    //如果当前用户是B,玩家B开始掷骰子。然后将当前玩家设为A
        if(window.currentPlayer==window.playerB)
        
    {
            doRoll(window.currentPlayer);
            window.currentPlayer
    = window.playerA;
            
    return;
        }

    }

    function doRoll(player)
    {
        
    var startPanel=player.currentPanel;//获取开始动画的面板编号
        var diceNumber=rollDice();//获取投掷骰子的点数
        var endPanel=startPanel+diceNumber;//计算动画结束的面板标号
        player.currentPanel=endPanel;//更新玩家的当前点数
        
        showDiceNumber(diceNumber);
    //在页面显示骰子点数
        showPlayerMessage();//更新页面玩家的信息
        goNextPanel(startPanel,endPanel,null,player);//开始动画
    }

    //在页面上显示玩家前进后退动画函数
    function goNextPanel(startPanel,endPanel,hoveredPanel,player)
    {

        
    //如果上一个经过的面板编号不空就清除前面的样式
        if(hoveredPanel!=null)
        
    {
            $(
    "#"+hoveredPanel).removeClass(player.cssClass);
            $(
    "#"+hoveredPanel).removeClass("bothPlayer");
        }

        
    //设定当前经过的面板的样式
        $("#"+startPanel).addClass(player.cssClass);
        
    //如何是前进的话,获取下一个要经过面板的编号
        if(startPanel<endPanel)
        
    {
            nextStartPanel
    =startPanel+1;
        }

        
    else if(startPanel>endPanel)//如果是要后退的话获取下一个要经过面板的编号
        {
            nextStartPanel
    =startPanel-1;
        }

        
    else//已经走到结束面板
        {
            trap(endPanel,player);
    //应用陷阱规则
            reward(endPanel,player);//应用奖励规则
            if(isABSame())//如果a,b同一面板设定面板样式为bothPlayer
            {
                $(
    "#"+endPanel).addClass("bothPlayer");
            }

            showPlayerMessage();
    //显示用户信息
            return;
        }

        
    if(isWin(startPanel))//如果走到终点结束动画提示成功!
        {
            alert(player.name
    +" ,you win!");
            clearTimeout(t);
    //清除定时触发器
            return;
        }

        
    //在指定毫秒数后递归调用动画函数向下一个面板移动
        t=window.setTimeout(function(){goNextPanel(nextStartPanel,endPanel,startPanel,player)},500);
    }

    //显示玩家信息函数
    function showPlayerMessage()
    {
        $(
    "#playerA").text("A当前点数:"+window.playerA.currentPanel);
        $(
    "#playerB").text("B当前点数:"+window.playerB.currentPanel);
        $(
    "#currentPlayer").text("当前玩家:"+window.currentPlayer.name);
    }

    //设定陷阱规则函数
    function trap(panel,player)
    {
        
    if(panel==8)
        
    {
            doTrap(panel,player,
    2);
        }

        
    if(panel==4)
        
    {
            doTrap(panel,player,
    1);
        }

    }

    //运行陷阱函数
    function doTrap(panel,player,count)
    {
            alert(
    "哈哈,被炸退"+count+"格!");
            
    var endPanel=panel-count;
            player.currentPanel
    =endPanel;
            
            showPlayerMessage();
            goNextPanel(panel,endPanel,
    null,player);
    }

    //设定奖励规则函数
    function reward(panel,player)
    {
        
    if(panel==18)
        
    {
            doReward(panel,player,
    3);
        }

        
    if(panel==30)
        
    {
            doReward(panel,player,
    4);
        }

    }

    //运行奖励函数
    function doReward(panel,player,count)
    {
            alert(
    "恭喜,前进"+count+"格!");
            
    var endPanel=panel+count;
            player.currentPanel
    =endPanel;
            
            showPlayerMessage();
            goNextPanel(panel,endPanel,
    null,player);
            
    }

    //判断是否玩家已经赢了
    function isWin(panel)
    {
        
    if(panel==48)
        
    {
            
    return true;
        }

        
    else
        
    {
            
    return false;
        }

    }

    //显示投掷骰子点数
    function showDiceNumber(number)
    {
        $(
    "#diceNumber").text(number);
    }

    //判断A,B是否在同一面板
    function isABSame()
    {
            
    if(window.playerA.currentPanel==window.playerB.currentPanel)
            
    {
                
    return true;
            }

            
    else
            
    {
                
    return false;
            }

    }

    //玩家构造函数。每个玩家对象包含当前面板属性,名字,和样式属性
    function Player(startPanel,name,cssClass)
    {
        
    this.currentPanel=startPanel;
        
    this.name=name;
        
    this.cssClass=cssClass;
    }

    //获取骰子的随机点数函数
    function rollDice()
    {
        
    return parseInt(Math.random()*6+1);
    }

    //获取随机颜色值的字符串
    function getRandomColor()
    {
        
    var str = "0123456789abcdef";
        
    var colorString = "#";
        
    for(j=0;j<6;j++)
        
    {
            colorString 
    = colorString+ str.charAt(Math.random()*str.length);
        }
     
        
    return colorString;
    }

    //初始化表格颜色
    function initTable()
    {
       
    //遍历所有td(面板)将每个单元格的背景色设定一个随机的颜色
        $("td").each(
            
    function()
            
    {
                $(
    this).css("background-color",getRandomColor());
            }

        );
    }


  • 相关阅读:
    系统维护相关问题
    Python环境维护
    哈希表解决字符串问题
    论文笔记二:《A Tutoral on Spectral Clustering》
    论文笔记之哈希学习比较--《Supervised Hashing with Kernels》《Towards Optimal Binary Code Learning via Ordinal Embedding》《Top Rank Supervised Binary Coding for Visual Search》
    Java中String、StringBuffer、StringBuilder的比较与源 代码分析
    浙大pat1040 Longest Symmetric String(25 分)
    浙大pat1039 Course List for Student(25 分)
    浙大pat---1036 Boys vs Girls (25)
    百炼oj-4151:电影节
  • 原文地址:https://www.cnblogs.com/xhan/p/1206255.html
Copyright © 2011-2022 走看看