• 使用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());
            }

        );
    }


  • 相关阅读:
    php基础之简单运算
    选择平淡
    php基础之控制结构
    关于三元运算符的初步应用及理解
    VS2015 遇到异常。这可能是由某个扩展导致的
    C#中如何去除窗体默认的关闭按钮
    (转载)SQL基础--> 约束(CONSTRAINT)
    SQL Server安装后设置SQL Server验证登录
    附加数据库 对于 ""失败,无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever
    SQL Server数据库操作(二)
  • 原文地址:https://www.cnblogs.com/xhan/p/1206255.html
Copyright © 2020-2023  润新知