public AmeisenSimulation(int grenzeX = 120, int grenzeY = 40, int ameisenAnzahl = 5, int essensAnzahl = 2) { ameisen = new List <ant>(); //essen = new food(grenzeX, grenzeY); essen = new List <food>(); zuHause = new home(grenzeX, grenzeY); Console.SetWindowSize(grenzeX + 10, grenzeY + 10); for (int i = 0; i < ameisenAnzahl; i++) { ameisen.Add(new ant(grenzeX, grenzeY)); ameisen[i].sim = this; } for (int i = 0; i < essensAnzahl; i++) { essen.Add(new food(grenzeX, grenzeY)); essen[i].sim = this; } while (true) { for (int i = 0; i < ameisen.Count; i++) { essen[0].posX = 1; essen[0].posY = 1; foreach (food esse in essen) { esse.Draw("F"); } //ameisen[i].LocateNearestFood(essen); int index = ameisen[i].LocateNearestFood(essen); ameisen[i].Seek(essen[index], zuHause); ameisen[i].energie -= 1; if (ameisen[i].CheckIfDead()) { CleanUp(ameisen[i].posX, ameisen[i].posY); ameisen.RemoveAt(i); } } // if (essen.foodLeft > 0) // { // essen.Draw("F"); // } // else // { // essen = new food(grenzeX, grenzeY); // } zuHause.Draw("H"); Console.SetCursorPosition(0, grenzeY + 5); Console.WriteLine("food: " + zuHause.foodCount); System.Threading.Thread.Sleep(100); } }
public void Seek(food futter, home haus) { Draw(" "); if ((posX != futter.posX || posY != futter.posY) && hasFood == false) { int whereIsMyFoodX = futter.posX - posX; int whereIsMyFoodY = futter.posY - posY; if (whereIsMyFoodX == 0 && whereIsMyFoodY == 0) { hasFood = true; } if (whereIsMyFoodY > 0) { posY += 1; } if (whereIsMyFoodX < 0) { posX -= 1; } if (whereIsMyFoodY < 0) { posY -= 1; } if (whereIsMyFoodX > 0) { posX += 1; } } if ((posX != haus.posX || posY != haus.posY) && hasFood == true) { int whereIsMyHomeX = haus.posX - posX; int whereIsMyHomeY = haus.posY - posY; if (whereIsMyHomeY > 0) { posY += 1; } if (whereIsMyHomeX < 0) { posX -= 1; } if (whereIsMyHomeY < 0) { posY -= 1; } if (whereIsMyHomeX > 0) { posX += 1; } } if (posY == futter.posY) { if (posX == futter.posX) { hasFood = true; futter.foodLeft -= 1; } } if (posY == haus.posY) { if (posX == haus.posX) { hasFood = false; haus.foodCount += 1; } } Move(); }
public void Seek(food futter, home haus) { Draw(" "); if (hasFood == false) { if (sim.PositionEqual(this.posX, this.posY, futter.posX, futter.posY)) { hasFood = true; futter.foodLeft -= 1; } else { int distanceToMyFoodX = futter.posX - posX; int distanceToMyFoodY = futter.posY - posY; if (distanceToMyFoodY > 0) { posY += 1; } if (distanceToMyFoodX < 0) { posX -= 1; } if (distanceToMyFoodY < 0) { posY -= 1; } if (distanceToMyFoodX > 0) { posX += 1; } } } if (hasFood == true) { if (sim.PositionEqual(this.posX, this.posY, haus.posX, haus.posY)) { hasFood = false; haus.foodCount += 1; } else { int whereIsMyHomeX = haus.posX - posX; int whereIsMyHomeY = haus.posY - posY; if (whereIsMyHomeY > 0) { posY += 1; } if (whereIsMyHomeX < 0) { posX -= 1; } if (whereIsMyHomeY < 0) { posY -= 1; } if (whereIsMyHomeX > 0) { posX += 1; } } } Move(); }
public AmeisenSimulation(int grenzeX = 120, int grenzeY = 40, int ameisenAnzahl = 20, int essensAnzahl = 15) { ameisen = new List <ant>(); essen = new List <food>(); zuHause = new home(grenzeX, grenzeY); Console.SetWindowSize(grenzeX + 10, grenzeY + 10); for (int i = 0; i < ameisenAnzahl; i++) { ameisen.Add(new ant(grenzeX, grenzeY)); ameisen[i].sim = this; } for (int i = 0; i < essensAnzahl; i++) { essen.Add(new food(grenzeX, grenzeY)); essen[i].sim = this; } while (true) { for (int i = 0; i < ameisen.Count; i++) { for (int j = 0; j < essen.Count; j++) { if (essen[j].foodLeft <= 0) { CleanUp(essen[j].posX, essen[j].posY); essen.RemoveAt(j); essen.Add(new food(grenzeX, grenzeY)); } if (essen[j].foodLeft > 0) { essen[j].Draw("F"); } } if (ameisen[i].currentFoodGoal == false) { ameisen[i].SetFood(essen[ameisen[i].LocateNearestFood(essen)]); ameisen[i].currentFoodGoal = true; } if (ameisen[i].currentFood.foodLeft <= 0) { ameisen[i].currentFoodGoal = false; } ameisen[i].Seek(ameisen[i].currentFood, zuHause); ameisen[i].energie -= 1; if (ameisen[i].CheckIfDead()) { CleanUp(ameisen[i].posX, ameisen[i].posY); ameisen.RemoveAt(i); } } zuHause.Draw("H"); Console.SetCursorPosition(0, grenzeY + 5); Console.WriteLine("food: " + zuHause.foodCount); System.Threading.Thread.Sleep(10); } }
public void Seek(food futter, home haus) { Console.SetCursorPosition(posX, posY); // cleans up after itself Console.WriteLine(" "); if ((posX != futter.posX || posY != futter.posY) && hasFood == false) { int whereIsMyFoodX = futter.posX - posX; int whereIsMyFoodY = futter.posY - posY; if (whereIsMyFoodX == 0 && whereIsMyFoodY == 0) { hasFood = true; } if (whereIsMyFoodY > 0) { posY += 1; } if (whereIsMyFoodX < 0) { posX -= 1; } if (whereIsMyFoodY < 0) { posY -= 1; } if (whereIsMyFoodX > 0) { posX += 1; } } if ((posX != haus.posX || posY != haus.posY) && hasFood == true) { int whereIsMyHomeX = haus.posX - posX; int whereIsMyHomeY = haus.posY - posY; if (whereIsMyHomeY > 0) { posY += 1; } if (whereIsMyHomeX < 0) { posX -= 1; } if (whereIsMyHomeY < 0) { posY -= 1; } if (whereIsMyHomeX > 0) { posX += 1; } } if (posY == futter.posY) { if (posX == futter.posX) { hasFood = true; futter.foodLeft -= 1; } } if (posY == haus.posY) { if (posX == haus.posX) { hasFood = false; haus.foodCount += 1; } } Move(); Console.SetCursorPosition(posX, posY); Console.WriteLine("A"); }
public static void Main(string[] args) { int borderX = 120; int borderY = 40; Console.SetWindowSize(borderX + 10, borderY + 10); ant[] ameisen = new ant[20]; food essen = new food() { limitX = borderX, limitY = borderY }; home zuHause = new home() { limitX = borderX, limitY = borderY }; for (int i = 0; i < ameisen.Length; i++) { ameisen[i] = new ant() { limitX = borderX, limitY = borderY }; ameisen[i].Spawn(); } essen.Spawn(); zuHause.Spawn(); while (true) { foreach (ant ameise in ameisen) { ameise.Seek(essen, zuHause); } if (essen.foodLeft > 0) { essen.Show(); } else { essen.Spawn(); } zuHause.Show(); Console.SetCursorPosition(0, borderY + 5); Console.WriteLine("food: " + zuHause.foodCount); System.Threading.Thread.Sleep(100); } //Console.ResetColor(); // Here is the comment section for remembering stuff: // Console.SetWindowSize(borderX, borderY); // Console.SetCursorPosition(10, 10); // Console.WriteLine("A"); // System.Threading.Thread.Sleep(500); // Console.Clear(); // //System.Threading.Thread.Sleep(500); // Console.SetCursorPosition(11, 10); // Console.WriteLine("A"); // for (int i = 0; i < borderX; i++) // Move from left to right // { // Console.SetCursorPosition(i, 10); // Console.WriteLine("A"); // System.Threading.Thread.Sleep(200); // Console.Clear(); // } }