示例#1
0
        public BoardPositions GetMovableBoardPositions(
            PlayerType player,
            BoardPosition position,
            Board board,
            BoardPositions turnPlayerKomaPositions,
            BoardPositions opponentKomaPositions)
        {
            var positions = new BoardPositions();

            // [後手なら移動可能位置は反転される]
            var toRelativePos = RelativeBoardPosition;

            if (player == PlayerType.SecondPlayer)
            {
                toRelativePos = toRelativePos.Reverse();
            }

            var toPos = position.Add(toRelativePos);

            if (board.Positions.Contains(toPos))
            {
                if (!turnPlayerKomaPositions.Contains(toPos))
                {
                    positions = positions.Add(toPos);
                }
            }

            return(positions);
        }
示例#2
0
        public ShotStatus FireAtShip(Coordinates position)
        {
            if (BoardPositions.Contains(position))
            {
                _lifeRemaining--;

                if (_lifeRemaining == 0)
                {
                    return(ShotStatus.HitAndSunk);
                }
                return(ShotStatus.Hit);
            }
            return(ShotStatus.Miss);
        }
示例#3
0
        public ShotStatus FireAtShip(Coordinate position) // loop through ships and find if ship xists at those coordinates...
        {
            if (BoardPositions.Contains(position))
            {
                _lifeRemaining--;

                if (_lifeRemaining == 0)
                {
                    return(ShotStatus.HitAndSunk);
                }

                return(ShotStatus.Hit);
            }

            return(ShotStatus.Miss);
        }
示例#4
0
        public BoardPositions GetMovableBoardPositions(
            PlayerType player,
            BoardPosition position,
            Board board,
            BoardPositions turnPlayerKomaPositions,
            BoardPositions opponentKomaPositions)
        {
            var positions = new BoardPositions();

            // [後手なら移動可能位置は反転される]
            var toRelativePos = RelativeBoardPosition;

            if (player == PlayerType.SecondPlayer)
            {
                toRelativePos = toRelativePos.Reverse();
            }

            for (var toPos = position.Add(toRelativePos); ; toPos = toPos.Add(toRelativePos))
            {
                // [盤の範囲外に来たら移動不可]
                if (!board.Positions.Contains(toPos))
                {
                    break;
                }

                // [自分の駒に当たったら移動不可]]
                if (turnPlayerKomaPositions.Contains(toPos))
                {
                    break;
                }

                positions = positions.Add(toPos);

                // [相手の駒があったらその先は移動できない]
                if (opponentKomaPositions.Contains(toPos))
                {
                    break;
                }
            }

            return(positions);
        }