예제 #1
0
        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 } }));
        }
예제 #2
0
        // 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));
        }