コード例 #1
0
        private void ExecuteTestAction()
        {
            _canvasContainer.ClearCanvas(CanvasType.Result);
            NetworkTester networkTester = new NetworkTester(_network);
            var           inputData     = PreaperNetworkInput(CanvasType.Test);
            GameMark      gameMark      = networkTester.Test(inputData);

            if (gameMark == GameMark.Circle)
            {
                _painterCommand = new DrawCircleCommand(_pen);
                _canvasContainer.DrawOnCanvas(CanvasType.Result, _painterCommand);
                GameInfo("Circle");
            }
            if (gameMark == GameMark.Cross)
            {
                _painterCommand = new DrawCrossCommand(_pen, _crossDesignator);
                _canvasContainer.DrawOnCanvas(CanvasType.Result, _painterCommand);
                GameInfo("Cross");
            }
            else
            {
                GameInfo("Blank");
            }
            UpdateCanvasView(CanvasType.Result);
        }
コード例 #2
0
 public ComputerPlayer(GameUtil gameUtil, List<CanvasType> canvasTypes)
 {
     _gameUtil = gameUtil;
     _canvasTypes = canvasTypes;
     _state = new int[9];
     _computerMark = GameMark.Cross;
 }
コード例 #3
0
 public void Mark(GameMark mark, int x, int y)
 {
     try
     {
         _client.Mark(mark, x, y);
     }
     catch (Exception e)
     {
         Trace.TraceError("Error: {0}", e.Message);
     }
 }
コード例 #4
0
 public void SetTurn(GameMark symbol)
 {
     _turnMark = symbol;
     if (_playerMark == symbol)
     {
         lblYourTurn.Show();
     }
     else
     {
         lblYourTurn.Hide();
     }
 }
コード例 #5
0
ファイル: Game.cs プロジェクト: jhessin/SGPG350-Class-Project
        private void NextTurn()
        {
            switch (Turn)
            {
            case GameMark.X:
                Turn = GameMark.O;
                return;

            case GameMark.O:
                Turn = GameMark.X;
                return;
            }
        }
コード例 #6
0
        public void SetComputerMark(GameMark humanMark)
        {
            switch (humanMark)
            {
            case GameMark.Cross:
                _computerPlayer.ComputerMark = GameMark.Circle;
                break;

            default:
                _computerPlayer.ComputerMark = GameMark.Cross;
                break;
            }
        }
コード例 #7
0
        public static GameState ToState(this GameMark mark)
        {
            switch (mark)
            {
            case GameMark.X:
                return(GameState.WinX);

            case GameMark.O:
                return(GameState.WinO);

            default:
                throw new ArgumentOutOfRangeException($"Unexpect value {mark}");
            }
        }
コード例 #8
0
        public void Next()
        {
            switch (_currentMark)
            {
            case GameMark.X:
                _currentMark = GameMark.O;
                break;

            case GameMark.O:
                _currentMark = GameMark.X;
                break;
            }
            GameEvent?.Invoke(this, EventArgs.Empty);
        }
コード例 #9
0
        public IPainterCommand GetPainter(GameMark gameMark)
        {
            switch (gameMark)
            {
            case GameMark.Cross:
                return(new DrawCrossCommand(_pen, _crossDesignator));

            case GameMark.Circle:
                return(new DrawCircleCommand(_pen));

            case GameMark.Blank:
            default:
                return(new NullObjectCommand());
            }
        }
コード例 #10
0
        public void Mark(GameMark playerMark, int x, int y)
        {
            if (playerMark != _turn)
            {
                _callback[playerMark]?.Progress("It isn't your turn");
                return;
            }

            if (_board.Mark(_turn, x, y))
            {
                foreach (var cb in _callback.Values)
                {
                    cb.UpdateBoard(_board);
                    cb.Winner(_board.Winner());
                }
                NextTurn();
            }
        }
コード例 #11
0
 private void NextTurn()
 {
     if (_turn == GameMark.X)
     {
         _turn = GameMark.O;
     }
     else if (_turn == GameMark.O)
     {
         _turn = GameMark.X;
     }
     else if (_board.Winner() != GameMark.None)
     {
         _turn = GameMark.None;
     }
     foreach (var cb in _callback.Values)
     {
         cb.SetTurn(_turn);
     }
 }
コード例 #12
0
        public void Winner(GameMark winMark)
        {
            _winner = winMark;

            string message;

            switch (_winner)
            {
            case GameMark.X:
                MessageBox.Show("Player X Wins!");
                break;

            case GameMark.O:
                MessageBox.Show("Player O Wins!");
                break;

            case GameMark.Draw:
                MessageBox.Show("The Game is a Draw. Play again?");
                break;
            }
        }
コード例 #13
0
        public void SetPlayerMark(GameMark mark)
        {
            _playerMark = mark;
            string strMark = "";

            switch (mark)
            {
            case GameMark.X:
                strMark = "X";
                break;

            case GameMark.O:
                strMark = "O";
                break;

            default:
                strMark = "Error";
                break;
            }
            lblYourSymbol.Text = "You are: " + strMark;
        }
コード例 #14
0
 public GameSession()
 {
     _gameField   = new GameField();
     _currentMark = GameMark.X;
 }
コード例 #15
0
ファイル: Game.cs プロジェクト: jhessin/SGPG350-Class-Project
 public void Restart()
 {
     _board.Clear();
     Turn = GameMark.X;
 }
コード例 #16
0
ファイル: GameBoard.cs プロジェクト: RatProgrammer/TicTacToe
 public void UpdateBoard(CanvasType canvasType, GameMark gameMark)
 {
     _board[canvasType] = gameMark;
 }
コード例 #17
0
        public bool Mark(GameMark symbol, int x, int y)
        {
            switch (x)
            {
            case 1:
                switch (y)
                {
                case 1:
                    if (_topLeft == GameMark.None)
                    {
                        _topLeft = symbol;
                        return(true);
                    }
                    return(false);

                case 2:
                    if (_midLeft == GameMark.None)
                    {
                        _midLeft = symbol;
                        return(true);
                    }
                    return(false);

                case 3:
                    if (_bottomLeft == GameMark.None)
                    {
                        _bottomLeft = symbol;
                        return(true);
                    }
                    return(false);
                }
                return(false);

            case 2:
                switch (y)
                {
                case 1:
                    if (_topMid == GameMark.None)
                    {
                        _topMid = symbol;
                        return(true);
                    }
                    return(false);

                case 2:
                    if (_midMid == GameMark.None)
                    {
                        _midMid = symbol;
                        return(true);
                    }
                    return(false);

                case 3:
                    if (_bottomMid == GameMark.None)
                    {
                        _bottomMid = symbol;
                        return(true);
                    }
                    return(false);
                }
                return(false);

            case 3:
                switch (y)
                {
                case 1:
                    if (_topRight == GameMark.None)
                    {
                        _topRight = symbol;
                        return(true);
                    }
                    return(false);

                case 2:
                    if (_midRight == GameMark.None)
                    {
                        _midRight = symbol;
                        return(true);
                    }
                    return(false);

                case 3:
                    if (_bottomRight == GameMark.None)
                    {
                        _bottomRight = symbol;
                        return(true);
                    }
                    return(false);
                }
                return(false);

            default:
                return(false);
            }
        }
コード例 #18
0
 public void Clear()
 {
     _topLeft    =
         _topMid = _topRight = _midLeft = _midMid = _midRight = _bottomLeft = _bottomMid = _bottomRight = GameMark.None;
 }
コード例 #19
0
 public static char MarkToChar(GameMark mark)
 {
     return(mark == GameMark.X ? 'X' : mark == GameMark.O ? 'O' : ' ');
 }
コード例 #20
0
 public void Restart()
 {
     _gameField   = new GameField();
     _currentMark = GameMark.X;
     GameRestarted?.Invoke(this, EventArgs.Empty);
 }
コード例 #21
0
 public void UpdateBoard(CanvasType canvasType, GameMark gameMark)
 {
     _gameBoard.UpdateBoard(canvasType, gameMark);
 }