Exemplo n.º 1
0
        private void resetBoardForRematch()
        {
            hideAllImages();
            m_FirstPlayer.ClearPoints();
            m_SecondPlayer.ClearPoints();
            m_CurrentPlayer = m_SecondPlayer;
            m_CurrentPlayer = m_CurrentPlayer.ChangePlayer(m_FirstPlayer, m_SecondPlayer);
            if (m_ComputerMemory != null)
            {
                m_ComputerMemory = new ComputerAI();
            }

            m_GameBoard = new MemoryGameBoard(m_NumberOfRows, m_NumberOfColumns);
            m_GameBoard.FillBoard();
            for (int i = 0; i < m_NumberOfRows; i++)
            {
                for (int j = 0; j < m_NumberOfColumns; j++)
                {
                    m_GameBoard.BoardMatrix[i, j].CardVisabilityChanged += card_CardVisabilityChanged;
                    m_CardsButtons[i, j].LogicMemoryGameCardReference    = m_GameBoard.BoardMatrix[i, j];
                    m_CardsButtons[i, j].RowNumber    = i;
                    m_CardsButtons[i, j].ColumnNumber = j;
                    m_CardsButtons[i, j].UpdateImageURL();
                }
            }

            this.Update();
        }
Exemplo n.º 2
0
 void Start()
 {
     sliderHandler = GameObject.Find("SliderHandler").GetComponent <SliderHandler>();
     dialogHandler = GameObject.Find("DialogBorder").GetComponent <DialogHandler>();
     computerAI    = GameObject.Find("ComputerAI").GetComponent <ComputerAI>();
     diceHandler   = GameObject.Find("DicePanel").GetComponent <DiceHandler>();
     buttonHandler = GameObject.Find("ButtonHandler").GetComponent <ButtonHandler>();
 }
Exemplo n.º 3
0
        // 战斗结束
        public override void BattleEnd(string winner)
        {
            if (ComputerAI != null)
            {
                ComputerAI.Destroy();
            }

            base.BattleEnd(winner);

            // 记录胜负场次
            UserInfo winnerInfo = null;
            UserInfo loserInfo  = null;

            if (winner != null /* null 是平局情况,算两人都输 */)
            {
                if (winner == UsrsID[1])
                {
                    winnerInfo = UsrsInfo[1];
                    loserInfo  = UsrsInfo[2];
                }
                else if (winner == UsrsID[2])
                {
                    winnerInfo = UsrsInfo[2];
                    loserInfo  = UsrsInfo[1];
                }

                winnerInfo.WinCount++;
                loserInfo.LoseCount++;
            }
            else
            {
                winnerInfo = UsrsInfo[1];
                loserInfo  = UsrsInfo[2];
            }

            // 发放战斗奖励
            foreach (var s in ss)
            {
                if (s.ID != UsrsID[1] && s.ID != UsrsID[2])
                {
                    continue;
                }

                s.Usr.Update();
            }

            // 广播结果
            Broadcast("BattleEnd", (buff) =>
            {
                buff.Write(winner);
            });

            // 保存录像
            var replayID = SaveCurrentBattleReplay(UsrsID[1], UsrsID[2], UsrsInfo[1].Name, UsrsInfo[2].Name, FrameNo, IsPVP, currentBattleMsgHistory).ID;

            winnerInfo.AddMyReplay(replayID);
            loserInfo.AddMyReplay(replayID);
        }
Exemplo n.º 4
0
 private void handleComputerTurn()
 {
     if (m_OthelloGame.CurrentPlayerTurn.PlayerType.Equals(Player.ePlayerTypes.Computer))
     {
         OthelloLogic.Point computerBestMove;
         computerBestMove = ComputerAI.FindBestMoveForComputer(m_OthelloGame, m_OthelloGame.CurrentPlayerTurn, m_OthelloGame.CurrentPlayerTurn.PossibilitiesCellsForNextTurn);
         Button buttonClickedByComputer = (Button)m_BoardControls[computerBestMove.Row, computerBestMove.Column];
         System.Threading.Thread.Sleep(650);
         boardButton_Clicked(buttonClickedByComputer, EventArgs.Empty);
     }
 }
Exemplo n.º 5
0
 private void InitializeAttributes()
 {
     gameConfig            = GetNodeOrNull <GameSettings>("/root/GameSettings").GameConfig;
     gameData              = new GameData(gameConfig);
     computerAI            = new ComputerAI(gameConfig, gameData);
     gameLevelLabel        = GetNodeOrNull <Label>(gameLevelLabelNodePath);
     whoStartsLabel        = GetNodeOrNull <Label>(whoStartsLabelNodePath);
     messageLabel          = GetNodeOrNull <Label>(messageLabelNodePath);
     playerMarkTextureRect = GetNodeOrNull <TextureRect>(
         playerMarkTextureRectNodePath);
     computerMarkTextureRect = GetNodeOrNull <TextureRect>(
         computerMarkTextureRectNodePath);
 }
Exemplo n.º 6
0
 internal User(string i_Name, bool i_IsHuman, int i_MaxKeyToRemebers)
 {
     m_IsHuman = i_IsHuman;
     if (i_IsHuman)
     {
         m_Name = i_Name;
         m_AI   = null;
     }
     else
     {
         m_Name = "COMPUTER";
         m_AI   = new ComputerAI(i_MaxKeyToRemebers);
     }
 }
Exemplo n.º 7
0
        public void OnTimeElapsed(int te)
        {
            if (Finished)
            {
                return;
            }

            timeElapsed += te;
            if (timeElapsed >= FrameInterval)
            {
                timeElapsed -= FrameInterval;

                // MoveOneStep 和发送 "FrameMoveForward" 消息之间不可插入任何其它逻辑,否则
                // 插入在中间的逻辑,和客户端数据会差一帧
                try
                {
                    MoveOneStep();
                }
                catch (Exception ex)
                {
                    Broadcast("Crash", (buff) => { buff.Write(ex.Message); });
                    Broadcast("BattleEnd", (buff) => { buff.Write(UsrsID[1]); });
                    SaveCurrentBattleReplay(UsrsID[1], UsrsID[2], UsrsInfo[1].Name, UsrsInfo[2].Name, FrameNo, IsPVP, currentBattleMsgHistory, true);
                    Finished = true;
                }

                Broadcast("FF", null); // (buff) => { buff.Write(FrameNo); });

                if (Finished)          // 可能已经结束了
                {
                    return;
                }

                if (ComputerAI != null)
                {
                    ComputerAI.OnTimeElapsed(te);
                }
            }
        }
Exemplo n.º 8
0
        internal void UpdateGameSettings(string i_BoardSize, Player i_FirstPlayer, Player i_SecondPlayer, bool i_IsAgaintComputer)
        {
            m_NumberOfRows                     = i_BoardSize[0] - '0';
            m_NumberOfColumns                  = i_BoardSize[2] - '0';
            m_FirstPlayer                      = i_FirstPlayer;
            m_FirstPlayer.PlayerChanged       += player_CurrentPlayerChanged;
            m_FirstPlayer.PlayerScoreChanged  += player_PlayerScoreIncreased;
            m_SecondPlayer                     = i_SecondPlayer;
            m_SecondPlayer.PlayerChanged      += player_CurrentPlayerChanged;
            m_SecondPlayer.PlayerScoreChanged += player_PlayerScoreIncreased;
            m_CurrentPlayer                    = i_FirstPlayer;
            m_GameManager                      = new PlayMemoryGame();
            m_GameBoard         = new MemoryGameBoard(i_BoardSize[0] - '0', i_BoardSize[2] - '0');
            m_CardsButtons      = new MemoryGameCardButtuon[i_BoardSize[0] - '0', i_BoardSize[2] - '0'];
            m_IsAgainstComputer = i_IsAgaintComputer;
            if (m_IsAgainstComputer == true)
            {
                m_ComputerMemory = new ComputerAI();
            }

            initializeComponent();
        }
Exemplo n.º 9
0
    void Start()
    {
        player  = FindObjectOfType <Player>();
        machine = FindObjectOfType <ComputerAI>();

        fight = GameObject.Find("Fight").GetComponent <RectTransform>();

        leftBar  = GameObject.Find("LifeBar_left").GetComponent <Lifebar>();
        rightBar = GameObject.Find("LifeBar_right").GetComponent <Lifebar>();

        koText = GameObject.Find("KO").GetComponent <RectTransform>();
        koText.anchoredPosition = Vector2.up * 10000;

        win = GameObject.Find("KO/win").GetComponent <Text>();

        ball = FindObjectOfType <Ball>();

        ball.OutLeft  = AddDamageToLeft;
        ball.OutRight = AddDamageToRight;

        StartCoroutine(Starting());
        ball.FreezeBall();
    }
Exemplo n.º 10
0
        // 战斗开始
        public override void BattleBegin(int randomSeed)
        {
            base.BattleBegin(randomSeed);
            timeElapsed = 0;
            currentBattleMsgHistory.Clear();
            Broadcast("BattleBegin", (buff) =>
            {
                buff.Write(randomSeed);
                buff.Write(Lv.LevelID);
                buff.Write(WinnerAward);
                buff.Write(LoserAward);
                buff.Write(WinnerAwardUnits);
                buff.Write(ID);
                buff.Write(UsrsID);
                buff.Write(UsrsInfo);
                buff.Write(Map.Size);
                buff.Write(IsPVP);
            });

            if (ComputerAI != null)
            {
                ComputerAI.Start();
            }
        }
Exemplo n.º 11
0
 private void ComputerStartToCompute()
 {
     var computer = new ComputerAI(new BoardData(_tortoise, _hare), Setting.MaxPly, NowTurn);
     _computerAITask = new Task<Tuple<int, Chess.Action>>(computer.BestMove);
     _computerAITask.Start();
 }
Exemplo n.º 12
0
 void Start()
 {
     stateHandler = GameObject.Find("StateHandler").GetComponent <StateHandler>();
     computerAI   = GameObject.Find("ComputerAI").GetComponent <ComputerAI>();
 }
Exemplo n.º 13
0
 public void InitializedMemmory(Board i_Board)
 {
     this.OptionalChoices = new ComputerAI(i_Board);
 }
Exemplo n.º 14
0
    public void OnGUI()
    {
        ComputerAI r         = new ComputerAI();
        GUIStyle   fontStyle = new GUIStyle();

        fontStyle.normal.background = null;
        fontStyle.normal.textColor  = new Color(1, 0, 0);
        fontStyle.fontSize          = 24;
        GUI.backgroundColor         = Color.red;
        int result = check();

        if (GUI.Button(new Rect(385, 200, 100, 50), "电脑先手") && state[1, 1] == 0)
        {
            state[1, 1] = 2;
        }
        if (GUI.Button(new Rect(275, 200, 100, 50), "Reset"))
        {
            reset();
        }

        if (GUI.Button(new Rect(330, 300, 100, 50), "悔棋") && count != 0 && result == 0)
        {
            state[a, b] = 0;
            state[c, d] = 0;
        }

        if (result == 1)
        {
            GUI.Label(new Rect(325, 170, 100, 50), " 你赢了!", fontStyle);
            A = 1;
            output();
        }
        else if (result == 2)
        {
            GUI.Label(new Rect(325, 170, 100, 50), "菜鸟,你输了", fontStyle);
            A = 2;
            output();
        }
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                if (state[i, j] == 1)
                {
                    GUI.Button(new Rect(300 + i * 50, j * 50, 50, 50), "O");
                }
                if (state[i, j] == 2)
                {
                    GUI.Button(new Rect(300 + i * 50, j * 50, 50, 50), "X");
                }
                if (GUI.Button(new Rect(300 + i * 50, j * 50, 50, 50), ""))
                {
                    if (result == 0)
                    {
                        a           = i; b = j;
                        state[i, j] = 1;
                        result      = check();
                        r.Step1();

                        if ((state[0, 2] == 1 && state[2, 0] == 1) || (state[0, 0] == 1 && state[2, 2] == 1))
                        {
                            r.Step2();
                        }
                        else
                        {
                            r.Step3();
                        }
                        r.Step4();
                        r.Step5();
                        r.Step6(1);
                        r.Step6(2);
                        if (r.x != -1 && r.y != -1 && state[r.x, r.y] == 0 && result == 0)
                        {
                            state[r.x, r.y] = 2;
                            c = r.x; d = r.y;
                        }
                    }
                }
            }
        }
        count = 0;
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                if (state[i, j] == 0)
                {
                    count++;
                }
            }
        }
        if (result == 0 && count == 0)
        {
            GUI.Label(new Rect(315, 170, 100, 50), "平局", fontStyle);
            output();
        }
    }