Example #1
0
        public void TakeShot(Board board)
        {
            Point shot = null;

            switch (actionState)
            {
            case ActionState.FindingShip:
                shot = GetShotForFindingShip(board);
                break;

            case ActionState.FindingOrientation:
                shot = GetShotForFindingOrientation(board, shot);     //shot refers to last shot taken
                break;

            case ActionState.SinkingShip:
                break;
            }


            Board.ShotResult shotResult = board.TakeShot(shot);

            switch (actionState)
            {
            case ActionState.FindingShip:
                AfterShotForFindingShip(shot, shotResult);
                break;

            case ActionState.FindingOrientation:
                AfterShotForFindingOrientation(shot, shotResult);
                break;

            case ActionState.SinkingShip:
                break;
            }
            //functions for each



            // if our last shot hit, do something

            // else do something else



            //if (!board.ShotAlreadyTakenAt(shot))
            //{
            //    lastShotStatus = board.TakeShot(shot, out string shipStatus);
            //    lastShot = shot;
            //}

            //if (lastShotStatus)
            //{
            //    //hit and ship not sunk logic
            //}

            //else
            //{

            //}
        }
Example #2
0
 private void AfterShotForFindingShip(Point shot, Board.ShotResult shotResult)
 {
     if (shotResult == Board.ShotResult.HitWithoutSink)
     {
         //lastShot = shot;
         initialHit  = shot;
         actionState = ActionState.FindingOrientation;
     }
 }
Example #3
0
 private void AfterShotForSinkingShip(Point shot, Board.ShotResult shotResult)
 {
     if (shotResult == Board.ShotResult.HitWithoutSink)
     {
         //lastShot = shot;
     }
     else if (shotResult == Board.ShotResult.Miss)
     {
         if (direction == Direction.Vertical)
         {
             shot = new Point(initialHit.X, (initialHit.Y - secondHit.Y));
         }
     }
     else if (shotResult == Board.ShotResult.HitAndSink)
     {
         actionState = ActionState.FindingOrientation;
     }
 }
Example #4
0
        private void AfterShotForFindingOrientation(Point shot, Board.ShotResult shotResult)
        {
            if (shotResult == Board.ShotResult.HitWithoutSink)
            {
                //lastShot = shot;
                secondHit   = shot;
                actionState = ActionState.SinkingShip;

                if (initialHit.X == secondHit.X)
                {
                    direction = Direction.Vertical;
                }
                else if (initialHit.Y == secondHit.Y)
                {
                    direction = Direction.Horizontal;
                }
            }
            else if (shotResult == Board.ShotResult.HitAndSink)
            {
                actionState = ActionState.FindingShip;
            }
        }