From ad853fcceafef37234302ba409405206b9a3d93e Mon Sep 17 00:00:00 2001 From: Elias Leinenweber <elias.leinenweber@etu.unistra.fr> Date: Tue, 30 Mar 2021 17:50:19 +0200 Subject: [PATCH] Meilleur respect de MVC --- Wanderer.csproj | 1 + model/Improvement.cs | 11 ++++++++++ model/Map.cs | 7 ++++--- model/Tile.cs | 14 ++++++++++++- view/Controls/MapView.cs | 1 + view/Controls/TileView.cs | 15 +------------ view/FormJeu.cs | 44 +++++++++++++++++++++++++++++---------- 7 files changed, 64 insertions(+), 29 deletions(-) create mode 100644 model/Improvement.cs diff --git a/Wanderer.csproj b/Wanderer.csproj index add06fe..1b05d80 100644 --- a/Wanderer.csproj +++ b/Wanderer.csproj @@ -47,6 +47,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="model\Improvement.cs" /> <Compile Include="model\Player.cs" /> <Compile Include="view\Controls\MapView.Designer.cs" /> <Compile Include="view\FormFin.cs"> diff --git a/model/Improvement.cs b/model/Improvement.cs new file mode 100644 index 0000000..e98d7fa --- /dev/null +++ b/model/Improvement.cs @@ -0,0 +1,11 @@ +namespace Wanderer.model +{ + public enum Improvement + { + TrainStation, + Path, + Refuge, + Club, + Factory + } +} \ No newline at end of file diff --git a/model/Map.cs b/model/Map.cs index fd73419..b5ad3de 100644 --- a/model/Map.cs +++ b/model/Map.cs @@ -1,6 +1,4 @@ -using Wanderer.model; - -namespace Wanderer +namespace Wanderer.model { public class Map { @@ -9,6 +7,9 @@ namespace Wanderer public Map(int x, int y) { _tiles = new Tile[x, y]; + for (int i = 0; i < x; ++i) + for (int j = 0; j < y; ++j) + _tiles[i, j] = new Tile(); } public Tile[,] Tiles diff --git a/model/Tile.cs b/model/Tile.cs index e211908..42273a9 100644 --- a/model/Tile.cs +++ b/model/Tile.cs @@ -2,7 +2,19 @@ { public class Tile { + private Improvement _improvement; public Terrain Terrain { get; set; } - public Player Owner { get; set; } + public Player Owner { get; set; } + public bool HasChanged { get; set; } + + public Improvement Improvement + { + get => _improvement; + set + { + _improvement = _improvement == 0 ? value : _improvement; + HasChanged = true; + } + } } } \ No newline at end of file diff --git a/view/Controls/MapView.cs b/view/Controls/MapView.cs index 38abee5..f01af9b 100644 --- a/view/Controls/MapView.cs +++ b/view/Controls/MapView.cs @@ -2,6 +2,7 @@ using System.Drawing.Design; using System.Windows.Forms; using System.Windows.Forms.Design; +using Wanderer.model; namespace Wanderer.view.Controls { diff --git a/view/Controls/TileView.cs b/view/Controls/TileView.cs index 7902f69..15ea695 100644 --- a/view/Controls/TileView.cs +++ b/view/Controls/TileView.cs @@ -7,7 +7,7 @@ namespace Wanderer.view.Controls { public class TileView : Button { - private Tile model; + public Tile model { get; } public TileView(Tile tile) { @@ -36,18 +36,5 @@ namespace Wanderer.view.Controls { MapView.SelectedTile = this; } - - private Image imageFromTerrain() - { - switch (model.Terrain) - { - case Terrain.Plains: - break; - case Terrain.Hills: - break; - } - - return null; - } } } \ No newline at end of file diff --git a/view/FormJeu.cs b/view/FormJeu.cs index 78fb30c..b369039 100644 --- a/view/FormJeu.cs +++ b/view/FormJeu.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Wanderer.model; using Wanderer.view.Controls; namespace Wanderer.view @@ -61,6 +62,11 @@ namespace Wanderer.view lblArgent.Text = "Argent :" + nombreMarks; lblMarcheur.Text = "Marcheurs : " + nombreRandonneurs; lblTour.Text = "Nombre d'action : " + nombreTour++; + if (MapView.SelectedTile != null && MapView.SelectedTile.model.HasChanged) + { + MapView.SelectedTile.Image = image(); + MapView.SelectedTile.model.HasChanged = false; + } } @@ -77,20 +83,18 @@ namespace Wanderer.view private void btnUsine_Click(object sender, EventArgs e) { - if(nombreMarks >= 60) - { - MapView.SelectedTile.Image = btnUsine.Image; - nombreUsine++; - nombreMarks -= 40; - updateLabels(); - } + if (nombreMarks < 60) return; + MapView.SelectedTile.model.Improvement = Improvement.Factory; + nombreUsine++; + nombreMarks -= 40; + updateLabels(); } private void btnTrain_Click(object sender, EventArgs e) { if(nombreMarks >= 10 && gareCreated) { - MapView.SelectedTile.Image = btnTrain.Image; + MapView.SelectedTile.model.Improvement = Improvement.TrainStation; gareCreated = false; nombreMarks -= 10; updateLabels(); @@ -105,7 +109,7 @@ namespace Wanderer.view } if (nombreMarks >= 30) { - MapView.SelectedTile.Image = btnRefuge.Image; + MapView.SelectedTile.model.Improvement = Improvement.Refuge; nombreRefuge++; nombreMarks -= 30; updateLabels(); @@ -121,7 +125,7 @@ namespace Wanderer.view } if (nombreMarks >= 10) { - MapView.SelectedTile.Image = btnChemin.Image; + MapView.SelectedTile.model.Improvement = Improvement.Path; nombreChemin++; nombreMarks -= 10; updateLabels(); @@ -132,7 +136,7 @@ namespace Wanderer.view { if(nombreMarks >= 15) { - MapView.SelectedTile.Image = btnClub.Image; + MapView.SelectedTile.model.Improvement = Improvement.Club; nombreClub++; nombreMarks -= 10; updateLabels(); @@ -165,6 +169,24 @@ namespace Wanderer.view Application.Exit(); } + public Image image() + { + switch (MapView.SelectedTile.model.Improvement) + { + case Improvement.Club: + return btnClub.Image; + case Improvement.Factory: + return btnUsine.Image; + case Improvement.Path: + return btnChemin.Image; + case Improvement.Refuge: + return btnRefuge.Image; + case Improvement.TrainStation: + return btnTrain.Image; + } + + return null; + } } } -- GitLab