diff --git a/Torpedo/Torpedo/AIPlayer.cs b/Torpedo/Torpedo/AIPlayer.cs index bb15927..b17f251 100644 --- a/Torpedo/Torpedo/AIPlayer.cs +++ b/Torpedo/Torpedo/AIPlayer.cs @@ -33,18 +33,26 @@ namespace Torpedo x = rand.Next(Game.GameSize.Width); y = rand.Next(Game.GameSize.Height); } while (Player.Player2.Shots.Any(p => p.X == x && p.Y == y)); - Ship ship = Ship.GetShipAtField(Player.CurrentEnemy, x, y); - if (ship == null) - { - Player.CurrentOwn.Shots.Add(new Point(x, y)); - } - else + Ship ship = Ship.GetShipAtField(Player.CurrentEnemy, x, y); + if (Player.CurrentOwn.Shots.Any(s => s.X == x && s.Y == y)) + return; + if (ship != null) { if (ship.Direction == ShipDirection.Horizontal) - ship.DamagedParts[x - ship.X] = true; + { + if (!ship.DamagedParts[x - ship.X]) + ship.DamagedParts[x - ship.X] = true; + else + return; + } else - ship.DamagedParts[y - ship.Y] = true; + { + if (!ship.DamagedParts[y - ship.Y]) + ship.DamagedParts[y - ship.Y] = true; + else return; + } } + Player.CurrentOwn.Shots.Add(new Point(x, y)); } } } diff --git a/Torpedo/Torpedo/EnemyGameRenderer.cs b/Torpedo/Torpedo/EnemyGameRenderer.cs index 89ad9d5..7e2c0ce 100644 --- a/Torpedo/Torpedo/EnemyGameRenderer.cs +++ b/Torpedo/Torpedo/EnemyGameRenderer.cs @@ -50,8 +50,8 @@ namespace Torpedo public override void RenderGameField() { - Player.CurrentEnemy.Ships.ForEach(s => RenderShip(s)); Player.CurrentOwn.Shots.ForEach(s => UpdateField(s.X, s.Y, FieldTypeEnemy.Missed)); + Player.CurrentEnemy.Ships.ForEach(s => RenderShip(s)); } } diff --git a/Torpedo/Torpedo/GameForm.cs b/Torpedo/Torpedo/GameForm.cs index c0b2794..3cc278f 100644 --- a/Torpedo/Torpedo/GameForm.cs +++ b/Torpedo/Torpedo/GameForm.cs @@ -141,17 +141,26 @@ namespace Torpedo return; Point clickedfield = GameRenderer.Enemy.PixelsToFields(enemyPanel.PointToClient(Cursor.Position)); Ship ship = Ship.GetShipAtField(Player.CurrentEnemy, clickedfield.X, clickedfield.Y); - if (ship == null) - { - Player.CurrentOwn.Shots.Add(clickedfield); - } - else + if (Player.CurrentOwn.Shots.Any(s => s.X == clickedfield.X && s.Y == clickedfield.Y)) + return; + if (ship != null) { if (ship.Direction == ShipDirection.Horizontal) - ship.DamagedParts[clickedfield.X - ship.X] = true; + { + if (!ship.DamagedParts[clickedfield.X - ship.X]) //Felesleges, mivel a Shots már eltárolja a találatokat is... + ship.DamagedParts[clickedfield.X - ship.X] = true; + else + return; + } else - ship.DamagedParts[clickedfield.Y - ship.Y] = true; + { + if (!ship.DamagedParts[clickedfield.Y - ship.Y]) + ship.DamagedParts[clickedfield.Y - ship.Y] = true; + else + return; + } } + Player.CurrentOwn.Shots.Add(clickedfield); GameRenderer.Enemy.RenderGameField(); Game.NextTurn(ship != null); } diff --git a/Torpedo/Torpedo/OwnGameRenderer.cs b/Torpedo/Torpedo/OwnGameRenderer.cs index fc3df12..78901c2 100644 --- a/Torpedo/Torpedo/OwnGameRenderer.cs +++ b/Torpedo/Torpedo/OwnGameRenderer.cs @@ -48,8 +48,8 @@ namespace Torpedo public override void RenderGameField() { - Player.CurrentOwn.Ships.ForEach(s => RenderShip(s)); Player.CurrentEnemy.Shots.ForEach(s => UpdateField(s.X, s.Y, FieldTypeOwn.Missed)); + Player.CurrentOwn.Ships.ForEach(s => RenderShip(s)); } }