diff --git a/Game1/Game1.cs b/Game1/Game1.cs index af08189..f652f6e 100644 --- a/Game1/Game1.cs +++ b/Game1/Game1.cs @@ -34,7 +34,7 @@ namespace Game1 //Generates the map with some random values - input.init(graphics, new Vector2(16,16), 56, 1); //Generates the starting size + input.init(graphics, new Vector2(8,8), 56, 1); //Generates the starting size houseUnit.init(input.getTileSize(), input.getSpacing()); //Generates the house position tractorUnit.init(houseUnit.GetRectangle(), input); //Generates the Tractor tractorUnit.updateSizing(input, 0, houseUnit.getVector()); //Updates the first Size of the Tractor @@ -106,10 +106,10 @@ namespace Game1 spriteBatch.Draw(tractor, new Rectangle((int)tractorUnit.getPath().getByIndex(i).getCords().X * (input.getSpacingTile()) + input.getTileSize() / 4, (int)tractorUnit.getPath().getByIndex(i).getCords().Y * (input.getSpacingTile()) + input.getTileSize() / 4, input.getTileSize()/2, input.getTileSize()/2), Color.Green); } - spriteBatch.Draw(tractor, new Rectangle((int)tractorUnit.getPath().getFinalDest().getCords().X * (input.getSpacingTile()) + Convert.ToInt32(input.getTileSize() / 6), (int)tractorUnit.getPath().getFinalDest().getCords().Y * (input.getSpacingTile()) + Convert.ToInt32(input.getTileSize() / 6), Convert.ToInt32(input.getTileSize()/1.5), Convert.ToInt32(input.getTileSize()/1.5)) , Color.Red); //Draws the current target of the tractor spriteBatch.Draw(tractor, new Rectangle((int)tractorUnit.getPos().X, (int)tractorUnit.getPos().Y, input.getTileSize(), input.getTileSize()), Color.White); spriteBatch.Draw(house, houseUnit.GetRectangle(), Color.White); spriteBatch.DrawString(Bold, "Speed:" + tractorUnit.getSpeed().ToString(), new Vector2(10, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 20) , Color.White); //Draws the speed value + spriteBatch.Draw(tractor, new Rectangle((int)tractorUnit.getPath().getFinalDest().getCords().X * (input.getSpacingTile()) + Convert.ToInt32(input.getTileSize() / 6), (int)tractorUnit.getPath().getFinalDest().getCords().Y * (input.getSpacingTile()) + Convert.ToInt32(input.getTileSize() / 6), Convert.ToInt32(input.getTileSize() / 1.5), Convert.ToInt32(input.getTileSize() / 1.5)), Color.Red); //Draws the current target of the tractor spriteBatch.DrawString(Bold, "Tractor Speed:" + tractorUnit.getTractorSpeed().ToString(), new Vector2(100, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 20), Color.White); spriteBatch.DrawString(Bold, "Tile Size:" + input.getTileSize().ToString() + "pix", new Vector2(10, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 40), Color.White); //Draws the tile size spriteBatch.DrawString(Bold, "Matrix Size: " + input.getSize().X.ToString() + " X " + input.getSize().Y.ToString(), new Vector2(10, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 60), Color.White); diff --git a/Game1/Sources/Crops/Crops.cs b/Game1/Sources/Crops/Crops.cs index 9e536ba..23e7641 100644 --- a/Game1/Sources/Crops/Crops.cs +++ b/Game1/Sources/Crops/Crops.cs @@ -37,15 +37,15 @@ class Crops } else if (Status == 2) { - return 2; + return 20; } else if (Status == 3) { - return 3; + return 30; } else { - return 4; + return 40; } } diff --git a/Game1/Sources/Crops/Farm.cs b/Game1/Sources/Crops/Farm.cs index bb2c632..b84c36d 100644 --- a/Game1/Sources/Crops/Farm.cs +++ b/Game1/Sources/Crops/Farm.cs @@ -25,6 +25,10 @@ class Farm { x = r.Next(0, 2); } + if (x == 2) + { + x = r.Next(1, 3); + } crops[i, j] = new Crops(); crops[i, j].Status = x; } diff --git a/Game1/Sources/Pathing/A-Star/Astar.cs b/Game1/Sources/Pathing/A-Star/Astar.cs index ca41ca7..6d54ce8 100644 --- a/Game1/Sources/Pathing/A-Star/Astar.cs +++ b/Game1/Sources/Pathing/A-Star/Astar.cs @@ -47,7 +47,7 @@ class Astar adjacentNodes.Remove(adjacentNodes[i]); else { - if (adjacentNodes[i].getCords().X > Size.X || adjacentNodes[i].getCords().Y > Size.Y) + if (adjacentNodes[i].getCords().X > Size.X - 1 || adjacentNodes[i].getCords().Y > Size.Y - 1) adjacentNodes.Remove(adjacentNodes[i]); } } @@ -77,21 +77,24 @@ class Astar while (openList.Count > 0) { current = openList.Peek(); + //g = current.getG(); closedList.Enqueue(current); openList.Dequeue(); - if (closedList.Peek().getCords() == target.getCords()) - break; + if (closedList.Exists(target.getCords())) + break; var adjacentNodes = GetAdjacentNodes(current.getCords()); - g++; + //g++; foreach(var adjacentNode in adjacentNodes) { + g = g + crops[(int)adjacentNode.getCords().X, (int)adjacentNode.getCords().Y].getCostOnMovement(); if (closedList.Exists(adjacentNode.getCords())) continue; if (!(openList.Exists(adjacentNode.getCords()))) { + adjacentNode.setG(g); adjacentNode.setH(ComputeHScore(adjacentNode.getCords(), target.getCords())); adjacentNode.calculateF(); @@ -115,7 +118,9 @@ class Astar path.AddNode(current); current = current.getParent(); } - path.FlipArray(); + path = path.FlipArray(); + openList.Clear(); + closedList.Clear(); return path; } diff --git a/Game1/Sources/Pathing/A-Star/PathSaver/Path.cs b/Game1/Sources/Pathing/A-Star/PathSaver/Path.cs index a0befcb..0babd89 100644 --- a/Game1/Sources/Pathing/A-Star/PathSaver/Path.cs +++ b/Game1/Sources/Pathing/A-Star/PathSaver/Path.cs @@ -31,15 +31,19 @@ class Path return temp; } - public void FlipArray() + public Path FlipArray() { int j = Count; Nodes[] tempp = nodes; + Nodes[] newnode = new Nodes[Count]; + Path newPath = new Path(); for (int i = 0; i < Count; i++) { - nodes[i] = tempp[j - 1]; + newnode[i] = tempp[j - 1]; j--; + newPath.AddNode(newnode[i]); } + return newPath; } public Nodes getFinalDest() diff --git a/Game1/Sources/Pathing/A-Star/PathSaver/PriorityQueue.cs b/Game1/Sources/Pathing/A-Star/PathSaver/PriorityQueue.cs index 6dfa0a4..bdc6be8 100644 --- a/Game1/Sources/Pathing/A-Star/PathSaver/PriorityQueue.cs +++ b/Game1/Sources/Pathing/A-Star/PathSaver/PriorityQueue.cs @@ -41,7 +41,7 @@ class PriorityQueue { Nodes min = Peek(); Nodes root = list[Count - 1]; - list.RemoveAt(0); + list.RemoveAt(Count - 1); int i = 0;