static Character CharacterCreation(Game spelet) { //TODO: lägg till flera namn, spelare kanske är för bra! string[] namn = new string[] { "Sofia Björn", "Clidna Annemarie", "Timo Thorne", "Merrill Latasha", "Jarka Iona", "Liis Rafaela", "Floella Halinka", "Elva Lamya", "Britta Conchobhar", "Alana Ellie", "Magni Tonya" }; Random rand = new Random(); //Hälsa, mellan 1 och 100. int sbefinnande = rand.Next(spelet.minbefinnande, spelet.maxbefinnande); //Ge motståndaren ett namn int rNamn = rand.Next(1, namn.Length); //Skapa Motståndaren Character motstandare = new Character(namn[rNamn], sbefinnande, 0, false, 1, rand.Next(1, 51), 0, 0, rand.Next(spelet.minPengar, spelet.maxPengar), 1); //Modifiera styrkan motstandare.styrka = motstandare.RullaTarningen(); //Spara motståndaren SaveViaDataContractSerialization(motstandare, "motstandare.xml"); //Spara Motståndaren //Ge tillbaka motståndaren till spelet return(motstandare); }
static void Main() { //Variabler Character spelare; Game spelet; Character motstandare; //Finns ens spelet? if (!File.Exists("spelet.xml")) { // Skapa spelet spelet = new Game(30, 71, 1, 11, 1, "Startet av spelet", 10, 101, 100, 125, 150); // Viktiga variabler Random rand = new Random(); int sbefinnande = rand.Next(30, 101); //Hälsa, mellan 30 och 100. //Fråga spelaren Console.WriteLine("Vad heter din spelare?"); //Skapa spelaren spelare = new Character(Console.ReadLine(), sbefinnande, 0, false, 1, rand.Next(1, 51), 0, 0, 100, 0); //Skapa Spelaren //Rulla tärningen Console.WriteLine("Du kastar en tärning"); spelare.styrka = spelare.RullaTarningen(); //Spara spelaren och ladda in SaveViaDataContractSerialization(spelare, "spelare.xml"); //Spara Spelaren spelare = null; //Spelaren "tas bort" spelare = LoadViaDataContractSerialization <Character>("spelare.xml"); //Ladda in spelare. //Skapa Motståndaren motstandare = CharacterCreation(spelet); //Spara spelet och dess karaktärer SaveGame(spelet, spelare, motstandare); } else { //Spelet finns, ladda in spelet spelet = LoadGame(); spelet.LoggaDetta("Laddade in spelet"); //Ladda in spelare spelare = LoadViaDataContractSerialization <Character>("spelare.xml"); //Ladda in spelare. if (spelare.dead == null) { spelare.dead = false; } Console.WriteLine(spelare.ToString()); //Visa spelaren SaveViaDataContractSerialization(spelare, "spelare.xml"); //Spara Spelaren spelare = null; //Spelaren "tas bort" spelare = LoadViaDataContractSerialization <Character>("spelare.xml"); //Ladda in spelare. //Ladda in motståndaren motstandare = LoadViaDataContractSerialization <Character>("motstandare.xml"); //Ladda in spelare. if (motstandare.dead == null) { motstandare.dead = false; } SaveViaDataContractSerialization(motstandare, "motstandare.xml"); //Spara Spelaren motstandare = null; //Spelaren "tas bort" motstandare = LoadViaDataContractSerialization <Character>("motstandare.xml"); //Ladda in spelare. } //Starta rundan Runda(spelare, motstandare, spelet); }
static void Runda(Character spelare, Character motstandare, Game spelet) { //Rensa skärmen Console.Clear(); //Logga rundan spelet.LoggaDetta(String.Format("Runda {0}", spelet.rundorAvklarade)); //Temporära varaiblar int spelareMaxbefinnande = spelare.befinnande; int mMaxbefinnande = motstandare.befinnande; bool avslutarSpelet = false; //Skriv ut vem spelaren möter Console.WriteLine(String.Format("{0} möter {1}. Du har en hälsa av {2} och en styrka på {3}, motståndaren har en hälsa på {4}.", spelare.namn, motstandare.namn, spelare.befinnande, spelare.styrka, motstandare.befinnande)); if (spelare.fart > motstandare.fart) { Console.WriteLine("Du är snabbare än din motståndare"); } else { Console.WriteLine("Du är långsammare än din motståndare"); } Console.WriteLine("Klicka enter för att fortsätta..."); Console.ReadLine(); //Börjar while-loopen, se till att den bara följs så länge både spelaren inte är död, motståndaren inte är död och spelaren inte valt att avsluta spelet. while (!spelare.dead && !motstandare.dead && !avslutarSpelet) { Console.Clear(); Console.WriteLine(String.Format("Din hälsa: {0}/{1}", spelare.befinnande, spelareMaxbefinnande)); Console.WriteLine(String.Format("{0}s hälsa: {1}/{2}", motstandare.namn, motstandare.befinnande, mMaxbefinnande)); //Är spelare snabbare än motståndare eller lika snabb som motståndare, så går spelaren först if (spelare.fart > motstandare.fart || spelare.fart == motstandare.fart) { Console.WriteLine("1) Attakera"); Console.WriteLine("2) Ge upp"); Console.WriteLine("3) Avsluta och spara"); Console.Write("\r\nVad vill du göra? "); switch (Console.ReadLine()) { case "1": //Motståndaren tar skada spelare.Attakera(motstandare, spelet); break; case "2": //Spelaren ger upp spelare.Attakera(spelare, spelet); avslutarSpelet = true; break; case "3": //Spelaren avslutar och sparar Console.WriteLine(String.Format("Det verkar som att {0} vill ta en paus. Än så länge har {0} klarat sig i {1} rundor.", spelare.namn, spelet.rundorAvklarade)); spelet.LoggaDetta(String.Format("Spelet avslutades vid runda {0} av spelaren.", spelet.rundorAvklarade)); avslutarSpelet = true; SaveGame(spelet, spelare, motstandare); break; default: //Motståndaren tar skada spelare.Attakera(motstandare, spelet); break; } if (!avslutarSpelet) { if (motstandare.befinnande > 0) { motstandare.Attakera(spelare, spelet); } } } //Om motståndaren är snabbare än spelare, så går motståndaren först else { if (!avslutarSpelet) { if (motstandare.befinnande > 0) { motstandare.Attakera(spelare, spelet); //Attakera spelaren } } Console.WriteLine("1) Attakera"); Console.WriteLine("2) Ge upp"); Console.WriteLine("3) Avsluta och spara"); Console.Write("\r\nVad vill du göra? "); switch (Console.ReadLine()) { case "1": //Motståndaren tar skada spelare.Attakera(motstandare, spelet); break; case "2": //Spelaren ger upp spelare.Attakera(spelare, spelet); spelare.dead = true; avslutarSpelet = true; break; case "3": //Spelaren avslutar och sparar Console.WriteLine(String.Format("Det verkar som att {0} vill ta en paus. Än så länge har {0} klarat sig i {1} rundor.", spelare.namn, spelet.rundorAvklarade)); spelet.LoggaDetta(String.Format("Spelet avslutades vid runda {0} av spelaren.", spelet.rundorAvklarade)); avslutarSpelet = true; SaveGame(spelet, spelare, motstandare); break; default: //Motståndaren tar skada spelare.Attakera(motstandare, spelet); break; } } Console.WriteLine("Klicka enter för att fortsätta..."); Console.ReadLine(); } if (!spelare.dead && motstandare.dead && !avslutarSpelet) { //Spelarens hälsa återställs spelare.befinnande = spelareMaxbefinnande; //loggar att runda är avklarad spelet.LoggaDetta(String.Format("Runda {0} avklarad", spelet.rundorAvklarade)); spelet.rundorAvklarade += 1; //Ny motståndare läggs till motstandare = CharacterCreation(spelet); //Spelarens styrka randomizeras spelare.styrka = spelare.RullaTarningen(); //Spara Spelet SaveGame(spelet, spelare, motstandare); //Starta shoppen Console.WriteLine("Du ser en trevlig affär"); bool spelareShop = true; int shopId = 0; while (spelareShop) { if (shopId == 0) { Console.WriteLine("1) Gå in i affären"); Console.WriteLine("2) Gå till nästa runda"); Console.WriteLine("3) Avsluta och spara"); Console.Write("\r\nVad vill du göra? "); switch (Console.ReadLine()) { case "1": shopId = 1; break; case "2": spelareShop = false; break; case "3": spelareShop = false; avslutarSpelet = true; SaveGame(spelet, spelare, motstandare); break; default: spelareShop = false; break; } } else if (shopId == 1) { Console.WriteLine(String.Format("Du har {0} pengar", spelare.pengar)); Console.WriteLine(String.Format("1) Uppgradera svärd (kostar {0})", spelet.kostnadSvard)); if (spelare.brostplat == 0) { Console.WriteLine(String.Format("2) Köp bröstplåt (kostar {0})", spelet.kostnadBrostplat)); } else { Console.WriteLine(String.Format("2) Uppgradera bröstplåt (kostar {0})", spelet.kostnadBrostplat)); } if (spelare.benskydd == 0) { Console.WriteLine(String.Format("3) Köp benskydd (kostar {0})", spelet.kostnadBenskydd)); } else { Console.WriteLine(String.Format("3) Uppgradera benskydd(kostar {0})", spelet.kostnadBenskydd)); } Console.WriteLine("4) Gå ut ur affären"); Console.Write("\r\nVad vill du göra? "); switch (Console.ReadLine()) { case "1": if (spelare.pengar >= spelet.kostnadSvard) { spelare.svard += 1; spelare.pengar -= spelet.kostnadSvard; spelet.kostnadSvard *= 2; Console.WriteLine(String.Format("Du har uppgraderat dit svärd till level {0}!\nNästa gång du handlar ett svärd kommer det kosta {1}.", spelare.svard, spelet.kostnadSvard)); spelet.LoggaDetta(String.Format("Spelaren har nu svärd level {0} och {1} pengar", spelare.brostplat, spelare.pengar)); SaveGame(spelet, spelare, motstandare); } else { Console.WriteLine(String.Format("Tyvärr, det kostar {0} att uppgradera dit svärd, du har enbart {1}. Du behöver {2} fler pengar för att kunna köpa detta svärd.", spelet.kostnadSvard, spelare.pengar, spelet.kostnadSvard - spelare.pengar)); } break; case "2": if (spelare.pengar >= spelet.kostnadBrostplat) { spelare.brostplat += 1; spelare.pengar -= spelet.kostnadBrostplat; spelet.kostnadBrostplat *= 2; if (spelare.brostplat != 1) { Console.WriteLine(String.Format("Du har uppgraderat dit bröstplåt till level {0}!\nNästa gång du handlar en bröstplåt kommer det kosta {1}.", spelare.brostplat, spelet.kostnadBrostplat)); } else { Console.WriteLine(String.Format("Du har köpt en bröstplåt!\nNästa gång du handlar en bröstplåt kommer det kosta {0}.", spelet.kostnadBrostplat)); } spelet.LoggaDetta(String.Format("Spelaren har nu bröstplåt level {0} och {1} pengar", spelare.brostplat, spelare.pengar)); SaveGame(spelet, spelare, motstandare); } else { if (spelare.brostplat != 0) { Console.WriteLine(String.Format("Tyvärr, det kostar {0} att uppgradera din bröstplåt, du har enbart {1}. Du behöver {2} fler pengar för att kunna köpa denna bröstplåt.", spelet.kostnadBrostplat, spelare.pengar, spelet.kostnadBrostplat - spelare.pengar)); } else { Console.WriteLine(String.Format("Tyvärr, det kostar {0} att köpa en bröstplåt, du har enbart {1}. Du behöver {2} fler pengar för att kunna köpa denna bröstplåt.", spelet.kostnadBrostplat, spelare.pengar, spelet.kostnadBrostplat - spelare.pengar)); } } break; case "3": if (spelare.pengar >= spelet.kostnadBenskydd) { spelare.benskydd += 1; spelare.pengar -= spelet.kostnadBenskydd; spelet.kostnadBenskydd *= 2; if (spelare.benskydd != 1) { Console.WriteLine(String.Format("Du har uppgraderat dit benskydd till level {0}!\nNästa gång du handlar ett benskydd kommer det kosta {1}.", spelare.benskydd, spelet.kostnadBenskydd)); } else { Console.WriteLine(String.Format("Du har köpt ett benskydd!\nNästa gång du handlar ett benskydd kommer det kosta {0}.", spelet.kostnadBenskydd)); } spelet.LoggaDetta(String.Format("Spelaren har nu benskydd level {0} och {1} pengar", spelare.benskydd, spelare.pengar)); SaveGame(spelet, spelare, motstandare); } else { if (spelare.benskydd != 0) { Console.WriteLine(String.Format("Tyvärr, det kostar {0} att uppgradera dina benskydd, du har enbart {1}. Du behöver {2} fler pengar för att kunna köpa dessa benskydd.", spelet.kostnadBenskydd, spelare.pengar, spelet.kostnadBenskydd - spelare.pengar)); } else { Console.WriteLine(String.Format("Tyvärr, det kostar {0} att köpa benskydd, du har enbart {1}. Du behöver {2} fler pengar för att kunna köpa dessa benskydd.", spelet.kostnadBenskydd, spelare.pengar, spelet.kostnadBenskydd - spelare.pengar)); } } break; case "4": shopId = 0; break; default: shopId = 0; break; } } } //Ny runda Runda(spelare, motstandare, spelet); } if (spelare.dead && !motstandare.dead) { Console.WriteLine(String.Format("Det här verkar som slutet på resan för {0}, som stolt klarade sig i {1} rundor.", spelare.namn, spelet.rundorAvklarade - 1)); spelet.LoggaDetta(String.Format("Spelaren dog vid runda {0}, spelet avslutas", spelet.rundorAvklarade - 1)); File.Delete("spelare.xml"); File.Delete("motstandare.xml"); File.Delete("spelet.xml"); } }