public JsonResult TakeShot([FromBody] TakeShotViewModel shot) { GameBoardModel player = JsonConvert.DeserializeObject <GameBoardModel>(HttpContext.Session.GetString("player")); GameBoardModel opponentModel = JsonConvert.DeserializeObject <GameBoardModel>(HttpContext.Session.GetString("opponentModel")); ezbot opponent = new ezbot(opponentModel); Tuple <int, int> incomingShotGuess; //Resolve player shot var opponentHit = false; switch (opponent.ReceiveShot(shot.row, shot.col)) { case ShotStatus.Hit: opponentHit = true; break; case ShotStatus.Miss: opponentHit = false; break; case ShotStatus.OutofBounds: return(Json(new { modelResponse = opponent.model.Error })); } player.UpdateAfterShot(shot.row, shot.col, opponentHit); //Check for player win condition var playerWin = false; playerWin = opponent.model.CheckLose(); //Opponent takes a shot incomingShotGuess = opponent.TakeShot(); //Player Receives shot var playerHit = player.ReceiveShot(incomingShotGuess.Item1, incomingShotGuess.Item2); bool playerHitData = true; if (playerHit == ShotStatus.Hit) { playerHitData = true; } else if (playerHit == ShotStatus.Miss) { playerHitData = false; } opponent.model.UpdateAfterShot(incomingShotGuess.Item1, incomingShotGuess.Item2, playerHitData); //check for opponent win condition var opponentWin = false; opponentWin = player.CheckLose(); //return the results HttpContext.Session.SetString("player", JsonConvert.SerializeObject(player)); HttpContext.Session.SetString("opponentModel", JsonConvert.SerializeObject(opponent.model)); return(Json(new { win = new { playerWin = playerWin, opponentWin = opponentWin }, modelResponse = opponentHit, incomingShot = new { playerHit = playerHitData, row = incomingShotGuess.Item1, col = incomingShotGuess.Item2 } })); }
// GET: /<controller>/ // Initialize game state public IActionResult Index() { //Initialize game session data List <int> validShips = new List <int> { 2, 3, 3, 4, 5 }; List <string> dirList = new List <string> { "S", "E", "N", "W" }; GameBoardModel player = new GameBoardModel(10, 10); ezbot opponent = new ezbot(10, 10); HttpContext.Session.SetString("validShips", JsonConvert.SerializeObject(validShips)); HttpContext.Session.SetString("opponentModel", JsonConvert.SerializeObject(opponent.model)); HttpContext.Session.SetString("player", JsonConvert.SerializeObject(player)); return(View("/Views/Game/PlaceShips.cshtml", settingsModel)); }