Exemple #1
0
        private PlayerMove GetMoveFromPlayer(IUserInput input, IUserResponse userResponse, Player player, PieceColor currentColor)
        {
            bool isValidSelection = false;
            var  move             = player.MakeMove(input);

            while (!isValidSelection)
            {
                if (ChessBoard.IsLegalBoardPosition(move.PieceSelectionXCoordinate, move.PieceSelectionYCoordinate) &&
                    ChessBoard.IsPieceAt(move.PieceSelectionXCoordinate, move.PieceSelectionYCoordinate))
                {
                    if (ChessBoard.PieceAt(move.PieceSelectionXCoordinate, move.PieceSelectionYCoordinate).PieceColor == currentColor)
                    {
                        isValidSelection = true;
                    }
                    else
                    {
                        userResponse.BadPieceSelection("You must select your own piece to move.");
                        move = WhitePlayer.MakeMove(input);
                    }
                }
                else
                {
                    userResponse.BadPieceSelection("You must select a piece at a valid location.");
                    move = WhitePlayer.MakeMove(input);
                }
            }

            return(move);
        }
Exemple #2
0
 public UserController(IUserFacade facade, ISpotUser user, IDelete accountDelete, IUserResponse response, IEmailService emailService)
 {
     _facade        = facade;
     _user          = user;
     _accountDelete = accountDelete;
     _response      = response;
     _emailService  = emailService;
 }
Exemple #3
0
        private bool BlackTurn(IUserInput blackInput, IUserResponse userResponse)
        {
            var isGameOver = false;

            userResponse.InformPlayerOfTheirTurn(PieceColor.Black);

            var blacksDesiredMove = GetMoveFromPlayer(blackInput, userResponse, BlackPlayer, PieceColor.Black);

            var turnResult = TakeTurn(blacksDesiredMove, blackInput, userResponse, BlackPlayer, PieceColor.Black);

            if (turnResult.Flags.Contains(Flag.CheckMate))
            {
                isGameOver = true;
            }

            return(isGameOver);
        }
Exemple #4
0
        private bool WhiteTurn(IUserInput whiteInput, IUserResponse userResponse)
        {
            var isGameOver = false;

            userResponse.InformPlayerOfTheirTurn(PieceColor.White);

            var whitesDesiredMove = GetMoveFromPlayer(whiteInput, userResponse, WhitePlayer, PieceColor.White);

            var turnResult = TakeTurn(whitesDesiredMove, whiteInput, userResponse, WhitePlayer, PieceColor.White);

            if (turnResult.Flags.Contains(Flag.CheckMate))
            {
                isGameOver = true;
            }

            return(isGameOver);
        }
Exemple #5
0
        private void GenerateAndPublishBotResponse(IUserResponse message)
        {
            ChatResult result;

            if (currentUser == null)
            {
                result = bot.Chat(message.Text);
            }
            else
            {
                result = bot.Chat(new ChatRequest(message.Text, currentUser));
            }


            IBotResult botResponse = new ICAN.SIC.Plugin.SIMLHub.DataTypes.BotResult(result, message);

            hub.Publish <IBotResult>(botResponse);
        }
Exemple #6
0
        private TurnResult TakeTurn(PlayerMove playerMove, IUserInput input, IUserResponse userResponse, Player player, PieceColor pieceColor)
        {
            var turnResult = ChessBoard
                             .PieceAt(playerMove.PieceSelectionXCoordinate, playerMove.PieceSelectionYCoordinate)
                             .Move(playerMove.PieceDestinationXCoordinate, playerMove.PieceDestinationYCoordinate);

            userResponse.ReturnMoveInformation(turnResult, ChessBoard);

            while (!turnResult.TurnCompleted)
            {
                playerMove = GetMoveFromPlayer(input, userResponse, player, pieceColor);
                turnResult = ChessBoard
                             .PieceAt(playerMove.PieceSelectionXCoordinate, playerMove.PieceSelectionYCoordinate)
                             .Move(playerMove.PieceDestinationXCoordinate, playerMove.PieceDestinationYCoordinate);
                userResponse.ReturnMoveInformation(turnResult, ChessBoard);
            }

            return(turnResult);
        }
Exemple #7
0
        private void GetBotReponse(IUserResponse message)
        {
            ChatResult result;

            if (currentUser == null)
            {
                result = bot.Chat(message.Text);
            }
            else
            {
                result = bot.Chat(new ChatRequest(message.Text, currentUser));
            }

            Console.WriteLine("PrintMessage: " + result.BotMessage);

            IBotResult botResponse = new BotResult(result, message);

            hub.Publish <IBotResult>(botResponse);
        }
Exemple #8
0
        public void BeginGame(IUserInput whiteInput, IUserInput blackInput, IUserResponse userResponse)
        {
            SetUpChessBoard();
            var isGameComplete = false;

            var beginingTurn = new TurnResult();

            beginingTurn.Flags.Add(Flag.GameStart);
            userResponse.ReturnMoveInformation(beginingTurn, ChessBoard);

            while (!isGameComplete)
            {
                isGameComplete = WhiteTurn(whiteInput, userResponse);
                TurnCounter++;
                if (isGameComplete)
                {
                    break;
                }

                isGameComplete = BlackTurn(blackInput, userResponse);
                TurnCounter++;
                if (isGameComplete)
                {
                    break;
                }

                if (TurnCounter == 50 &&
                    ChessBoard.CapturedBlackPieces.Count == 0 &&
                    ChessBoard.CapturedWhitePieces.Count == 0)
                {
                    isGameComplete = true;
                    var result = new TurnResult();
                    result.Flags.Add(Flag.GameDraw);
                    userResponse.ReturnMoveInformation(result, ChessBoard);
                    break;
                }
            }
        }
Exemple #9
0
 public BotResult(string text, IUserResponse userResponse = null)
 {
     this.auxiliaryText = text;
     this.userResponse  = userResponse;
 }
Exemple #10
0
 public BotResult(ChatResult result, IUserResponse userResponse)
 {
     this.chatResult   = result;
     this.userResponse = userResponse;
 }
Exemple #11
0
 private void Print(IUserResponse message)
 {
     Console.WriteLine("Message: " + message.Text);
 }
Exemple #12
0
 public BotResult(string message, IUserResponse userResponse)
 {
     this.userResponse = userResponse;
     this.message      = message;
 }
Exemple #13
0
 private void ProcessUserResponse(IUserResponse msg)
 {
     helper.PublishMessageToSubscribers(MessageType.UserResponse, msg.Text);
 }
 private void AddUserResponse(IUserResponse response)
 {
     helper.AddUserMessage(response.Text);
 }
 public void PrintUserResponse(IUserResponse message)
 {
     Console.WriteLine("[User Message] " + message.Text);
     SetMessageText(message.Text);
 }
Exemple #16
0
 static void PrintUserResponse(IUserResponse userResponse)
 {
     Console.WriteLine("UserResponse: " + userResponse.Text);
 }