public void GeefWeer() { List <MatrixItem> weerTeGevenItems = (from item in Items orderby item.PosX, item.PosY select item).ToList(); var kolomTeller = 0; foreach (var item in weerTeGevenItems) { kolomTeller++; int levenskracht = 0; if (item.Symbool == Parameter.HerbivoorTeken) { Herbivoor geselecteerdItem = (Herbivoor)item; levenskracht = geselecteerdItem.Levenskracht; } if (item.Symbool == Parameter.CarnivoorTeken) { Carnivoor geselecteerdItem = (Carnivoor)item; levenskracht = geselecteerdItem.Levenskracht; } if (item.Symbool == Parameter.MensTeken) { Mens geselecteerdItem = (Mens)item; levenskracht = geselecteerdItem.Levenskracht; } Console.ForegroundColor = item.Kleur; if (item.GetType() != typeof(Plant) && item.GetType() != typeof(LeegItem)) { string symboolEnLevenskracht = item.Symbool + "(" + levenskracht + ")"; Console.Write("{0,-6}", symboolEnLevenskracht); } else { Console.Write("{0,-6}", item.Symbool); } Console.ForegroundColor = ConsoleColor.White; if (kolomTeller == Parameter.AantalKolommen) { Console.WriteLine(); Console.WriteLine(); kolomTeller = 0; } } }
static void Main(string[] args) { Console.WindowWidth = 120; ShowIntro(); Console.ReadKey(); Console.Clear(); // Startwaardes Random rnd = new Random(); var aantalPlanten = Parameter.AantalPlanten; var aantalHerbivoren = Parameter.AantalHerbivoren; var aantalCarnivoren = Parameter.AantalCarnivoren; var aantalMensen = Parameter.AantalMensen; // Onze matrix van "vandaag" Matrix laatsteMatrix = new Matrix(); SetTimer(); // Onze matrix van "gisteren" - Leeg in startsituatie Matrix voorgaandeMatrix = new Matrix(); // Aanmaken planten for (var lus = 0; lus < aantalPlanten; lus++) { var toeTeVoegenPlant = new Plant(); laatsteMatrix.VoegItemToe(toeTeVoegenPlant); } // Aanmaken herbivoren for (var lus = 0; lus < aantalHerbivoren; lus++) { var toeTeVoegenHerbivoor = new Herbivoor(); laatsteMatrix.VoegItemToe(toeTeVoegenHerbivoor); } // Aanmaken carnivoren for (var lus = 0; lus < aantalCarnivoren; lus++) { var toeTeVoegenCarnivoor = new Carnivoor(); laatsteMatrix.VoegItemToe(toeTeVoegenCarnivoor); } // Aanmaken mensen // SELECTIE OP BASIS VAN TIJDSLIJN HIERONDER // if (tijdslijnMensAanwezig == true) { for (var lus = 0; lus < aantalMensen; lus++) { var toeTeVoegenMens = new Mens(); laatsteMatrix.VoegItemToe(toeTeVoegenMens); } // } // Eerste weergave // De matrix van "gisteren" weergeven - Leeg in startsituatie GeefSituatieWeer(voorgaandeMatrix, "Vorige situatie:"); Console.WriteLine(); Console.WriteLine(); // De matrix van "vandaag" weergeven GeefSituatieWeer(laatsteMatrix, "Huidige situatie:"); string input = "."; do { tijdOverschreden = false; do { Console.WriteLine(); Console.WriteLine(" Kies een commando:"); Console.WriteLine(); Console.WriteLine(" [ v + enter : Bekijk de volgende dag ]"); Console.WriteLine(" [ s + enter : Stoppen ]"); Console.WriteLine(" [ o + enter : Spel opslaan ]"); Console.WriteLine(" [ l + enter : Opgeslagen spel laden ]"); Console.WriteLine(" [ t + enter : Automatisch mode starten/stoppen ]"); while (!Console.KeyAvailable && !tijdOverschreden) { } if (!tijdOverschreden) { input = Console.ReadLine(); } }while (input != "v" && input != "s" && input != "o" && input != "l" && input != "t" && !tijdOverschreden); Console.WriteLine(); if (input == "t") { input = "."; if (aTimer.Enabled == false) { aTimer.Enabled = true; Console.WriteLine("De automatische modus werd gestart"); } else { aTimer.Enabled = false; tijdOverschreden = false; Console.WriteLine("De automatische modus werd gestopt"); } } if (input == "v" || tijdOverschreden) { // Scherm leegmaken Console.Clear(); // Matrix van gisteren weergeven GeefSituatieWeer(laatsteMatrix, "Vorige situatie:"); var gesorteerdeMatrix = laatsteMatrix.GeefGesorteerdeLijst(); int toeTeVoegenHerbivorenBabies = 0; int toeTeVoegenMensenBabies = 0; laatsteMatrix.ResetIsVeranderd(); for (var x = 0; x < gesorteerdeMatrix.Count; x++) { var geselecteerditem = gesorteerdeMatrix[x]; var matrixItemBuurman = laatsteMatrix.GeefBuurmanRechts(geselecteerditem); if (matrixItemBuurman != null) { // Herbivoor eet plant if (geselecteerditem.Symbool == Parameter.HerbivoorTeken && matrixItemBuurman.Symbool == Parameter.PlantTeken && geselecteerditem.IsVeranderd == false) { var geselecteerdeHerbivoor = (Herbivoor)geselecteerditem; geselecteerdeHerbivoor.Levenskracht++; matrixItemBuurman.IsVeranderd = true; geselecteerditem.IsVeranderd = true; laatsteMatrix.Beweeg(geselecteerdeHerbivoor, matrixItemBuurman); } // Carnivoor eet herbivoor if (geselecteerditem.Symbool == Parameter.CarnivoorTeken && matrixItemBuurman.Symbool == Parameter.HerbivoorTeken && geselecteerditem.IsVeranderd == false) { var geselecteerdeCarnivoor = (Carnivoor)geselecteerditem; var buurmanHerbivoor = (Herbivoor)matrixItemBuurman; matrixItemBuurman.IsVeranderd = true; geselecteerditem.IsVeranderd = true; geselecteerdeCarnivoor.Levenskracht += buurmanHerbivoor.Levenskracht; laatsteMatrix.Beweeg(geselecteerdeCarnivoor, buurmanHerbivoor); } // Herbivoor vrijt met herbivoor if (geselecteerditem.Symbool == Parameter.HerbivoorTeken && matrixItemBuurman.Symbool == Parameter.HerbivoorTeken) { toeTeVoegenHerbivorenBabies++; } // Carnivoor vecht met carnivoor if (geselecteerditem.Symbool == Parameter.CarnivoorTeken && matrixItemBuurman.Symbool == Parameter.CarnivoorTeken && geselecteerditem.IsVeranderd == false) { var speler1 = (Carnivoor)geselecteerditem; var speler2 = (Carnivoor)matrixItemBuurman; if (speler1.Levenskracht > speler2.Levenskracht) { speler1.IsVeranderd = true; speler1.Levenskracht += speler2.Levenskracht; laatsteMatrix.Beweeg(speler1, speler2); } else if (speler1.Levenskracht < speler2.Levenskracht) { speler2.Levenskracht += speler1.Levenskracht; laatsteMatrix.VerwijderItem(speler1); } } // Carnivoor vecht met mens if (geselecteerditem.Symbool == Parameter.CarnivoorTeken && matrixItemBuurman.Symbool == Parameter.MensTeken && geselecteerditem.IsVeranderd == false) { var speler1 = (Carnivoor)geselecteerditem; var speler2 = (Mens)matrixItemBuurman; if (speler1.Levenskracht > speler2.Levenskracht) { speler1.IsVeranderd = true; speler1.Levenskracht += speler2.Levenskracht; laatsteMatrix.Beweeg(speler1, speler2); } else //if (speler1.Levenskracht <= speler2.Levenskracht) { speler2.Levenskracht += speler1.Levenskracht; laatsteMatrix.VerwijderItem(speler1); } } // Mens vecht met carnivoor if (geselecteerditem.Symbool == Parameter.MensTeken && matrixItemBuurman.Symbool == Parameter.CarnivoorTeken && geselecteerditem.IsVeranderd == false) { var speler1 = (Mens)geselecteerditem; var speler2 = (Carnivoor)matrixItemBuurman; if (speler1.Levenskracht >= speler2.Levenskracht) { speler1.IsVeranderd = true; // ADDED speler2.IsVeranderd = true; speler1.Levenskracht += speler2.Levenskracht; laatsteMatrix.Beweeg(speler1, speler2); } else if (speler1.Levenskracht < speler2.Levenskracht) { speler2.Levenskracht += speler1.Levenskracht; laatsteMatrix.VerwijderItem(speler1); } } // Mens vrijt met Mens if (geselecteerditem.Symbool == Parameter.MensTeken && matrixItemBuurman.Symbool == Parameter.MensTeken) { toeTeVoegenMensenBabies++; } // Herbivoren, carnivoren en mensen bewegen if ((geselecteerditem.Symbool == Parameter.CarnivoorTeken || geselecteerditem.Symbool == Parameter.HerbivoorTeken || geselecteerditem.Symbool == Parameter.MensTeken) && matrixItemBuurman.Symbool == Parameter.LeegItemTeken && geselecteerditem.IsVeranderd == false) { // Controle welke plaatse rondom vrij is var matrixItemMogelijkheden = laatsteMatrix.geefLegePosities(geselecteerditem); if (matrixItemMogelijkheden.Count() > 0) { var randomGeselecteerdItem = matrixItemMogelijkheden[rnd.Next(0, matrixItemMogelijkheden.Count())]; laatsteMatrix.Beweeg(geselecteerditem, randomGeselecteerdItem); randomGeselecteerdItem.IsVeranderd = true; } geselecteerditem.IsVeranderd = true; } } } int aantalPlaatsen; // Babies herbivoren toevoegen aantalPlaatsen = laatsteMatrix.AantalLegePosities(); if (toeTeVoegenHerbivorenBabies > aantalPlaatsen) { toeTeVoegenHerbivorenBabies = aantalPlaatsen; } for (var lus = 0; lus < toeTeVoegenHerbivorenBabies; lus++) { var toeTeVoegenHerbivoor = new Herbivoor(); toeTeVoegenHerbivoor.Levenskracht = 0; laatsteMatrix.VoegItemToe(toeTeVoegenHerbivoor); } // Babies mensen toevoegen aantalPlaatsen = laatsteMatrix.AantalLegePosities(); if (toeTeVoegenMensenBabies > aantalPlaatsen) { toeTeVoegenMensenBabies = aantalPlaatsen; } for (var lus = 0; lus < toeTeVoegenMensenBabies; lus++) { var toeTeVoegenMens = new Mens(); toeTeVoegenMens.Levenskracht = 1; laatsteMatrix.VoegItemToe(toeTeVoegenMens); } // Planten ad random toevoegen var aantalPlantenBijvoegen = Parameter.AantalPlantenBijvoegen; aantalPlaatsen = laatsteMatrix.AantalLegePosities(); if (aantalPlantenBijvoegen > aantalPlaatsen - Parameter.MinAantalLeeg) { aantalPlantenBijvoegen = aantalPlaatsen - Parameter.MinAantalLeeg; } for (var lus = 0; lus < aantalPlantenBijvoegen; lus++) { var toeTeVoegenPlant = new Plant(); laatsteMatrix.VoegItemToe(toeTeVoegenPlant); } Console.WriteLine(); Console.WriteLine(); // De matrix van "vandaag" weergeven GeefSituatieWeer(laatsteMatrix, "Huidige situatie:"); } if (input == "o") { input = "."; try { using (var bestand = File.Open(@"Terrarium.obj", FileMode.OpenOrCreate)) //using (var bestand = File.Open(@"C:\Users\net06\Desktop\Terrarium.obj", FileMode.OpenOrCreate)) { var schrijverMatrix = new BinaryFormatter(); schrijverMatrix.Serialize(bestand, laatsteMatrix.Items); } Console.WriteLine("Uw spel werd opgeslagen"); Console.WriteLine("Duw op enter om verder te gaan"); Console.Read(); } catch (SerializationException) { Console.WriteLine("Fout bij het opslaan van de matrix"); Console.Read(); } catch (Exception ex) { Console.WriteLine("User error, please replace user\n" + ex.Message); Console.Read(); } } if (input == "l") { input = "."; Console.Clear(); try { using (var bestand = File.Open(@"Terrarium.obj", FileMode.OpenOrCreate)) //using (var bestand = File.Open(@"C:\Users\net06\Desktop\Terrarium.obj", FileMode.Open, FileAccess.Read)) { var lezerMatrix = new BinaryFormatter(); List <MatrixItem> nieuweItems; nieuweItems = (List <MatrixItem>)lezerMatrix.Deserialize(bestand); laatsteMatrix.Items = nieuweItems; GeefSituatieWeer(laatsteMatrix, "Opgeslagen spel:"); } Console.WriteLine("Duw op enter om verder te gaan"); Console.Read(); } catch (SerializationException) { Console.WriteLine("Fout bij het openen van de opgeslagen matrix"); Console.Read(); } catch (Exception ex) { Console.WriteLine("Djuu, het lukt nie!/n" + ex.Message); Console.Read(); } } tijdOverschreden = false; }while (input != "s"); }