From ef49b7ea53faefd9df5ebf5fe75be523a4bec027 Mon Sep 17 00:00:00 2001 From: "jules.lascret" Date: Tue, 14 May 2024 18:00:25 +0200 Subject: [PATCH] Splitting methods to optimize --- Qwirkle/QwirkleClassLibrary/Game.cs | 48 ++++++++++++++++----------- Qwirkle/QwirkleClassLibrary/IRules.cs | 2 ++ Qwirkle/QwirkleConsoleApp/Program.cs | 2 +- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/Qwirkle/QwirkleClassLibrary/Game.cs b/Qwirkle/QwirkleClassLibrary/Game.cs index 3101e4c..902b2dd 100644 --- a/Qwirkle/QwirkleClassLibrary/Game.cs +++ b/Qwirkle/QwirkleClassLibrary/Game.cs @@ -212,6 +212,31 @@ namespace QwirkleClassLibrary return true; } + + public bool CheckExtendedSurroundingCells(Tile tile, int x, int y, int dx, int dy, Board b) + { + for (int i = 1; i < 7; i++) + { + var extendedCell = b.GetCell(x + i * dx, y + i * dy); + + if (extendedCell?.GetTile == null) + { + break; + } + + if (extendedCell.GetTile.GetColor != tile.GetColor && extendedCell.GetTile.GetShape != tile.GetShape) + { + return false; + } + + if (i == 6) + { + return false; + } + } + + return true; + } public bool IsMoveCorrect(Tile t, int x, int y, Board b) { @@ -220,7 +245,7 @@ namespace QwirkleClassLibrary return true; } - var surroundingCells = new[] + var surroundingCells = new List { b.GetCell(x + 1, y), b.GetCell(x - 1, y), @@ -243,24 +268,9 @@ namespace QwirkleClassLibrary var dx = cell.GetX - x; var dy = cell.GetY - y; - for (int i = 1; i < 7; i++) + if (CheckExtendedSurroundingCells(t, x, y, dx, dy, b) == false) { - var extendedCell = b.GetCell(x + i * dx, y + i * dy); - - if (extendedCell?.GetTile == null) - { - break; - } - - if (extendedCell.GetTile.GetColor != t.GetColor && extendedCell.GetTile.GetShape != t.GetShape) - { - return false; - } - - if (i == 6) - { - return false; - } + return false; } } @@ -270,7 +280,7 @@ namespace QwirkleClassLibrary public bool IsGameOver() { - return false; + return true; } } } \ No newline at end of file diff --git a/Qwirkle/QwirkleClassLibrary/IRules.cs b/Qwirkle/QwirkleClassLibrary/IRules.cs index 75d47a4..40fe258 100644 --- a/Qwirkle/QwirkleClassLibrary/IRules.cs +++ b/Qwirkle/QwirkleClassLibrary/IRules.cs @@ -14,6 +14,8 @@ namespace QwirkleClassLibrary bool IsMoveCorrect(Tile t, int x, int y, Board b); + bool CheckExtendedSurroundingCells(Tile tile, int x, int y, int dx, int dy, Board b); + bool IsGameOver(); } } diff --git a/Qwirkle/QwirkleConsoleApp/Program.cs b/Qwirkle/QwirkleConsoleApp/Program.cs index ef2f2a0..c4bfd54 100644 --- a/Qwirkle/QwirkleConsoleApp/Program.cs +++ b/Qwirkle/QwirkleConsoleApp/Program.cs @@ -195,7 +195,7 @@ static void MainMenu(Game game) game.DrawTiles(game.GetPlayingPlayer()); MenuSwitch(game); - } while (true); //while (game.GetPlayingPlayerPosition() != game.PlayerList.Count - 1); + } while (game.IsGameOver()); //while (game.GetPlayingPlayerPosition() != game.PlayerList.Count - 1); } static void MainGame()