From e1aac08c6b2b2c2c77a8821df962ed33c08a6a63 Mon Sep 17 00:00:00 2001 From: ryuga4 Date: Mon, 22 Apr 2019 03:16:30 +0200 Subject: [PATCH] dfs dziala prawie --- .../CzokoŚmieciarka.AI_Naive.csproj | 1 + .../CzokoŚmieciarka.AI_Naive/DFS.cs | 109 ++++++++++++++++++ .../CzokoŚmieciarka.DataModels.csproj | 4 + .../GarbageCollector/AGarbageCollector.cs | 6 +- .../Interfaces/IRoad1.cs | 12 ++ .../Interfaces/IRoad2.cs | 12 ++ .../Interfaces/IStep.cs | 6 +- .../Models/Coords.cs | 17 ++- .../Models/Road1.cs | 13 +++ .../Models/Road2.cs | 13 +++ .../Models/Steps/CollectStep.cs | 10 +- .../Models/Steps/MoveStep.cs | 7 +- .../Models/Steps/SpillStep.cs | 14 +-- Trunk/MonoGameView/Content/Content.mgcb | 44 ++++++- Trunk/MonoGameView/Content/collector.png | Bin 0 -> 369 bytes .../MonoGameView/Content/garbageCollector.png | Bin 60085 -> 0 bytes Trunk/MonoGameView/Content/grass.png | Bin 0 -> 184 bytes Trunk/MonoGameView/Content/house.png | Bin 18467 -> 420 bytes Trunk/MonoGameView/Content/intersection.png | Bin 3128 -> 0 bytes .../MonoGameView/Content/intersectionRED.png | Bin 3038 -> 0 bytes .../Content/{road.png => road1.png} | Bin Trunk/MonoGameView/Content/road2.png | Bin 0 -> 193 bytes Trunk/MonoGameView/Game1.cs | 79 +++++++++++-- Trunk/MonoGameView/GarbageCollector.cs | 40 +++++++ Trunk/MonoGameView/MonoGameView.csproj | 21 +++- Trunk/MonoGameView/Program.cs | 2 +- Trunk/MonoGameView/app.config | 3 + 27 files changed, 373 insertions(+), 40 deletions(-) create mode 100644 Trunk/Components/CzokoŚmieciarka.AI_Naive/DFS.cs create mode 100644 Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad1.cs create mode 100644 Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad2.cs create mode 100644 Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road1.cs create mode 100644 Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road2.cs create mode 100644 Trunk/MonoGameView/Content/collector.png delete mode 100644 Trunk/MonoGameView/Content/garbageCollector.png create mode 100644 Trunk/MonoGameView/Content/grass.png delete mode 100644 Trunk/MonoGameView/Content/intersection.png delete mode 100644 Trunk/MonoGameView/Content/intersectionRED.png rename Trunk/MonoGameView/Content/{road.png => road1.png} (100%) create mode 100644 Trunk/MonoGameView/Content/road2.png create mode 100644 Trunk/MonoGameView/GarbageCollector.cs create mode 100644 Trunk/MonoGameView/app.config diff --git a/Trunk/Components/CzokoŚmieciarka.AI_Naive/CzokoŚmieciarka.AI_Naive.csproj b/Trunk/Components/CzokoŚmieciarka.AI_Naive/CzokoŚmieciarka.AI_Naive.csproj index a297f33..72141fe 100644 --- a/Trunk/Components/CzokoŚmieciarka.AI_Naive/CzokoŚmieciarka.AI_Naive.csproj +++ b/Trunk/Components/CzokoŚmieciarka.AI_Naive/CzokoŚmieciarka.AI_Naive.csproj @@ -41,6 +41,7 @@ + diff --git a/Trunk/Components/CzokoŚmieciarka.AI_Naive/DFS.cs b/Trunk/Components/CzokoŚmieciarka.AI_Naive/DFS.cs new file mode 100644 index 0000000..10571e8 --- /dev/null +++ b/Trunk/Components/CzokoŚmieciarka.AI_Naive/DFS.cs @@ -0,0 +1,109 @@ +using CzokoŚmieciarka.DataModels.Enums; +using CzokoŚmieciarka.DataModels.Interfaces; +using CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector; +using CzokoŚmieciarka.DataModels.Interfaces.TrashCans; +using CzokoŚmieciarka.DataModels.Models; +using CzokoŚmieciarka.DataModels.Models.Steps; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CzokoŚmieciarka.AI_Naive +{ + public class DFS + { + public DFS() + { + } + int count = 0; + + + public List BestPath(AGarbageCollector collector, object[,] grid) + { + var r=Search(collector, grid, 0).Key; + Console.WriteLine(count); + return r; + } + + List PossibleSteps(AGarbageCollector collector, object[,] grid) + { + + + var result = new List(); + var moveSteps = new List() + { + new MoveStep(Direction.Up), + new MoveStep(Direction.Down), + new MoveStep(Direction.Left), + new MoveStep(Direction.Right) + }; + var filteredMoveSteps = new List(); + foreach (var item in moveSteps) + { + var copyCollector = (AGarbageCollector)collector.Clone(); + var copyGrid = (object[,])grid.Clone(); + try + { + item.Invoke(copyCollector, grid); + var gcx = copyCollector.Coords.X; + var gcy = copyCollector.Coords.Y; + if (grid[gcx, gcy] is IRoad1 || grid[gcx, gcy] is IGarbageLocalization || grid[gcx, gcy] is ADump) + { + result.Add(item); + } + } + catch (Exception e) + { + + } + } + + return result; + } + + KeyValuePair, int> Search(AGarbageCollector collector, object[,] grid, int length) + { + count++; + if (length > 40) return new KeyValuePair, int>(new List(), length); + var possibleSteps = PossibleSteps(collector, grid); + + foreach (var item in possibleSteps) + { + var copyCollector = (AGarbageCollector)collector.Clone(); + var copyGrid = (object[,])grid.Clone(); + + + + + + + + //if (copyGrid[copyCollector.Coords.X, copyCollector.Coords.Y] is IRoad1) copyGrid[copyCollector.Coords.X, copyCollector.Coords.Y] = new Road2(); + item.Invoke(copyCollector, copyGrid); + var s = Search(copyCollector, copyGrid, length + 1); + if (s.Key != null) + { + s.Key.Insert(0, item); + return s; + } + } + return new KeyValuePair, int>(null, length); + /*var min = int.MaxValue; + var min_index = 0; + for (int i = 0; i < mapped.Count; i++) + { + if (mapped.ElementAt(i).Value <= min) + { + min = mapped.ElementAt(i).Value; + min_index = i; + } + } + return mapped.ElementAt(min_index); + */ + + + } + } +} diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/CzokoŚmieciarka.DataModels.csproj b/Trunk/Components/CzokoŚmieciarka.DataModels/CzokoŚmieciarka.DataModels.csproj index de4f401..d200d86 100644 --- a/Trunk/Components/CzokoŚmieciarka.DataModels/CzokoŚmieciarka.DataModels.csproj +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/CzokoŚmieciarka.DataModels.csproj @@ -51,6 +51,8 @@ + + @@ -60,6 +62,8 @@ + + diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/GarbageCollector/AGarbageCollector.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/GarbageCollector/AGarbageCollector.cs index bb77904..c071ed9 100644 --- a/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/GarbageCollector/AGarbageCollector.cs +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/GarbageCollector/AGarbageCollector.cs @@ -9,7 +9,7 @@ using CzokoŚmieciarka.DataModels.Models; namespace CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector { - public abstract class AGarbageCollector : IGarbageCollector + public abstract class AGarbageCollector : IGarbageCollector, ICloneable { public AGarbageCollector(Coords startPosition, IEnumerable trashContainers, int columns, int rows) { @@ -57,9 +57,9 @@ namespace CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector Coords.X += 1; } - public object Clone() + public virtual object Clone() { - return this.MemberwiseClone(); + throw new NotImplementedException(); } public IEnumerable TrashContainers { get; } diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad1.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad1.cs new file mode 100644 index 0000000..a31b73c --- /dev/null +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad1.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CzokoŚmieciarka.DataModels.Interfaces +{ + public interface IRoad1 + { + } +} diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad2.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad2.cs new file mode 100644 index 0000000..ee9254e --- /dev/null +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IRoad2.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CzokoŚmieciarka.DataModels.Interfaces +{ + public interface IRoad2 + { + } +} diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IStep.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IStep.cs index fa8c4ad..10f537f 100644 --- a/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IStep.cs +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Interfaces/IStep.cs @@ -1,7 +1,9 @@ -namespace CzokoŚmieciarka.DataModels.Interfaces +using CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector; + +namespace CzokoŚmieciarka.DataModels.Interfaces { public interface IStep { - void Invoke(); + void Invoke(IGarbageCollector collector, object [,] grid); } } diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Coords.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Coords.cs index b1d9ede..b6d9c21 100644 --- a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Coords.cs +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Coords.cs @@ -34,6 +34,21 @@ namespace CzokoŚmieciarka.DataModels.Models public static Coords operator -(Coords a, Coords b) { return new Coords(a.X - b.X, a.Y - b.Y); - } + } + + public override string ToString() + { + return base.ToString(); + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } } } diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road1.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road1.cs new file mode 100644 index 0000000..88f8ec8 --- /dev/null +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road1.cs @@ -0,0 +1,13 @@ +using CzokoŚmieciarka.DataModels.Interfaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CzokoŚmieciarka.DataModels.Models +{ + public class Road1 :IRoad1 + { + } +} diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road2.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road2.cs new file mode 100644 index 0000000..e9a4093 --- /dev/null +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Road2.cs @@ -0,0 +1,13 @@ +using CzokoŚmieciarka.DataModels.Interfaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CzokoŚmieciarka.DataModels.Models +{ + public class Road2 : IRoad2 + { + } +} diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/CollectStep.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/CollectStep.cs index 48d5a81..8c2d369 100644 --- a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/CollectStep.cs +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/CollectStep.cs @@ -10,19 +10,16 @@ namespace CzokoŚmieciarka.DataModels.Models.Steps { public class CollectStep : IStep { - public CollectStep(IGarbageCollector garbageCollector, IGarbageLocalization garbageLocalization, ITypeOfGarbage typeOfGarbage) + public CollectStep(ITypeOfGarbage typeOfGarbage) { - this._garbageCollector = garbageCollector; - this._garbageLocalization = garbageLocalization; this._typeOfGarbage = typeOfGarbage; } - private IGarbageCollector _garbageCollector; private ITypeOfGarbage _typeOfGarbage; - private IGarbageLocalization _garbageLocalization; - public void Invoke() + public void Invoke(IGarbageCollector garbageCollector, object [,] grid) { + /* if(_garbageCollector.Coords != _garbageLocalization.Coords) throw new WrongPositionException("Śmieciarka nie jest w miejscu oderbania śmieci"); @@ -33,6 +30,7 @@ namespace CzokoŚmieciarka.DataModels.Models.Steps throw new TrashContainerNotFound($"Nie znaleziono kontenera na {_typeOfGarbage.GarbageType}."); _garbageCollector.TrashContainers.First(t => t.TypeOfGarbage == _typeOfGarbage).AddGarbage(garbage); + */ } } } diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/MoveStep.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/MoveStep.cs index 49ffe36..ba757ba 100644 --- a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/MoveStep.cs +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/MoveStep.cs @@ -11,17 +11,18 @@ namespace CzokoŚmieciarka.DataModels.Models.Steps { public class MoveStep : IStep { - public MoveStep(Direction direction, IGarbageCollector garbageCollector) + public MoveStep(Direction direction) { - this._garbageCollector = garbageCollector; this._direction = direction; } private Direction _direction; private IGarbageCollector _garbageCollector; - public void Invoke() + public void Invoke(IGarbageCollector _garbageCollector, object[,] grid) { + if(grid[_garbageCollector.Coords.X, _garbageCollector.Coords.Y] is Road1) + grid[_garbageCollector.Coords.X, _garbageCollector.Coords.Y] = new Road2(); switch (_direction) { case Direction.Up: _garbageCollector.MoveUp(); break; diff --git a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/SpillStep.cs b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/SpillStep.cs index a9d8cb9..e898bf3 100644 --- a/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/SpillStep.cs +++ b/Trunk/Components/CzokoŚmieciarka.DataModels/Models/Steps/SpillStep.cs @@ -10,19 +10,15 @@ namespace CzokoŚmieciarka.DataModels.Models.Steps { public class SpillStep : IStep { - public SpillStep(IGarbageCollector garbageCollector, ADump dump, ITypeOfGarbage typeOfGarbage) + public SpillStep(ITypeOfGarbage typeOfGarbage) { - this._garbageCollector = garbageCollector; - this._dump = dump; this._typeOfGarbage = typeOfGarbage; } - - private IGarbageCollector _garbageCollector; - private ADump _dump; + private ITypeOfGarbage _typeOfGarbage; - public void Invoke() - { + public void Invoke(IGarbageCollector garbageCollector, object [,] grid) + {/* if(_garbageCollector.Coords != _dump.Coords) throw new WrongPositionException("Śmieciarka nie na terenie podanego wyspiska"); @@ -36,7 +32,7 @@ namespace CzokoŚmieciarka.DataModels.Models.Steps .Select(t => t.TakeGarbage()) .Aggregate((a, b) => a + b); - _dump.AddGarbage(garbage); + _dump.AddGarbage(garbage);*/ } } } diff --git a/Trunk/MonoGameView/Content/Content.mgcb b/Trunk/MonoGameView/Content/Content.mgcb index 6a07ece..60deb1d 100644 --- a/Trunk/MonoGameView/Content/Content.mgcb +++ b/Trunk/MonoGameView/Content/Content.mgcb @@ -13,7 +13,7 @@ #---------------------------------- Content ---------------------------------# -#begin intersection.png +#begin collector.png /importer:TextureImporter /processor:TextureProcessor /processorParam:ColorKeyColor=255,0,255,255 @@ -23,9 +23,9 @@ /processorParam:ResizeToPowerOfTwo=False /processorParam:MakeSquare=False /processorParam:TextureFormat=Color -/build:intersection.png +/build:collector.png -#begin road.png +#begin grass.png /importer:TextureImporter /processor:TextureProcessor /processorParam:ColorKeyColor=255,0,255,255 @@ -35,5 +35,41 @@ /processorParam:ResizeToPowerOfTwo=False /processorParam:MakeSquare=False /processorParam:TextureFormat=Color -/build:road.png +/build:grass.png + +#begin house.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:house.png + +#begin road1.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:road1.png + +#begin road2.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:road2.png diff --git a/Trunk/MonoGameView/Content/collector.png b/Trunk/MonoGameView/Content/collector.png new file mode 100644 index 0000000000000000000000000000000000000000..296e3a55a75b837a2014eb3f840b34f00be98b7a GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-wj^(N7l!{JxM1({$v_d#0*}aI z1_nK45N51cYF`EvWH0gbb!C6dA}X${9lhtuZlI84iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0|PZ!6KjC*fq+~z&3z~fqYh0!SI_=yd75B%(D(UQ7-ea5!$ z9uq$uek{@B8KvAJ;KZTWA|T{6VeZS-D>FaHn(uQ_XYOAU>=!nvW>a@@7hHMn!e1tl)r+dNA0!8i@THeZQY}toO}H=&+87=Q!m!0 z>dyOLn02?e=xWxI_`n@oBLp;^1iNZ}P5QG})bZa%4c(4;hcteFwc5SlTciBiCO4)> zI}cW=o^qX#{Ncw^kH!v_=kD)5X8U-wv?x8>=_PnYf5u}OKY>=?2V0(AmjQZ`!PC{x JWt~$(695{EmOTIf literal 0 HcmV?d00001 diff --git a/Trunk/MonoGameView/Content/garbageCollector.png b/Trunk/MonoGameView/Content/garbageCollector.png deleted file mode 100644 index 3283e8393e6ddbaed62c1449f8d4115c7bf98f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60085 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 JRD$1!{yza;p5y=k diff --git a/Trunk/MonoGameView/Content/grass.png b/Trunk/MonoGameView/Content/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f1991d7c6d55d8bcfbe90d91cfa91c1ba120f4 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1SBWM%0B~AjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL0?Z7$B+p3x91E685DRJ47V&;p7vUR_ol=@ sJ*J{}=i0M6qZUnDp-Kd`FXydI^v2J@^Yd?S02<8T>FVdQ&MBb@0P4~`DF6Tf literal 0 HcmV?d00001 diff --git a/Trunk/MonoGameView/Content/house.png b/Trunk/MonoGameView/Content/house.png index c69da1ee4a26ee576537411e4fe25d1fcbe937ca..b2bcc94b8ebfba72fcc7d6b1a6bc0d71ddb1f21a 100644 GIT binary patch delta 392 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 Yl8;x-TtE0?AC>QH9gkOhd-2Er19UD<3jhEB diff --git a/Trunk/MonoGameView/Content/intersection.png b/Trunk/MonoGameView/Content/intersection.png deleted file mode 100644 index c57ed66a6a43940ec9ece376e866d0c9537cab33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3128 zcmeAS@N?(olHy`uVBq!ia0y~yU@8J(4mO~OgP!hGAjMc5RtvY3H^?+6GpPSxg*?YcQW5v|_QgylM+VnG^Q95}37&_i zs6_Oyl{m<#sNlKp%OlGTZ?qHa^q4ol^>2UuuJiQAJ=YFPB%X!yD7c+qWN_iMWN6S(WM>dieZs)7s6~dsVafz%h7KX1YXhD57!RtvY3H^?+6GpPSxg /// This is the main type for your game. @@ -12,8 +20,16 @@ namespace MonoGameView { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; - Texture2D road; + Texture2D road1; + Texture2D road2; + Texture2D grass; Vector2 roadPos; + float timer; + const float TIMER = 0.2f; + int stepN; + List steps; + GarbageCollector collector; + object[,] grid = new object[10, 10]; public Game1() { graphics = new GraphicsDeviceManager(this); @@ -22,6 +38,8 @@ namespace MonoGameView graphics.PreferredBackBufferHeight = 500; } + + ///

/// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic @@ -32,6 +50,24 @@ namespace MonoGameView { // TODO: Add your initialization logic here roadPos = new Vector2(0, 0); + timer = 0.2f; + for (int x=0;x<10;x++) + { + for (int y=0;y<10;y++) + { + if (x % 2 == 0 || y % 2 == 0) grid[x, y] = new Road1(); + else grid[x, y] = null; + } + } + + + collector = new GarbageCollector(Content,new Coords(0, 0), new List(), 10, 10); + + + stepN = 0; + var dfs = new DFS(); + steps = dfs.BestPath(collector, grid); + base.Initialize(); } @@ -43,7 +79,9 @@ namespace MonoGameView { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); - road = Content.Load("road"); + road1 = Content.Load("road1"); + road2 = Content.Load("road2"); + grass = Content.Load("grass"); // TODO: use this.Content to load your game content here } @@ -65,11 +103,24 @@ namespace MonoGameView { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) Exit(); - + var elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; + timer -= elapsed; + if (timer<0) + { + timer = TIMER; + if (steps.Any()) + { + steps.First().Invoke(collector, grid); + steps.RemoveAt(0); + } + } // TODO: Add your update logic here - double time = gameTime.TotalGameTime.TotalMilliseconds / 1000 * Math.PI; - roadPos.X = (float) (225 + 200*Math.Sin(time)); - roadPos.Y = (float)(225 + 200*Math.Cos(time)); + + + + + + base.Update(gameTime); } @@ -82,7 +133,17 @@ namespace MonoGameView GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); - spriteBatch.Draw(road, roadPos, Color.White); + for (int x = 0; x < 10; x++) + { + for (int y = 0; y < 10; y++) + { + if (grid[x, y] is Road1) spriteBatch.Draw(road1, new Vector2(x*50,y*50), Color.White); + else if (grid[x,y] is Road2) spriteBatch.Draw(road2, new Vector2(x * 50, y * 50), Color.White); + else spriteBatch.Draw(grass, new Vector2(x * 50, y * 50), Color.White); + } + } + collector.Draw(spriteBatch); + spriteBatch.End(); // TODO: Add your drawing code here diff --git a/Trunk/MonoGameView/GarbageCollector.cs b/Trunk/MonoGameView/GarbageCollector.cs new file mode 100644 index 0000000..e2e11a2 --- /dev/null +++ b/Trunk/MonoGameView/GarbageCollector.cs @@ -0,0 +1,40 @@ +using CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector; +using CzokoŚmieciarka.DataModels.Interfaces.TrashCans; +using CzokoŚmieciarka.DataModels.Models; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MonoGameView +{ + public class GarbageCollector : AGarbageCollector + { + public Texture2D Image { get; set; } + public GarbageCollector(ContentManager content, Coords c, List l, int rows, int cols) : base(c,l,rows,cols) + { + Image = content.Load("collector"); + } + public GarbageCollector(Texture2D image, Coords c, List l, int rows, int cols) : base(c, l, rows, cols) + { + Image = image; + } + + + public void Draw(SpriteBatch batch) + { + batch.Draw(Image, new Vector2(Coords.X*50, Coords.Y*50), Color.White); + } + + + public override object Clone() + { + var cloneList = new List(); + return new GarbageCollector(Image, new Coords(Coords.X,Coords.Y), cloneList, rows,columns); + } + } +} diff --git a/Trunk/MonoGameView/MonoGameView.csproj b/Trunk/MonoGameView/MonoGameView.csproj index 8fc56f6..318153e 100644 --- a/Trunk/MonoGameView/MonoGameView.csproj +++ b/Trunk/MonoGameView/MonoGameView.csproj @@ -1,5 +1,5 @@  - + Debug @@ -13,7 +13,8 @@ MonoGameView 512 Windows - v4.5 + v4.6.1 + x86 @@ -42,6 +43,7 @@ + @@ -57,8 +59,23 @@ + + + + {10e77bbe-55e1-483d-a456-0e94eac9b24a} + CzokoŚmieciarka.AI_Naive + + + {a3d5da96-69d7-463f-b1ee-6fc70716e3b2} + CzokoŚmieciarka.DataModels.GeneralModels + + + {f2e11fee-c5ac-47d2-ba9c-819909b6dff7} + CzokoŚmieciarka.DataModels + +