naprawione smieci

This commit is contained in:
ryuga4 2019-05-13 14:12:28 +02:00
parent e861f1fa7b
commit a70153a4d3
4 changed files with 17 additions and 12 deletions

View File

@ -141,7 +141,7 @@ namespace CzokoŚmieciarka.MonoGameView.Algorithms
Console.WriteLine(collector.HouseCounter); Console.WriteLine(collector.HouseCounter);
if (collector.Counter> 100 || length > 100) if (collector.Counter> 100 || length > 1000)
return new KeyValuePair<List<IStep>, int>(null,length); return new KeyValuePair<List<IStep>, int>(null,length);
count++; count++;
if (Houses.All(c => (grid[c.X, c.Y] as IGarbageLocalization).TrashCans.All(j => j.FillPercent == 0.0)) if (Houses.All(c => (grid[c.X, c.Y] as IGarbageLocalization).TrashCans.All(j => j.FillPercent == 0.0))

View File

@ -30,17 +30,17 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.TrashCans
get { return ((double)Garbage.Volume) / this.MaxVolume; } get { return ((double)Garbage.Volume) / this.MaxVolume; }
} }
public virtual void AddGarbage(AGarbage garbage) public virtual bool AddGarbage(AGarbage garbage)
{ {
//if (this.TypeOfGarbage.GarbageType != garbage.TypeOfGarbage.GarbageType) //if (this.TypeOfGarbage.GarbageType != garbage.TypeOfGarbage.GarbageType)
// throw new Exception("You cannot add up different type garbage!"); // throw new Exception("You cannot add up different type garbage!");
var newGarbage = this.Garbage + garbage; var newGarbage = this.Garbage + garbage;
//if (newGarbage.Volume > this.MaxVolume) if (newGarbage.Volume > this.MaxVolume)
// throw new Exception("Trash overload"); return false;
this.Garbage = newGarbage; this.Garbage = newGarbage;
return; return true;
} }
public virtual object Clone() public virtual object Clone()
@ -50,9 +50,9 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.TrashCans
public virtual AGarbage TakeGarbage() public virtual AGarbage TakeGarbage()
{ {
if (this.Garbage.Weight == 0) if (this.Garbage.Weight == 0)
throw new Exception("Pusty śmietnik matole"); return null;
var result = (AGarbage)this.Garbage.Clone(); var result = (AGarbage)this.Garbage.Clone();
this.Garbage.Weight = 0; this.Garbage.Weight = 0;
return result; return result;

View File

@ -5,6 +5,7 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using CzokoŚmieciarka.MonoGameView.DataModels.Enums; using CzokoŚmieciarka.MonoGameView.DataModels.Enums;
using CzokoŚmieciarka.MonoGameView.DataModels.Exceptions; using CzokoŚmieciarka.MonoGameView.DataModels.Exceptions;
using CzokoŚmieciarka.MonoGameView.DataModels.GeneralModels.Models;
using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces;
using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.GarbageCollector; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.GarbageCollector;
using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.TrashCans; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.TrashCans;
@ -28,13 +29,15 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Models.Steps
var trashCans = _garbageLocalization.TrashCans.Where(t => t.TypeOfGarbage.GarbageType == _typeOfGarbage); var trashCans = _garbageLocalization.TrashCans.Where(t => t.TypeOfGarbage.GarbageType == _typeOfGarbage);
if (!trashCans.Any()) return false; if (!trashCans.Any()) return false;
var garbage = trashCans.Select(t => t.TakeGarbage()).Aggregate((a,b)=>a+b); var preGarbage = trashCans.Select(t => t.TakeGarbage()).ToList();
if (preGarbage.Any(x => x == null)) return false;
var garbage = preGarbage.Aggregate((a,b)=>a+b);
if (_garbageCollector.TrashContainers.All(c => c.TypeOfGarbage.GarbageType != _typeOfGarbage)) if (_garbageCollector.TrashContainers.All(c => c.TypeOfGarbage.GarbageType != _typeOfGarbage))
return false; return false;
_garbageCollector.TrashContainers.First(t => t.TypeOfGarbage.GarbageType == _typeOfGarbage).AddGarbage(garbage); var r = _garbageCollector.TrashContainers.First(t => t.TypeOfGarbage.GarbageType == _typeOfGarbage).AddGarbage(garbage);
if (!r) return false;
for (int x= 0;x < grid.GetLength(0); x++){ for (int x= 0;x < grid.GetLength(0); x++){
for (int y = 0; y < grid.GetLength(1); y++) for (int y = 0; y < grid.GetLength(1); y++)
{ {

View File

@ -32,8 +32,10 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Models.Steps
var containers = _garbageCollector.TrashContainers.Where(t => t.TypeOfGarbage.GarbageType == _typeOfGarbage && t.FillPercent > 0); var containers = _garbageCollector.TrashContainers.Where(t => t.TypeOfGarbage.GarbageType == _typeOfGarbage && t.FillPercent > 0);
if (containers.Any()) if (containers.Any())
{ {
var garbage = containers.Select(t => t.TakeGarbage()).Aggregate((a, b) => a + b); var preGarbage = containers.Select(t => t.TakeGarbage()).ToList();
_dump.AddGarbage(garbage); if (preGarbage.Any(x => x == null)) return false;
var garbage = preGarbage.Aggregate((a, b) => a + b);
if (!_dump.AddGarbage(garbage)) return false;
for (int x = 0; x < grid.GetLength(0); x++) for (int x = 0; x < grid.GetLength(0); x++)
{ {
for (int y = 0; y < grid.GetLength(1); y++) for (int y = 0; y < grid.GetLength(1); y++)