This commit is contained in:
Michał Dulski 2019-06-11 23:05:31 +02:00
parent f6e30ed848
commit c3c0b57036
4 changed files with 181 additions and 7 deletions

View File

@ -6,12 +6,15 @@ using CzokoŚmieciarka.MonoGameView.DataModels.Models;
using CzokoŚmieciarka.MonoGameView.DataModels.Models.Steps; using CzokoŚmieciarka.MonoGameView.DataModels.Models.Steps;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Content;
using System.Threading; using System.Threading;
using CzokoŚmieciarka.MonoGameView.DataModels.GeneralModels.Models; using CzokoŚmieciarka.MonoGameView.DataModels.GeneralModels.Models;
using Microsoft.Xna.Framework.Graphics;
using MonoGameView.DataModels.Models; using MonoGameView.DataModels.Models;
namespace MonoGameView.Algorithms namespace MonoGameView.Algorithms
@ -55,23 +58,183 @@ namespace MonoGameView.Algorithms
var dataToLog = Jazda(r.Item1, CopyGrid(grid), (GarbageCollector) collector.Clone()).ToList(); var dataToLog = Jazda(r.Item1, CopyGrid(grid), (GarbageCollector) collector.Clone()).ToList();
/*Oznaczenia
*0 - trawa, nie do poruszania
*10 - droga po której można się poruszać
*11 - droga po której nie można się poruszać
*20 - dom z którego można wziąć śmieci
*21 - dom z którego nie można wziąć śmieci w tym momencie
*22 - dom pusty, bez śmieci
*30 - wysypisko szkła
*31 - wysypisko plastików i metali
*32 - wysypisko odpadów organicznych
*33 - wysypisko papieru
*40 - ruch w górę
*41 - ruch w prawo
*42 - ruch w dół
*43 - ruch w lewo
*50 - zbierz śmieci
*51 - wyrzuć śmieci
*/
Console.WriteLine($"Counts : {count}"); Console.WriteLine($"Counts : {count}");
if (r == null) return new Tuple<List<IStep>, int, List<ICloneable[,]>>(new List<IStep>(), 0, new List<ICloneable[,]>()); using (StreamWriter writer = new StreamWriter("chuj.txt"))
return r; {
foreach (var item in dataToLog)
{
string line = "";
if (item.Key is MoveStep)
{
MoveStep move = (item.Key as MoveStep);
String[,] mygrid = item.Value;
switch (move.GetDirection().ToString())
{
case "Up":
line += "40";
break;
case "Right":
line += "41";
break;
case "Down":
line += "42";
break;
case "Left":
line += "43";
break;
}
foreach (string field in mygrid)
{
switch (field)
{
case "grass":
line += "," + "0";
break;
case "road1":
line += "," + "10";
break;
case "road2":
line += "," + "11";
break;
case "house":
line += "," + "20";
break;
case "emptyHouse":
line += "," + "22";
break;
case "Glass":
line += "," + "30";
break;
case "PlasticMetal":
line += "," + "31";
break;
case "Organic":
line += "," + "32";
break;
case "Paper":
line += "," + "33";
break;
}
}
}
else if (item.Key is CollectStep)
{
CollectStep collect = (item.Key as CollectStep);
String[,] mygrid = item.Value;
line += "50";
foreach (string field in mygrid)
{
switch (field)
{
case "grass":
line += "," + "0";
break;
case "road1":
line += "," + "10";
break;
case "road2":
line += "," + "11";
break;
case "house":
line += "," + "20";
break;
case "emptyHouse":
line += "," + "22";
break;
case "Glass":
line += "," + "30";
break;
case "PlasticMetal":
line += "," + "31";
break;
case "Organic":
line += "," + "32";
break;
case "Paper":
line += "," + "33";
break;
}
}
}
else
{
SpillStep spill = (item.Key as SpillStep);
String[,] mygrid = item.Value;
line += "51";
foreach (string field in mygrid)
{
switch (field)
{
case "grass":
line += "," + "0";
break;
case "road1":
line += "," + "10";
break;
case "road2":
line += "," + "11";
break;
case "house":
line += "," + "20";
break;
case "emptyHouse":
line += "," + "22";
break;
case "Glass":
line += "," + "30";
break;
case "PlasticMetal":
line += "," + "31";
break;
case "Organic":
line += "," + "32";
break;
case "Paper":
line += "," + "33";
break;
}
}
}
writer.WriteLine(line);
}
}
if (r == null)
return new Tuple<List<IStep>, int, List<ICloneable[,]>>(new List<IStep>(), 0,
new List<ICloneable[,]>());
return r;
} }
public IEnumerable<KeyValuePair<IStep, ICloneable[,]>> Jazda(List<IStep> steps, ICloneable[,] grid, GarbageCollector collector) public IEnumerable<KeyValuePair<IStep, String[,]>> Jazda(List<IStep> steps, ICloneable[,] grid, GarbageCollector collector)
{ {
for (int i =0;i<steps.Count();i++) for (int i =0;i<steps.Count();i++)
{ {
var minGrid = new ICloneable[5, 5]; var minGrid = new String[5, 5];
for (int x = collector.Coords.X-2; x <= collector.Coords.X+2;x++) for (int x = collector.Coords.X-2; x <= collector.Coords.X+2;x++)
{ {
@ -97,8 +260,7 @@ namespace MonoGameView.Algorithms
} }
} }
} }
yield return new KeyValuePair<IStep, ICloneable[,]>(steps[i], minGrid); yield return new KeyValuePair<IStep, String[,]>(steps[i], minGrid);

View File

@ -22,6 +22,10 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Models.Steps
private GarbageType _typeOfGarbage; private GarbageType _typeOfGarbage;
public GarbageType GetTypeOfGarbage()
{
return _typeOfGarbage;
}
public bool Invoke(IGarbageCollector _garbageCollector, ICloneable [,] grid) public bool Invoke(IGarbageCollector _garbageCollector, ICloneable [,] grid)
{ {

View File

@ -20,6 +20,10 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Models.Steps
private Direction _direction; private Direction _direction;
private IGarbageCollector _garbageCollector; private IGarbageCollector _garbageCollector;
public Direction GetDirection()
{
return _direction;
}
public bool Invoke(IGarbageCollector _garbageCollector, ICloneable [,] grid) public bool Invoke(IGarbageCollector _garbageCollector, ICloneable [,] grid)
{ {
if(grid[_garbageCollector.Coords.X, _garbageCollector.Coords.Y] is Road1) if(grid[_garbageCollector.Coords.X, _garbageCollector.Coords.Y] is Road1)

View File

@ -20,6 +20,10 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Models.Steps
private GarbageType _typeOfGarbage; private GarbageType _typeOfGarbage;
public GarbageType GetTypeOfGarbage()
{
return _typeOfGarbage;
}
public bool Invoke(IGarbageCollector _garbageCollector, ICloneable [,] grid) public bool Invoke(IGarbageCollector _garbageCollector, ICloneable [,] grid)
{ {
var _dump = (ADump)grid[_garbageCollector.Coords.X, _garbageCollector.Coords.Y]; var _dump = (ADump)grid[_garbageCollector.Coords.X, _garbageCollector.Coords.Y];