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); }
public UserController(IUserFacade facade, ISpotUser user, IDelete accountDelete, IUserResponse response, IEmailService emailService) { _facade = facade; _user = user; _accountDelete = accountDelete; _response = response; _emailService = emailService; }
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); }
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); }
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); }
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); }
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); }
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; } } }
public BotResult(string text, IUserResponse userResponse = null) { this.auxiliaryText = text; this.userResponse = userResponse; }
public BotResult(ChatResult result, IUserResponse userResponse) { this.chatResult = result; this.userResponse = userResponse; }
private void Print(IUserResponse message) { Console.WriteLine("Message: " + message.Text); }
public BotResult(string message, IUserResponse userResponse) { this.userResponse = userResponse; this.message = message; }
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); }
static void PrintUserResponse(IUserResponse userResponse) { Console.WriteLine("UserResponse: " + userResponse.Text); }