static void Main(string[] args) { Random zufGenerator = new Random(); const int breite = 30; const int höhe = 20; const int startX = 5; const int startY = 2; const int anzSpieler = 5; // (pro Team) int infoX = 50; int infoY = 3; int infoZahl = 0; string[] aName = new string[5] { "Achim", "Albert", "Anton", "August", "Axel" }; string[] bName = new string[5] { "Bert", "Benjamin", "Björn", "Bodo", "Bruno" }; int x, y, richtung; bool neuesFeldGefunden; List <A_Mann> aListe = new List <A_Mann>(); List <B_Mann> bListe = new List <B_Mann>(); // LEERES BRETT ************************************************************************************** for (int h = 0; h < höhe; h++) { for (int b = 0; b < breite; b++) { Console.SetCursorPosition(startX + b, startY + h); Console.Write("."); } } // ZUFALLSPOSITION ************************************************************************************** // A-Männer: for (int i = 0; i < anzSpieler; i++) { do { neuesFeldGefunden = true; x = zufGenerator.Next(0, breite / 2); y = zufGenerator.Next(0, höhe); foreach (A_Mann a in aListe) { if (a.X == x && a.Y == y) { neuesFeldGefunden = false; } } if (neuesFeldGefunden) { foreach (B_Mann b in bListe) { if (b.X == x && b.Y == y) { neuesFeldGefunden = false; } } } }while (!neuesFeldGefunden); A_Mann A = new A_Mann(); A.Name = aName[i]; A.X = x; A.Y = y; A.ImSpiel = true; aListe.Add(A); Console.SetCursorPosition(startX + x, startY + y); Console.Write("A"); } // B-Männer: for (int i = 0; i < anzSpieler; i++) { do { neuesFeldGefunden = true; x = zufGenerator.Next(breite / 2 + 1, breite); y = zufGenerator.Next(0, höhe); foreach (A_Mann a in aListe) { if (a.X == x && a.Y == y) { neuesFeldGefunden = false; } } if (neuesFeldGefunden) { foreach (B_Mann b in bListe) { if (b.X == x && b.Y == y) { neuesFeldGefunden = false; } } } }while (!neuesFeldGefunden); B_Mann B = new B_Mann(); B.Name = bName[i]; B.X = x; B.Y = y; B.ImSpiel = true; bListe.Add(B); Console.SetCursorPosition(startX + x, startY + y); Console.Write("B"); } // ZUFALSWANDERN / TREFFEN / KÄMPFEN ****************************************************************************************** do { // A-Männer WANDERN foreach (A_Mann a in aListe) { richtung = zufGenerator.Next(0, 8); Console.SetCursorPosition(startX + a.X, startY + a.Y); Console.Write("."); switch (richtung) { case 0: if (a.Y > 0) { a.Y = a.Y - 1; } break; case 1: if (a.Y > 0 && a.X < breite - 1) { a.Y = a.Y - 1; a.X = a.X + 1; } break; case 2: if (a.X < breite - 1) { a.X = a.X + 1; } break; case 3: if (a.Y < höhe - 1 && a.X < breite - 1) { a.Y = a.Y + 1; a.X = a.X + 1; } break; case 4: if (a.Y < höhe - 1) { a.Y = a.Y + 1; } break; case 5: if (a.Y < höhe - 1 && a.X > 0) { a.Y = a.Y + 1; a.X = a.X - 1; } break; case 6: if (a.X > 0) { a.X = a.X - 1; } break; case 7: if (a.Y > 0 && a.X > 0) { a.Y = a.Y - 1; a.X = a.X - 1; } break; } Console.SetCursorPosition(startX + a.X, startY + a.Y); Console.Write("A"); } // B-Männer WANDERN foreach (B_Mann a in bListe) { richtung = zufGenerator.Next(0, 8); Console.SetCursorPosition(startX + a.X, startY + a.Y); Console.Write("."); switch (richtung) { case 0: if (a.Y > 0) { a.Y = a.Y - 1; } break; case 1: if (a.Y > 0 && a.X < breite - 1) { a.Y = a.Y - 1; a.X = a.X + 1; } break; case 2: if (a.X < breite - 1) { a.X = a.X + 1; } break; case 3: if (a.Y < höhe - 1 && a.X < breite - 1) { a.Y = a.Y + 1; a.X = a.X + 1; } break; case 4: if (a.Y < höhe - 1) { a.Y = a.Y + 1; } break; case 5: if (a.Y < höhe - 1 && a.X > 0) { a.Y = a.Y + 1; a.X = a.X - 1; } break; case 6: if (a.X > 0) { a.X = a.X - 1; } break; case 7: if (a.Y > 0 && a.X > 0) { a.Y = a.Y - 1; a.X = a.X - 1; } break; } Console.SetCursorPosition(startX + a.X, startY + a.Y); Console.Write("B"); } // A-Männer TREFFEN foreach (A_Mann m1 in aListe) { foreach (A_Mann m2 in aListe) { if (!m1.Equals(m2)) { if (m1.X == m2.X && m1.Y == m2.Y) { Console.SetCursorPosition(infoX, infoY + infoZahl); m1.Grüßen(m2); infoZahl++; } } } } // B-Männer TREFFEN foreach (B_Mann m1 in bListe) { foreach (B_Mann m2 in bListe) { if (!m1.Equals(m2)) { if (m1.X == m2.X && m1.Y == m2.Y) { Console.SetCursorPosition(infoX, infoY + infoZahl); m1.Grüßen(m2); infoZahl++; } } } } // A<->B-KAMPF foreach (A_Mann a in aListe.ToList()) { foreach (B_Mann b in bListe.ToList()) { if (a.X == b.X && a.Y == b.Y) { switch (zufGenerator.Next(2)) { case (int)Sieger.ist_A_Mann: Console.SetCursorPosition(infoX, infoY + infoZahl); a.Jubeln(); infoZahl++; Console.SetCursorPosition(infoX, infoY + infoZahl); b.Heulen(); b.ImSpiel = false; infoZahl++; bListe.Remove(b); Console.SetCursorPosition(startX + a.X, startY + a.Y); Console.WriteLine("A"); break; case (int)Sieger.ist_B_Mann: Console.SetCursorPosition(infoX, infoY + infoZahl); b.Jubeln(); infoZahl++; Console.SetCursorPosition(infoX, infoY + infoZahl); a.Heulen(); a.ImSpiel = false; infoZahl++; aListe.Remove(a); Console.SetCursorPosition(startX + a.X, startY + a.Y); Console.WriteLine("B"); break; } } } } if (infoZahl > 30) { infoZahl = 0; infoX = infoX + 50; infoY = 3; } }while (aListe.Count() > 0 && bListe.Count() > 0); Console.ReadKey(); }
public void Grüßen(B_Mann b) { Console.WriteLine("Hallo " + b.Name + "!"); }