From c4ee6e3bd5359a72abae3842a49ee467c5b07a24 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 24 May 2016 22:06:28 +0200 Subject: [PATCH] =?UTF-8?q?Hibajav=C3=ADt=C3=A1s:=20Most=20m=C3=A1r=20nem?= =?UTF-8?q?=20lehet=20t=C3=B6bbsz=C3=B6r=20ugyanoda=20l=C5=91ni?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Torpedo/Torpedo/AIPlayer.cs | 24 ++++++++++++++++-------- Torpedo/Torpedo/EnemyGameRenderer.cs | 2 +- Torpedo/Torpedo/GameForm.cs | 23 ++++++++++++++++------- Torpedo/Torpedo/OwnGameRenderer.cs | 2 +- 4 files changed, 34 insertions(+), 17 deletions(-) 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)); } }