//Menüeintrag für die neue Königin - ebenfalls eine Methode. static void ShowOverView() { int gesamtsteuerSatz = 0; foreach (var Stamm in AlleClans) { gesamtsteuerSatz += Stamm.Tax; } Console.WriteLine("### 0: Übersichtsanzeige ###"); Console.WriteLine("\n"); Console.WriteLine("[*] - Kennzeichnet einen Stammesführer\n"); Console.WriteLine("Gesamtsteuereinnahmen: " + gesamtsteuerSatz + ".00"); Console.WriteLine("Steuereinnahmen nach Einwohner:"); int _anzahlBewohner = 0; gesamtsteuerSatz = 0; foreach (var Einwohner in AlleBewohner) { _anzahlBewohner += 1; string istStammesfuehrer = ""; if (Einwohner.Name.Equals(AlleClans.Find(f => f.Name == Einwohner.Stamm).Stammeshaupt)) { istStammesfuehrer = "[*]"; } if (Einwohner.Spezies.Equals("Zwerg")) { int bewohnerSteuersatz = Einwohner.Machtfaktor * SteuerBasisSatz; gesamtsteuerSatz += bewohnerSteuersatz; Console.WriteLine(istStammesfuehrer + Einwohner.Name + "(Zwerg): " + bewohnerSteuersatz + ".00"); } else { Elb Bewohner = (Elb)Einwohner; int bewohnerSteuersatz = (int)(Einwohner.Alter / SteuerBasisSatz + Bewohner.Haarlaenge); gesamtsteuerSatz += bewohnerSteuersatz; Console.WriteLine(istStammesfuehrer + Einwohner.Name + "(Elb): " + bewohnerSteuersatz + ".00"); } } Console.WriteLine("Durchschnittssteuern: " + gesamtsteuerSatz / _anzahlBewohner + "(" + gesamtsteuerSatz + "/" + _anzahlBewohner + ")"); 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(); }