Exemplo n.º 1
0
 public Clock()
 {
     Timer          = new Timer(1000);
     Timer.Elapsed += Timer_Elapsed;
     Timer.Enabled  = true;
     Seconds        = 300;
     GameDisplay    = new ConsoleDisplay();
 }
 public override void HandlePlayGameRequest(IGameDisplay display, IBoard board)
 {
     display.WelcomeMessage();
     if (_successor != null)
     {
         _successor.HandlePlayGameRequest(display, board);
     }
 }
 public override void HandlePlayGameRequest(IGameDisplay display, IBoard board)
 {
     display.WelcomeMessage();
     if (_successor != null)
     {
         _successor.HandlePlayGameRequest(display, board);
     }
 }
Exemplo n.º 4
0
        public Game(IGameDisplay display, IPlayer[] players)
        {
            rand = new Random();
            if (players == null || players.Length != 4)
            {
                throw new Exception("Need 4 players to play");
            }
            this.display = display;
            this.players = players;
            this.history = new List<HistoryEntry>();

            situation = Situation.GameStart();
        }
Exemplo n.º 5
0
 public Game(Int32 width, Int32 height, Int32 snakeCount, IGameDisplay display)
 {
     this.width   = width;
     this.height  = height;
     this.Display = display;
     this.Snakes  = new List <Snake>();
     for (Int32 i = 0; i < snakeCount; ++i)
     {
         var snake = new Snake(this.width, this.height, i);
         snake.BlockAdded   += this.Snake_BlockAdded;
         snake.BlockRemoved += this.Snake_BlockRemoved;
         this.Snakes.Add(snake);
     }
 }
Exemplo n.º 6
0
        public Move MoveFromInput(IGameDisplay display)
        {
            string turn = "Black";

            if (White)
            {
                turn = "White";
            }

            display.DisplayMessage("\n* Player turn: " + turn);
            char[] coordinates = ReadInput(display).ToCharArray();
            if (coordinates[0] == '0')
            {
                if (coordinates.Length == 3)
                {
                    if (White)
                    {
                        return(new ShortCastling(new Field(0, 4, null), new Field(0, 6, null)));
                    }
                    else
                    {
                        return(new ShortCastling(new Field(7, 4, null), new Field(7, 6, null)));
                    }
                }
                else
                {
                    if (White)
                    {
                        return(new LongCastling(new Field(0, 4, null), new Field(0, 2, null)));
                    }
                    else
                    {
                        return(new LongCastling(new Field(7, 4, null), new Field(7, 2, null)));
                    }
                }
            }
            else
            {
                Field start = new Field(Move.RowToIndex(coordinates[1]),
                                        Move.ColumnToIndex(coordinates[0]), null);

                Field end = new Field(Move.RowToIndex(coordinates[4]),
                                      Move.ColumnToIndex(coordinates[3]), null);

                return(new Move(start, end));
            }
        }
        public override void HandlePlayGameRequest(IGameDisplay display, IBoard board)
        {
            var result = board.GetResult();
            if (result != null)
            {
                display.WinMessage((char)result);
            }
            else
            {
                display.DrawMessage();
            }

            if (_successor != null)
            {
                _successor.HandlePlayGameRequest(display, board);
            }
        }
        public override void HandlePlayGameRequest(IGameDisplay display, IBoard board)
        {
            var result = board.GetResult();

            if (result != null)
            {
                display.WinMessage((char)result);
            }
            else
            {
                display.DrawMessage();
            }

            if (_successor != null)
            {
                _successor.HandlePlayGameRequest(display, board);
            }
        }
Exemplo n.º 9
0
        public override void HandlePlayGameRequest(IGameDisplay display, IBoard board)
        {
            int turn = 0;
            do
            {
                turn++;
                var player = turn % 2 == 0 ? 'O' : 'X';
                display.TurnMessage(turn);
                _moveStrategy.Move(player, board);
                display.DrawBoard(board);
                Thread.Sleep(_sleepDuration);
            } while (board.IsInPlay());

            if (_successor != null)
            {
                _successor.HandlePlayGameRequest(display, board);
            }
        }
Exemplo n.º 10
0
        public override void HandlePlayGameRequest(IGameDisplay display, IBoard board)
        {
            int turn = 0;

            do
            {
                turn++;
                var player = turn % 2 == 0 ? 'O' : 'X';
                display.TurnMessage(turn);
                _moveStrategy.Move(player, board);
                display.DrawBoard(board);
                Thread.Sleep(_sleepDuration);
            } while (board.IsInPlay());

            if (_successor != null)
            {
                _successor.HandlePlayGameRequest(display, board);
            }
        }
Exemplo n.º 11
0
        public Move PerformMove(Board board, IGameDisplay display)
        {
            Move m = MoveFromInput(display);

            while (!Validator.TryMove(board, m, White, display))
            {
                display.DisplayBoard(board);
                display.DisplayMessage("Invalid move.");
                m = MoveFromInput(display);
            }

            board.Fields[m.Start.X][m.Start.Y].Piece.Move(m, board);
            Validator.EnPassant      = false;
            Validator.Promotion      = false;
            Validator.PromotionPiece = null;

            board.LastMove = new Move(board.Fields[m.Start.X][m.Start.Y],
                                      board.Fields[m.End.X][m.End.Y]);

            return(m);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Da li je potez validan tj. legalan
        /// </summary>
        public static bool ValidMove(Board board, Move m, bool white, IGameDisplay display)
        {
            int startX = m.Start.X;
            int startY = m.Start.Y;
            int endX   = m.End.X;
            int endY   = m.End.Y;

            if (board.Fields[startX][startY].Piece == null)
            {
                display.DisplayMessage("No piece selected.\n");
                return(false);
            }

            else if (startX == endX && startY == endY)
            {
                display.DisplayMessage("End field must differ from start field.");
                return(false);
            }

            else if (board.Fields[startX][startY].Piece.White != white)
            {
                display.DisplayMessage("Invalid piece selected!");
                return(false);
            }

            else if (board.Fields[endX][endY].Piece != null &&
                     board.Fields[endX][endY].Piece.White == white)
            {
                display.DisplayMessage("Overlapping pieces.");
                return(false);
            }

            else
            {
                /*u funkciju se ulazi sa pretpostavkom da ukoliko postoji figura na ciljnom polju,
                 * ona mora biti protivnicka*/
                return(board.Fields[startX][startY].Piece.ValidMove(m, board));
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Ispitivanje pseudo-legalnog poteza na kopiji table
        /// Nakon poteza kralj ne sme ostati u sahu.
        /// </summary>
        public static bool TryMove(Board originalBoard, Move move, bool white, IGameDisplay display)
        {
            Board testBoard = new Board(originalBoard);

            if (!ValidMove(testBoard, move, white, display))
            {
                return(false);
            }
            //potez je pseudo-legalan, ispitivanje da li potez ostavlja naseg kralja u sahu
            else
            {
                testBoard.Fields[move.Start.X][move.Start.Y].Piece.Move(move, testBoard);
                if (KingAttackers(testBoard, white).Count != 0)
                {
                    display.DisplayMessage("King is in Check.");
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
        }
Exemplo n.º 14
0
        public string ReadInput(IGameDisplay display)
        {
            string coordinates = "";
            Match  match, shortMatch, longMatch;

            //Ocekuje se oblik zadavanja: "e4 e6"

            do
            {
                display.DisplayMessage("* Enter your move in the following format:\n" +
                                       "--> e4 e6 or 0-0 (Short castling) or 0-0-0 (Long castling)");
                coordinates = Console.ReadLine().ToLower();

                Regex regex         = new Regex(@"^[a-h][1-8]\s[a-h][1-8]");
                Regex shortCastling = new Regex(@"0-0");
                Regex longCastling  = new Regex(@"0-0-0");

                match      = regex.Match(coordinates);
                shortMatch = shortCastling.Match(coordinates);
                longMatch  = longCastling.Match(coordinates);
            } while (!match.Success && !shortMatch.Success && !longMatch.Success);

            return(coordinates);
        }
Exemplo n.º 15
0
 public GameManager(IGameDisplay gameDisplay)
 {
     _gameDisplay = gameDisplay;
 }
Exemplo n.º 16
0
 public ProxyGameDisplay(IGameDisplay gameDisplay)
 {
     this._gameDisplay = gameDisplay;
 }
Exemplo n.º 17
0
 public GameController(IGameDisplay gameDisplay)
 {
     this.gameDisplay = gameDisplay;
 }
Exemplo n.º 18
0
 public abstract void HandlePlayGameRequest(IGameDisplay display, IBoard board);
Exemplo n.º 19
0
 public GameEngine(IGameDisplay display, IBoard board, PlayGameHandler playGameHandler)
 {
     _display = display;
     _board = board;
     _playGameHandler = playGameHandler;
 }
Exemplo n.º 20
0
 public abstract void HandlePlayGameRequest(IGameDisplay display, IBoard board);
Exemplo n.º 21
0
 public GameEngine(IGameDisplay display, IBoard board, PlayGameHandler playGameHandler)
 {
     _display         = display;
     _board           = board;
     _playGameHandler = playGameHandler;
 }
Exemplo n.º 22
0
 public BattleShipEventHandlers(IGameDisplay gameDisplay,
                                IProjectionStore store)
 {
     _gameDisplay = gameDisplay;
     _store       = store;
 }