//Alle Bewohnere auflisten static void ShowCitizen() { Console.WriteLine("### 3: Bewohner anzeigen ###"); foreach (var bewohner in AlleBewohner) { //Berechnung des Machtfaktors des Clans int MachtDesBewohners = bewohner.Machtfaktor; string stammesfuehrer = ""; string stammesfuehrervon = ""; int stammesfuehrerseit = 0; Console.Write(bewohner.Spezies + " - " + bewohner.Name + "(" + MachtDesBewohners + ") " + bewohner.Alter + " Jahre alt "); //Wenn wir den Stammesfuehrer nicht kennen wollen wir nicht einfach einen leeren Eintrag anzeigen, sondern etwas ausgeben. foreach (var stamm in AlleClans) { //Erfassen des Stammes, falls der Bewohner Mitglied ist if (stamm.Mitglieder.Contains(bewohner)) { stammesfuehrer = stamm.Stammeshaupt; stammesfuehrervon = stamm.Name; stammesfuehrerseit = stamm.StammeshauptSeit; } } //Wenn der Stamm vom Bewohner geführt wird, geben wir dies aus, ansonsten wo der Bewohner Mitglied ist if (stammesfuehrer.Equals(bewohner.Name)) { Console.Write("" + bewohner.Name + " führt den Clan " + stammesfuehrervon + " seit " + stammesfuehrerseit + " Jahren."); } else { Console.Write("Mitglied von " + stammesfuehrervon); } //Für den König besonder interessant: wie viel Steuern zahlt der Bewohner potentiell? Console.Write("\n Besteuerung: " + (MachtDesBewohners * SteuerBasisSatz) + "\n"); if (bewohner.Spezies.Equals("Zwerg")) { Zwerg zwerg = (Zwerg)bewohner; foreach (var item in zwerg.Inventar) { Console.Write("" + item.Name + "(" + item.MagieWert + "), "); } } else if (bewohner.Spezies.Equals("Elb")) { Console.Write("Elben haben nur ihre Haare als Waffe."); } Console.Write("\n"); Console.WriteLine("#----#"); } ResetProgram(); }
static void Init() { SteuerBasisSatz = 2; //Ausrüsten der Bewohnere für Raids & Co Gimli.Inventar.Add(Axt01); Gimli.Inventar.Add(Schwert); Zwerg.UpdateMachtfaktor(Gimli); Gumli.Inventar.Add(Axt02); Zwerg.UpdateMachtfaktor(Gumli); Zwingli.Inventar.Add(Zauberstab); Zwingli.Inventar.Add(Streithammer); Zwerg.UpdateMachtfaktor(Zwingli); Elb.UpdateMachtfaktor(Elidyr); Elb.UpdateMachtfaktor(Iefyr); Elb.UpdateMachtfaktor(Vulas); Elb.UpdateMachtfaktor(Malon); //Bewohnere sind keine Einzelkämpfer Altobarden.Mitglieder.Add(Gimli); Altobarden.Mitglieder.Add(Zwingli); Elbkbnechte.Mitglieder.Add(Gumli); Murkpeak.Mitglieder.Add(Elidyr); Murkpeak.Mitglieder.Add(Iefyr); Murkpeak.Mitglieder.Add(Vulas); Montzieu.Mitglieder.Add(Malon); //Hinzufügen der Stämme zu einer Liste AlleClans.Add(Altobarden); AlleClans.Add(Elbkbnechte); AlleClans.Add(Murkpeak); AlleClans.Add(Montzieu); //Hinzufügen der Bewohnere zu einer Liste AlleBewohner.Add(Gimli); AlleBewohner.Add(Gumli); AlleBewohner.Add(Zwingli); AlleBewohner.Add(Elidyr); AlleBewohner.Add(Iefyr); AlleBewohner.Add(Vulas); AlleBewohner.Add(Malon); }
//Inventar static void EditInventory() { Console.WriteLine("### 5: Inventar editieren ###"); //Ich bin faul, kopiere also die Auswahl des Bewohners vom Bewohner editieren int currentBewohner = 0; foreach (var bewohner in AlleBewohner) { currentBewohner += 1; //Auflistung aller Bewohnere Console.Write(currentBewohner + ": " + bewohner.Name + "(" + bewohner.Machtfaktor + ") " + bewohner.Alter + " Jahre alt "); //Alle Bewohnere sind Ziele für Steuern - Inventarauswertung if (bewohner.Spezies.Equals("Zwerg")) { Zwerg zwerg = (Zwerg)bewohner; foreach (var item in zwerg.Inventar) { Console.Write("" + item.Name + "(" + item.MagieWert + "), "); } } else if (bewohner.Spezies.Equals("Elb")) { Elb elb = (Elb)bewohner; Console.Write("Elben haben nur ihre Haare als Waffe. Länge: " + elb.Haarlaenge); } Console.Write("\n"); } //Bewohner auswählen Console.WriteLine("### Bitte Bewohner auswählen ###"); try { //Eingabe des Benutzers currentBewohner = (int.Parse(Console.ReadLine()) - 1); } //Eingabe falsch formatiert catch (Exception) { Console.Clear(); Console.WriteLine("Fehlerhafte Eingabe - nochmal Versuchen!"); EditInventory(); } //Bewohner Veriable - das andere geht zwar auch jedesmal, ist aber mehr schreibarbeit if (AlleBewohner[currentBewohner].Spezies.Equals("Zwerg")) { Zwerg bewohnerToEdit = (Zwerg)AlleBewohner[currentBewohner]; Console.Clear(); //Alle Inventarelemente darstellen foreach (var item in bewohnerToEdit.Inventar) { Console.Write("" + item.Name + "(" + item.MagieWert + "), "); Console.Write("\n"); } //Nutzer entscheiden lassen, ob er etwas bearbeiten möchte Console.WriteLine("Was möchten Sie tun?"); Console.WriteLine("1: Gegenstand hinzufügen?"); Console.WriteLine("2: Gegenstand entfernen?"); Console.WriteLine("3: Nichts tun?"); int todo = 0; try { todo = (int.Parse(Console.ReadLine()) - 1); } catch (Exception) { Console.Clear(); Console.WriteLine("Fehlerhafte Eingabe - nochmal Versuchen!"); EditInventory(); } //Auswahl der Fälle mal per IF - nicht wie vorher immer mit switch case //Auswahl 1 - hinzufügen if (todo == 0) { //Neuer Gegenstand wird durch Nutzer erstellt Console.WriteLine("Gegenstand hizufügen:"); Console.WriteLine("Bitte geben Sie dem Gegenstand einen Namen"); string name = Console.ReadLine(); Console.WriteLine("Bitte geben Sie dem Gegenstand einen Machtfaktor (ganzzahl positiv)"); int machtfaktor = int.Parse(Console.ReadLine()); //Und dann dem Bewohner gegeben. bewohnerToEdit.AddItem(bewohnerToEdit, new Gegenstand(name, machtfaktor)); } //Auswahl 2 - entfernen else if (todo == 1) { //Die Liste nochmals darstellen, um dem Nutzer die Auswahl zu erleichtern int currentItem = 0; foreach (var item in bewohnerToEdit.Inventar) { currentItem += 1; Console.Write(currentItem + ": " + item.Name + "(" + item.MagieWert + "), "); Console.Write("\n"); } //Nutzer wählt den alten Ramsch zum entfernen aus Console.WriteLine("Welchen Gegenstand möchten Sie entfernen?"); currentItem = (int.Parse(Console.ReadLine()) - 1); //Ramsch wird entfernt bewohnerToEdit.RemoveItem(bewohnerToEdit, bewohnerToEdit.Inventar[currentItem]); Console.WriteLine("Thy dirty deed be done!"); } //Auswahl 3 - nichts tun else if (todo == 2) { Console.WriteLine("Nichts bearbeitet."); } else { Console.WriteLine("Diese Option besteht nicht!"); } } ResetProgram(); }
//Einen Bewohner editieren (Hinzufügen/Entfernen von Gegenstaenden) oder Bewohnere erstellen etc (falls genug Zeit bleibt) static void EditCitizen() { Console.WriteLine("### 4: Bewohner editieren ###"); int currentBewohner = 0; foreach (var bewohner in AlleBewohner) { currentBewohner += 1; //Auflistung aller Bewohnere Console.Write(currentBewohner + ": " + bewohner.Name + "(" + bewohner.Machtfaktor + ") " + bewohner.Alter + " Jahre alt "); //Alle Bewohnere sind Ziele für Steuern - Inventarauswertung if (bewohner.Spezies.Equals("Zwerg")) { Zwerg zwerg = (Zwerg)bewohner; foreach (var item in zwerg.Inventar) { Console.Write("" + item.Name + "(" + item.MagieWert + "), "); } } else if (bewohner.Spezies.Equals("Elb")) { Elb elb = (Elb)bewohner; Console.Write("Haupthaar (" + elb.Haarlaenge + ")"); } Console.Write("\n"); } //Bewohner auswählen Console.WriteLine("### Bitte Bewohner auswählen ###"); Console.WriteLine("### 'Add' für neuen Bewohner ###"); string selection = ""; Lebewesen bewohnerToEdit; try { selection = Console.ReadLine(); if (!selection.Equals("Add")) { currentBewohner = (int.Parse(selection) - 1); } } catch (Exception) { Console.Clear(); Console.WriteLine("Fehlerhafte Eingabe - nochmal Versuchen!"); EditCitizen(); } if (selection.Equals("Add")) { Console.WriteLine("Möchten Sie einen (1)Zwerg oder einen (2)Elb hinzufügen?"); if (Console.ReadLine().Equals("2")) { bewohnerToEdit = new Elb("", 0, "", 0, false, 0); AlleBewohner.Add(bewohnerToEdit); } else { bewohnerToEdit = new Zwerg("", 0, "", 0); AlleBewohner.Add(bewohnerToEdit); } } else { bewohnerToEdit = AlleBewohner[currentBewohner]; } //Namensänderung des Bewohners Console.WriteLine("Namensänderung: " + bewohnerToEdit.Name + " - leer lassen um nicht zu verändern."); string newName = Console.ReadLine(); if (newName.Length > 0) { bewohnerToEdit.Name = newName; } //Alter ändern Console.WriteLine("Alter: " + bewohnerToEdit.Alter + " - leer lassen um nicht zu verändern."); string newAge = Console.ReadLine(); if (!string.IsNullOrEmpty(newAge)) { if (int.Parse(newAge) > 0) { bewohnerToEdit.Alter = int.Parse(newAge); } } //Bewohner in anderen Stamm setzen Console.WriteLine("Stammesänderung: " + bewohnerToEdit.Stamm + " - leer lassen um nicht zu verändern."); string newStamm = Console.ReadLine(); bool newStammFound = false; bool hadnoStamm = true; if (newStamm.Length > 0) { //Suche nach altem Stamm foreach (var stamm in AlleClans) { if (stamm.Name.Equals(bewohnerToEdit.Stamm)) { hadnoStamm = false; //Abfrage, ob der Bewohner Stammesoberhaupt ist if (!stamm.Stammeshaupt.Equals(bewohnerToEdit.Name)) { //Bewohner aus altem Stamm entfernen stamm.RemoveBewohner(stamm, bewohnerToEdit); bewohnerToEdit.Stamm = newStamm; //Neuen Stamm suchen foreach (var fancyStamm in AlleClans) { if (fancyStamm.Name.Equals(newStamm)) { //Bewohner eintragen newStammFound = true; stamm.AddBewohner(fancyStamm, bewohnerToEdit); } } if (!newStammFound) { //Stamm nicht gefunden, Bewohner in alten Stamm zurücksetzen Console.WriteLine("Stamm nicht gefunden, Bewohner verbleibt in altem Stamm!"); stamm.AddBewohner(stamm, bewohnerToEdit); } } else { Console.WriteLine("Bitte die Stammesführung erst ändern. Der Stammesführer kann den Stamm nicht verlassen!"); } } } if (hadnoStamm) { foreach (var stamm in AlleClans) { if (stamm.Name.Equals(newStamm)) { stamm.AddBewohner(stamm, bewohnerToEdit); } } } } ResetProgram(); }