public BoardService( IBoardPositionConverter boardPositionConverter, IPositionValidator positionValidator) { this.boards = new List <Board>(); this.boardPositionConverter = boardPositionConverter; this.positionValidator = positionValidator; }
public PositionService( IUOW UOW, ICurrentContext CurrentContext, IPositionValidator PositionValidator, ILogging Logging ) { this.UOW = UOW; this.Logging = Logging; this.CurrentContext = CurrentContext; this.PositionValidator = PositionValidator; }
public Position Execute(Position currentPosition, IPositionValidator positionValidator) { if (currentPosition == null) { return(currentPosition); } return(new Position(currentPosition) { Facing = RightTurns[currentPosition.Facing] }); }
public Position Execute(Position currentPosition, IPositionValidator positionValidator) { if (currentPosition == null) { Console.Out.WriteLine($"Output: {ErrorMessages.NotPlaced}"); } else { Console.Out.WriteLine($"Output: {currentPosition.ToString()}"); } return(currentPosition); }
public Position Execute(Position currentPosition, IPositionValidator positionValidator) { if (currentPosition == null) { return(currentPosition); } Position newPosition = new Position(currentPosition); newPosition.X = currentPosition.X + XCoordChanges[currentPosition.Facing]; newPosition.Y = currentPosition.Y + YCoordChanges[currentPosition.Facing]; if (!positionValidator.Validate(newPosition)) { return(currentPosition); } return(newPosition); }
public Position Execute(Position currentPosition, IPositionValidator positionValidator) { try { Position newPosition = new Position { Facing = GetDirectionParameter(), X = GetXParameter(), Y = GetYParameter() }; if (!positionValidator.Validate(newPosition)) { return(currentPosition); } return(newPosition); } catch { return(currentPosition); } }
//int lastUsedPos; //Replaced by GetRandomPosition //public Transform GetRandomMapItemGenPos() //{ // int randIndex = UnityEngine.Random.Range(0, mapItemGenPos.Count); // if(randIndex == lastUsedPos) // { // //Debug.Log("Select another pos"); // randIndex = randIndex++ % mapItemGenPos.Count; // } // lastUsedPos = randIndex; // return mapItemGenPos[randIndex]; //} /// <summary> /// Finds random position on map and returns it if the pCondition is met /// </summary> public Vector2?GetRandomPosition(IPositionValidator pCondition = null, int pIteration = 0) { if (pCondition == null) { pCondition = this; } if (DebugData.TestGenerateItems) { return(debug_GetRandomPosition()); } Vector2 topLeft = TopLeftCorner.position; Vector2 botRight = BotRightCorner.position; Vector2 randomPos = new Vector2(Random.Range(topLeft.x, botRight.x), Random.Range(topLeft.y, botRight.y)); Utils.DebugDrawCross(randomPos, Color.red, 1); if (pCondition.IsPositionValid(randomPos)) { return(randomPos); } const int max_iterations = 20; if (pIteration > max_iterations) { //not error - this means that there are probably too much items on map already // => no need to generate more Debug.Log("Couldnt find good position to generate item"); return(null); } return(GetRandomPosition(pCondition, pIteration + 1)); }
public static void Main() { #region [on] 0. Instance var battlefield = new Battlefield(10, 10); positionParser = new PositionParser(); positionValidator = new PositionValidator(); randomManager = new RandomManager(); shipManager = new ShipManager(); shootManager = new ShootManager(); placeManager = new PlaceManager(); var battleBgm = new WindowsMediaPlayer(); var winnerBgm = new WindowsMediaPlayer(); #endregion #region [off] 1. Welcome Screen //GraphicManager.WelcomeScreen(); #endregion #region [on] 1.1. BGM SoundEffects.BattleBgmPlayer(battleBgm); #endregion #region [on] 2. Ships Topf // instance two players var player = new Player(); player.Positions = new List <Position>(); player.Hits = new List <Hit>(); player.Ships = new List <Ship>(); var computer = new Player(); computer.Positions = new List <Position>(); computer.Hits = new List <Hit>(); computer.Ships = new List <Ship>(); #endregion #region [on] 3. Place PlayerShips and ComputerShips // create player Ships player.Ships = InitializeShips(); // place player ships // [!!] placeManager.PlacePlayerShips(player.Ships, positionParser, positionValidator, shipManager,battlefield); placeManager.PlaceComputerShips(player.Ships, randomManager, shipManager, positionValidator, battlefield); // create ships for pc computer.Ships = InitializeShips(); // place pc ships placeManager.PlaceComputerShips(computer.Ships, randomManager, shipManager, positionValidator, battlefield); // Add positions into Instances foreach (var playerShip in player.Ships) { player.Positions.AddRange(playerShip.Positions); } var allPlayerShipsPositions = player.Positions; foreach (var computerShip in computer.Ships) { computer.Positions.AddRange(computerShip.Positions); } var allComputerShipsPositions = computer.Positions; #endregion #region + [on] display pcShips for Testing Console.Clear(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(" God Mode"); Console.WriteLine(" PC Ships:"); Console.WriteLine(); Console.WriteLine(GraphicManager.DisplayBattlefield(battlefield.ColumnSize, battlefield.RowSize, computer.Ships).PadRight(20)); Console.ReadKey(); SoundEffects.SetShipSoundPlayer(); #endregion #region + [off] display Win view for Testing //battleBgm.close(); //EndGameManager.WhoWin(player, computer, winnerBgm, shootManager); //EndGameManager.RestartGame(winnerBgm); #endregion #region [on] 4. Game begin view GraphicManager.GameStartView(player, computer, battlefield); #endregion #region [on] 5. Player || PC shots do // End the Game { do // Player == * ==> PC { var iShootPosition = ShootManager.PlayerShoot(player, computer, battlefield, positionParser, positionValidator); if (allComputerShipsPositions.Contains(iShootPosition)) // Hit Ship { computer.Hits.Add(new Hit(HitType.Ship, iShootPosition)); shootManager.HitShip(player, computer, iShootPosition, computer.Ships, battlefield); } else // Hit Water { computer.Hits.Add(new Hit(HitType.Water, iShootPosition)); shootManager.HitWater(player, computer, iShootPosition, battlefield, positionParser); } // Is all Player Ships Sunken if (shootManager.IsAllShipsSunken(computer.Ships)) { break; } } while (computer.Hits.Last().HitType == HitType.Ship); // one more time shoot do // PC == * ==> Player { // if All player ships have Sunked skip all those code if (shootManager.IsAllShipsSunken(computer.Ships)) { break; } var pcShootPosition = ShootManager.ComputerShoot(player, computer, battlefield, randomManager, positionParser); if (allPlayerShipsPositions.Contains(pcShootPosition)) // Hit Ship { player.Hits.Add(new Hit(HitType.Ship, pcShootPosition)); shootManager.HitShip(player, computer, pcShootPosition, player.Ships, battlefield); } else //Hit Water { player.Hits.Add(new Hit(HitType.Water, pcShootPosition)); shootManager.HitWater(player, computer, pcShootPosition, battlefield, positionParser); } // Check if all Player Ship Sunken if (shootManager.IsAllShipsSunken(player.Ships)) { break; } } while (player.Hits.Last().HitType == HitType.Ship); // one more time shoot } while (shootManager.IsAllShipsSunken(computer.Ships) == false && shootManager.IsAllShipsSunken(player.Ships) == false); // End the game #endregion #region [on] 6. Game End View battleBgm.close(); EndGameManager.WhoWin(player, computer, winnerBgm, shootManager); EndGameManager.RestartGame(winnerBgm); #endregion }
/// <summary> /// Default constructor. /// </summary> /// <param name="random">Random generator for new step creation.</param> /// <param name="validator"> Psotion validator.</param> /// <param name="calculations"> Game math.</param> public HerbivoreManager(IRandom random, IPositionValidator validator, ICalculations calculations) { _random = random; _validator = validator; _calculations = calculations; }
public static Position PlayerShoot(Player player, Player computer, Battlefield battlefield, IPositionParser positionParser, IPositionValidator positionValidator) { GraphicManager.DisplayBattleView(player, computer, battlefield); // isShootOk Position iShootPosition; do { Console.WriteLine(" \" I Shoot \" "); Console.WriteLine(); Console.Write(" POSITION >"); //convert to "Position" iShootPosition = positionParser.Parse(Console.ReadLine()); } while (positionValidator.IsShootOk(iShootPosition, battlefield.ColumnSize, battlefield.RowSize, computer) == false); return(iShootPosition); }
public RobotService(IBoardService boardService, IPositionValidator positionValidator) { this.boardService = boardService; this.positionValidator = positionValidator; }
public void RemovePositionValidator(IPositionValidator validator) { _positionValidators.Remove(validator); }
private static List <Position> ValidatePlayerPositions(List <Ship> playerShips, IPositionParser positionParser, IPositionValidator positionValidator, IShipManager shipManager, List <Position> shipPositions, Ship ship, Battlefield battlefield) { Position position; Direction direction; for (int i = 0; i < shipPositions.Count; i++) { while (positionValidator.IsValidPosition(shipPositions[i], battlefield.ColumnSize, battlefield.RowSize, playerShips) == false) { Console.WriteLine(); do { Console.Write(" Position is not validated, try again >"); position = positionParser.Parse(Console.ReadLine()); } while (position == null); do { direction = PlaceManager.GetDirection(); } while (direction == Direction.None); shipPositions = shipManager.WholeShipPositions(position, ship.Size, direction); i = -1; break; } } return(shipPositions); }
public void PlaceComputerShips(List <Ship> computerShips, IRandomManager randomManager, IShipManager shipManager, IPositionValidator positionValidator, Battlefield battlefield) { foreach (var ship in computerShips) { var randomPosition = randomManager.RandomPosition(battlefield.ColumnSize, battlefield.RowSize); var randomDirection = randomManager.RandomDirection(); var shipPositions = shipManager.WholeShipPositions(randomPosition, ship.Size, randomDirection); for (int i = 0; i < shipPositions.Count; i++) { while (positionValidator.IsValidPosition(shipPositions[i], battlefield.ColumnSize, battlefield.RowSize, computerShips) == false) { randomPosition = randomManager.RandomPosition(battlefield.ColumnSize, battlefield.RowSize); randomDirection = randomManager.RandomDirection(); shipPositions = shipManager.WholeShipPositions(randomPosition, ship.Size, randomDirection); i = -1; break; } } ship.Positions.AddRange(shipPositions); } }
public void PlacePlayerShips(List <Ship> playerShips, IPositionParser positionParser, IPositionValidator positionValidator, IShipManager shipManager, Battlefield battlefield) { foreach (var ship in playerShips) { Console.Clear(); Console.WriteLine(); //display battle field Console.WriteLine(GraphicManager.DisplayBattlefield(battlefield.ColumnSize, battlefield.RowSize, playerShips)); //display place table Console.WriteLine(GraphicManager.DisplayPlaceTable(playerShips, ship.ShipType)); //get the StartPosition Position position; do { Console.Write(" Enter position for {0} > ", ship.ShipType); position = positionParser.Parse(Console.ReadLine()); } while (position == null); //get the direction Direction direction; do { direction = GetDirection(); } while (direction == Direction.None); //get whole ship positions var shipPositions = shipManager.WholeShipPositions(position, ship.Size, direction); //validate player position shipPositions = ValidatePlayerPositions(playerShips, positionParser, positionValidator, shipManager, shipPositions, ship, battlefield); ship.Positions.AddRange(shipPositions); SoundEffects.SetShipSoundPlayer(); } }
public void AddPositionValidator(IPositionValidator validator) { _positionValidators.Add(validator); }
public Robot(ICommandParser commandParser, IPositionValidator positionValidator) { _commandParser = commandParser; _positionValidator = positionValidator; _position = null; }
public Position Execute(Position currentPosition, IPositionValidator positionValidator) { return(currentPosition); }
/// <summary> /// Default constructor. /// </summary> /// <param name="random">Random generator for initial position creating.</param> /// <param name="validator">Position validator</param> public AnimalFactory(IRandom random, IPositionValidator validator) { _random = random; _validator = validator; }