diff --git a/Game1/Sources/Crops/Crops.cs b/Game1/Sources/Crops/Crops.cs index 4e0f21c..d4fd891 100644 --- a/Game1/Sources/Crops/Crops.cs +++ b/Game1/Sources/Crops/Crops.cs @@ -133,7 +133,7 @@ class Crops } else if (Status == 2) //dirt { - return 8; + return 16; } else { diff --git a/Game1/Sources/Pathing/A-Star/Astar.cs b/Game1/Sources/Pathing/A-Star/Astar.cs index 0fff178..2e0ec31 100644 --- a/Game1/Sources/Pathing/A-Star/Astar.cs +++ b/Game1/Sources/Pathing/A-Star/Astar.cs @@ -75,9 +75,9 @@ class Astar if (currDir == newDir) return 0; else if (Math.Abs(currDir - newDir) == 1 || Math.Abs(currDir - newDir) == 3) - return 20; + return 3; else if (Math.Abs(currDir - newDir) == 0 || Math.Abs(currDir - newDir) == 2) - return 900; + return 18; return 0; } diff --git a/Game1/Sources/Smart/AI.cs b/Game1/Sources/Smart/AI.cs index db58e07..06327d5 100644 --- a/Game1/Sources/Smart/AI.cs +++ b/Game1/Sources/Smart/AI.cs @@ -45,17 +45,19 @@ class AI inventory.printItems(input, spriteBatch, Bold); } - - public Vector2 newTarget() + public Path newTarget() { PriorityQueueC5 queue = new PriorityQueueC5(); int score = 0; int count = 0; int testsize = 2; - Vector2 newTarget; + Path newTarget; if (tractorPos != housePos) if (inventory.getWeight() == inventory.getMaxWeight() || inventory.isMissingFertilizer()) - return housePos; + { + astar.update(farm.getCrops(), Size, tractorPos, housePos, housePos, Rotation); + return astar.FindPath(true); + } while (true) { for (int x = 0; x < Size.X; x++) @@ -63,7 +65,7 @@ class AI { if (farm.getCrop(x, y).getStatus() >= 2 && tractorPos != new Vector2(x, y)) { - if (farm.getCrop(x, y).isSaturated(5) || !farm.getCrop(x, y).belowCapacity()) + if (farm.getCrop(x, y).getStatus() != 2 && (farm.getCrop(x, y).isSaturated(5) || !farm.getCrop(x, y).belowCapacity())) { //do nothing } @@ -100,7 +102,7 @@ class AI { farm.getCrop(x, y).Fertilize(fertilizer); fertilizer = fertilizerHolder.GetFertilizer(Engine.PredictFertilizer(farm.getCrop(x, y), farm.getPresetCropTypes(farm.getCrop(x, y).getCropType()))); - System.Threading.Thread.Sleep(5); + //System.Threading.Thread.Sleep(5); } } if (farm.getCrop(x, y).getCropTimer() == 1) @@ -164,12 +166,13 @@ class AI return ((val - min) / (max - min)); } - public Vector2 GetMinFNode(int testSize, PriorityQueueC5 queue) + public Path GetMinFNode(int testSize, PriorityQueueC5 queue) { int index = 0; int min = 9999; Path path = new Path(); List entryList = new List(); + Path[] pathList = new Path[testSize]; for (int i = 0; i < testSize; i++) { entryList.Add(queue.DeleteMax()); @@ -178,7 +181,9 @@ class AI for (int i = 0; i < testSize; i++) { Nodes temp = new Nodes(entryList[i].Coordinates); + astar.update(farm.getCrops(), Size, tractorPos, housePos, temp.getCords(), Rotation); path = astar.FindPath(false); + pathList[i] = path; Nodes tempF = new Nodes(path.getByIndex(0)); if (min > tempF.getF()) { @@ -186,21 +191,17 @@ class AI index = i; } } - PQEntry minEntry = entryList[index]; - entryList.RemoveAt(index); - //add the non-minimum entries back to the queue. - queue.AddAll(entryList); - - return minEntry.Coordinates; + return pathList[index].FlipArray(); } - public Vector2 GetMaxFNode(int testSize, PriorityQueueC5 queue) + public Path GetMaxFNode(int testSize, PriorityQueueC5 queue) { int index = 0; int max = -9999; Path path = new Path(); List entryList = new List(); + Path[] pathList = new Path[testSize]; for (int i = 0; i < testSize; i++) { entryList.Add(queue.DeleteMax()); @@ -209,7 +210,9 @@ class AI for (int i = 0; i < testSize; i++) { Nodes temp = new Nodes(entryList[i].Coordinates); + astar.update(farm.getCrops(), Size, tractorPos, housePos, temp.getCords(), Rotation); path = astar.FindPath(false); + pathList[i] = path; Nodes tempF = new Nodes(path.getByIndex(0)); if (max < tempF.getF()) { @@ -217,15 +220,11 @@ class AI index = i; } } - PQEntry minEntry = entryList[index]; - entryList.RemoveAt(index); - //add the non-minimum entries back to the queue. - queue.AddAll(entryList); - - return minEntry.Coordinates; + return pathList[index].FlipArray(); } + public void reloadCargo() { inventory.clearInventory(); diff --git a/Game1/Sources/Smart/SmartTractor.cs b/Game1/Sources/Smart/SmartTractor.cs index 322a712..a80f27e 100644 --- a/Game1/Sources/Smart/SmartTractor.cs +++ b/Game1/Sources/Smart/SmartTractor.cs @@ -20,12 +20,14 @@ class SmartTractor farm.UpdatePreferedCrops(Size); farm = ai.changeCropStatus(); astar.update(farm.getCrops(), Size, tractorPos / (tileSize + Spacing), housePos / (tileSize + Spacing), Rotation); - getTargetPosition(ai.newTarget()); - astar.update(farm.getCrops(), Size, tractorPos / (tileSize + Spacing), housePos / (tileSize + Spacing), Target / (tileSize + Spacing), Rotation); + //getTargetPosition(ai.newTarget()); + //astar.update(farm.getCrops(), Size, tractorPos / (tileSize + Spacing), housePos / (tileSize + Spacing), Target / (tileSize + Spacing), Rotation); if (tractorPos == housePos) ai.reloadCargo(); + return ai.newTarget(); - return astar.FindPath(true); + + //return astar.FindPath(true); }