示例#1
0
        //Denna metod håller allt som händer i puzzelroom. Man kommer in i rummet och måste svara rätt på en fråga, svara spelaren fel kommer den att ta skada samt att dess svar längs in i en hashset som man kan få utskriven
        // Så länge spelarens svar inte är en av de som finns i correctAnswer arrayen kommer den behöva skriva om sitt svar tills den matchar en plats i arrayen eller tills spelarens hp når 0. då retuneras spelarens hp
        public override int EnteringSeq1(ThePirates player)
        {
            Console.WriteLine("What does skeletons like to eat/drink?");
            Console.WriteLine("Write any answer you can think of however for every wrong answer you recive some damage");

            string input = Console.ReadLine();



            while (input != correctAnswers[0] && input != correctAnswers[1] && input != correctAnswers[2] && input != correctAnswers[3] && input != correctAnswers[4] && input != correctAnswers[5])
            {                             // loopen kommer fortsätta tills spelaren skriver ett svar som lika med en av dem i arrayen correctAnswer
                playersAnswer.Add(input); // Spelaren svar läggs till i en hashset

                Console.WriteLine("Wrong answer take some damage, try again");
                player.hp = player.hp - 10; // Svarar spelaren fel kommer 10 dras av från dess hp

                Console.WriteLine("Your hp is at " + player.hp);

                Console.WriteLine("Want to see your previous answers? (write yes or no)");
                input = Console.ReadLine();

                if (input == "yes") // Om spelaren skriver ja kommer dess svar att vissas annars fortsätter spelet tills spelare skrivit in ett svar som matchar med arrayen correctanswers
                {
                    ShowAnswers();
                    Console.WriteLine("Try to answer the question again");
                    input = Console.ReadLine();
                    input = InputManager.YesOrNo(input);
                }
                else if (input == "no")
                {
                    Console.WriteLine("Okay write your next answer and press enter to countinue");
                    input = Console.ReadLine();
                }

                if (player.hp <= 0) //När spelarens hp är vid 0 kommer dens värde att retuneras
                {
                    return(player.hp);
                }
            }


            if (input == correctAnswers[0] || input == correctAnswers[1] || input == correctAnswers[2] || input == correctAnswers[3] || input == correctAnswers[4] || input == correctAnswers[5])
            {// När spelaren har skrivit ett svar som matcher med arrayen correctAnswers så kommer spelarens hp att retuneras.
                Console.WriteLine("Congrats, you answered correctly");
                Console.WriteLine("You can now exit, your welcome");
                return(player.hp);
            }

            return(player.hp);
        }
示例#2
0
        //Denna metod håller allt som händer i puzzelroom. Man kommer in i rummet och måste svara rätt på en fråga, svara spelaren fel kommer den att ta skada samt att dess svar längs in i en hashset som man kan få utskriven
        // Så länge spelarens svar inte är en av de som finns i correctAnswer arrayen kommer den behöva skriva om sitt svar tills den matchar en plats i arrayen eller tills spelarens hp når 0. då retuneras spelarens hp
        //Se PuzzelRoom för en tydligare förklaring
        public override int EnteringSeq2(ThePirates player)
        {
            Console.WriteLine("What instrument do a skeleton like to play");
            Console.WriteLine("Write any answer you can think of however for every wrong answer you recive some damage");

            string input = Console.ReadLine();



            while (input != correctAnswers2[0] && input != correctAnswers2[1] && input != correctAnswers2[2] && input != correctAnswers2[3] && input != correctAnswers2[4] && input != correctAnswers2[5])
            {
                playersAnswer2.Add(input);

                Console.WriteLine("Wrong answer take some damage, try again");
                player.hp = player.hp - 10;

                Console.WriteLine("Your hp is at " + player.hp);

                Console.WriteLine("Want to see your previous answers?");
                input = Console.ReadLine();

                if (input == "yes")
                {
                    ShowAnswers2();
                    Console.WriteLine("Try to answer the question again");
                    input = Console.ReadLine();
                    input = InputManager.YesOrNo(input);
                }
                else if (input == "no")
                {
                    input = Console.ReadLine();
                }

                if (player.hp <= 0)//När spelarens hp är vid 0 kommer dens värde att retuneras
                {
                    return(player.hp);
                }
            }


            if (input == correctAnswers2[0] || input == correctAnswers2[1] || input == correctAnswers2[2] || input == correctAnswers2[3] || input == correctAnswers2[4] || input == correctAnswers2[5])
            {
                Console.WriteLine("Congrats, you answered correctly");
                Console.WriteLine("You can now exit, your welcome");
            }

            return(player.hp);
        }
示例#3
0
 //Se EnteringSeq1 för närmare förklaring
 public virtual int EnteringSeq2(ThePirates player)
 {
     return(player.hp);
 }
示例#4
0
 // Se FightRoom eller FightRoom2 för tydligare förklaringar
 public virtual int Battle(ThePirates player, Character foe)
 {
     return(player.hp);
 }
示例#5
0
        public void PlayGame()
        {
            //Gör instanser av ett antal klasser
            Room         currentRoom  = new Room();
            Character    Character    = new Character();
            Treasure     Treasure     = new Treasure();
            ThePirates   ThePirates   = new ThePirates();
            InputManager InputManager = new InputManager();


            currentRoom = new StartRoom(); //Skapar en instans av subklassen startroom som sparas i variabeln currentroom som från början var av datatypen Room,

            Console.WriteLine("You come to a crossroad, do you go to the right or to the left? (Write either right or left to choose)");
            string input = Console.ReadLine();

            input = InputManager.LeftRight(input); //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

            if (input == "right")                  // Om spelaren väljer höger
            {
                currentRoom = new FightRoom();     // Efter att spelaren  valt riktning sparas en ny subklass i variablen currentRoom, detta signalerar att man har bytt rum


                ThePirates.hp = currentRoom.Battle(ThePirates, Character);// Här kallas den subklassen som sparats i currentrooms Battle-metod, parametarna som åker in är av klassen character och thepirates
                // det som returneras sparas sedan i the pirates hp som är en publik variabel


                if (ThePirates.hp <= 0) // Är spelarens hp under 0 kommer spelet automatiskt avslutas och spelaren får spela om spelet
                {
                    Console.WriteLine("you ded, Try again another time, press enter to quit");
                    Console.ReadLine();
                    return;
                }

                Treasure = Treasure.CreateTreasure();// Här kallas klassens treasures metod för att bestämma om skatten som spelaren hittar förtrollad eller inte, detta sparas sedan i variabeln treasure som instaniserades innan
                Console.WriteLine("your team has found treasure! Do you pick it up? (Write either yes or no)");
                input = Console.ReadLine();
                input = InputManager.YesOrNo(input);     //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

                if (input == "yes")                      // Om spelaren väljer/ skriver ja
                {
                    ThePirates.AddToInventory(Treasure); // spelaren svarade ja så stoppas treasuren som har hittats in i the pirates inventory som också är spelarens inventory
                }
                else
                {
                    Console.WriteLine("Okay, you leave it where you found it and instead countiune on to the next crossroad");
                }



                Console.WriteLine("Do you choose to go forward or left?(Write either forward or left to choose)");
                input = Console.ReadLine();
                input = InputManager.LeftForward(input); //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

                if (input == "forward")                  // Om spelaren väljer/ skriver framåt
                {
                    currentRoom = new FightRoom2();      // Efter att spelaren  valt riktning sparas en ny subklass i variablen currentRoom, detta signalerar att man har bytt rum


                    ThePirates.hp = currentRoom.Battle(ThePirates, Character); // Här kallas den subklassen som sparats i currentrooms Battle-metod, parametarna som åker in är av klassen characters
                                                                               // det som returneras sparas sedan i the pirates hp som är en publik variabel


                    if (ThePirates.hp <= 0) // Är spelarens hp under 0 kommer spelet automatiskt avslutas och spelaren får spela om spelet
                    {
                        Console.WriteLine("you ded, Try again another time, press enter to quit");
                        Console.ReadLine();
                        return;
                    }


                    Treasure Treasure2 = Treasure.CreateTreasure();// här instaniseras en ny treasure där en ny treasure sparas som är en av de 2 tillgängliga subklasserna
                    Console.WriteLine("your team has found treasure! Do you pick it up? (Write yes or no)");
                    input = Console.ReadLine();
                    input = InputManager.YesOrNo(input);     //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

                    if (input == "yes")                      // Om spelaren väljer/ skriver ja
                    {
                        ThePirates.AddToInventory(Treasure); // spelaren svarade ja så stoppas treasuren som har hittats in i the pirates inventory som också är spelarens inventory
                    }
                    else
                    {
                        Console.WriteLine("Okay, you leave it where you found it");
                    }



                    Console.WriteLine("Congrats you and your team survived the journey, Press enter to quit");
                    Console.ReadLine();
                    return;
                }
                else if (input == "left")// Om spelaren väljer/ skriver vänster
                {
                    //Play puzzel sequence
                    currentRoom = new PuzzleRoom2();                      //Play puzzelroom 2, Efter att spelaren  valt riktning sparas en ny subklass i variablen currentRoom, detta signalerar att man har bytt rum

                    ThePirates.hp = currentRoom.EnteringSeq2(ThePirates); // Här kallas den subklassen som sparats i currentrooms Enteringsequence-metod, parametarna som åker in är av klassen character
                                                                          // det som returneras sparas sedan i the pirates hp som är en publik variabel

                    if (ThePirates.hp <= 0)                               // Är spelarens hp under 0 kommer spelet automatiskt avslutas och spelaren får spela om spelet
                    {
                        Console.WriteLine("you ded, Try again another time, press enter to quit");
                        Console.ReadLine();
                        return;
                    }


                    Treasure Treasure3 = Treasure.CreateTreasure();// här instaniseras en ny treasure där en ny treasure sparas som är en av de 2 tillgängliga subklasserna
                    Console.WriteLine("your team has found treasure! Do you pick it up? (Write yes or no)");
                    input = Console.ReadLine();
                    input = InputManager.YesOrNo(input);     //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

                    if (input == "yes")                      // Om spelaren väljer/ skriver ja
                    {
                        ThePirates.AddToInventory(Treasure); // spelaren svarade ja så stoppas treasuren som har hittats in i the pirates inventory som också är spelarens inventory
                    }
                    else
                    {
                        Console.WriteLine("Okay, you leave it where you found it");
                    }

                    Console.WriteLine("Congrats you and your team survived the journey, Press enter to quit");
                    Console.ReadLine();
                    return;
                }
            }
            else if (input == "left")                                 // Om spelaren väljer/ skriver vänster
            {
                currentRoom   = new PuzzleRoom();                     // Efter att spelaren  valt riktning sparas en ny subklass i variablen currentRoom, detta signalerar att man har bytt rum
                ThePirates.hp = currentRoom.EnteringSeq1(ThePirates); // Här kallas den subklassen som sparats i currentrooms Enteringsequence-metod, parametarna som åker in är av klassen character
                                                                      // det som returneras sparas sedan i the pirates hp som är en publik variabel

                if (ThePirates.hp <= 0)                               // Är spelarens hp under 0 kommer spelet automatiskt avslutas och spelaren får spela om spelet
                {
                    Console.WriteLine("you ded, Try again another time, press enter to quit");
                    Console.ReadLine();
                    return;
                }


                Treasure Treasure4 = Treasure.CreateTreasure();// här instaniseras en ny treasure där en ny treasure sparas som är en av de 2 tillgängliga subklasserna
                Console.WriteLine("your team has found treasure! Do you pick it up? (Write yes or no)");

                input = Console.ReadLine();
                input = InputManager.YesOrNo(input);                            //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

                if (input == "yes")                                             // Om spelaren väljer/ skriver ja
                {
                    ThePirates.inventory = ThePirates.AddToInventory(Treasure); // spelaren svarade ja så stoppas treasuren som har hittats in i the pirates inventory som också är spelarens inventory
                }
                else
                {
                    Console.WriteLine("Okay, you leave it where you found it");
                }

                Console.WriteLine("forward or right?(Write either right or forward to choose)");
                input = Console.ReadLine();
                input = InputManager.RightForward(input);//Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt



                if (input == "forward")// Om spelaren väljer/ skriver framåt
                {
                    //Play puzzel sequence
                    currentRoom   = new PuzzleRoom2();                    // Efter att spelaren  valt riktning sparas en ny subklass i variablen currentRoom, detta signalerar att man har bytt rum
                    ThePirates.hp = currentRoom.EnteringSeq2(ThePirates); // Här kallas den subklassen som sparats i currentrooms Enteringsequence-metod, parametarna som åker in är av klassen character
                                                                          // det som returneras sparas sedan i the pirates hp som är en publik variabel

                    if (ThePirates.hp <= 0)                               // Är spelarens hp under 0 kommer spelet automatiskt avslutas och spelaren får spela om spelet
                    {
                        Console.WriteLine("you ded, Try again another time, press enter to quit");
                        Console.ReadLine();
                        return;
                    }

                    Treasure Treasure5 = Treasure.CreateTreasure();// här instaniseras en ny treasure där en ny treasure sparas som är en av de 2 tillgängliga subklasserna
                    Console.WriteLine("your team has found treasure! Do you pick it up? (Write yes or no)");
                    input = Console.ReadLine();
                    input = InputManager.YesOrNo(input);     //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

                    if (input == "yes")                      // Om spelaren väljer/ skriver ja
                    {
                        ThePirates.AddToInventory(Treasure); // spelaren svarade ja så stoppas treasuren som har hittats in i the pirates inventory som också är spelarens inventory
                    }
                    else
                    {
                        Console.WriteLine("Okay, you leave it where you found it");
                    }

                    Console.WriteLine("Congrats you and your team survived the journey, Press enter to quit");
                    Console.ReadLine();
                    return;
                }
                else if (input == "right")// Om spelaren väljer/ skriver höger
                {
                    //Play fight sequence
                    currentRoom = new FightRoom2();// Efter att spelaren  valt riktning sparas en ny subklass i variablen currentRoom, detta signalerar att man har bytt rum


                    ThePirates.hp = currentRoom.Battle(ThePirates, Character); // Här kallas den subklassen som sparats i currentrooms Battle-metod, parametarna som åker in är av klassen characters
                                                                               // det som returneras sparas sedan i the pirates hp som är en publik variabel


                    if (ThePirates.hp <= 0)// Är spelarens hp under 0 kommer spelet automatiskt avslutas och spelaren får spela om spelet
                    {
                        Console.WriteLine("you ded, Try again another time, press enter to quit");
                        Console.ReadLine();
                        return;
                    }


                    Treasure Treasure6 = Treasure.CreateTreasure();// här instaniseras en ny treasure där en ny treasure sparas som är en av de 2 tillgängliga subklasserna
                    Console.WriteLine("your team has found treasure! Do you pick it up? (Write yes or no)");
                    input = Console.ReadLine();
                    input = InputManager.YesOrNo(input);     //Kallar på en metod från Inputmanager som kollar om spelaren skrivit ett acceptabelt

                    if (input == "yes")                      // Om spelaren skriver ja
                    {
                        ThePirates.AddToInventory(Treasure); // spelaren svarade ja så stoppas treasuren som har hittats in i the pirates inventory som också är spelarens inventory
                    }
                    else
                    {
                        Console.WriteLine("Okay, you leave it where you found it");
                    }

                    Console.WriteLine("Congrats you and your team survived the journey, Press enter to quit");
                    Console.ReadLine();
                    return;
                }
            }
        }
示例#6
0
        //Denna metod har hand om hela fighten när spelaren går in i ett fightroom, parametrarna som tas in är spelaren och den fienden som slumpades fram i EnterRoom
        //Denna metod innehåller 9 olika scenarion som beror på vad fienden slumpar fram för val och vad spelaren själv väljer
        //Se FightRoom för en tydligare förklaring
        public override int Battle(ThePirates player, Character foe)
        {
            Console.WriteLine("You enter a room that seems to be pretty quiet. The cave is humongos with a little hole at the top for light to stream trhough");
            Console.WriteLine("However when you are distracted by the little hole you hear a screah and the tap of feet");
            Console.WriteLine("You tell your man to get ready for a scrap");


            //Det finns nio olika senarion som kan hända beroende på spelaren och fiendens val
            //fiendes val kommer att slumpas fram varje omgång

            foe = EnterRoom();                  // Det som retunardes från EnterRoom vilket var en enemy, kommer sparas i character foe. Det är den karaktären som spelaren kommer slåss mot

            while (player.hp > 0 && foe.hp > 0) // Denna loop kommer köras så länge som båda kämparnas hp är över 0
            {
                Console.WriteLine("What would you like to do, press 1, 2 or 3 to decide");
                Console.WriteLine("1.Attack");
                Console.WriteLine("2.Dodge");
                Console.WriteLine("3.Charm");


                string input = Console.ReadLine();
                input = InputManager.NumberChose(input);

                int randomNumber = generator.Next(0, 2);



                if (input == "1" && randomNumber == 0)// if player attack and foe attack, Både spelaren och fienden kommer ta skada
                {
                    Console.WriteLine("You attacked and your foe attacked");

                    int playerAttack = player.Attack();

                    int foeAttack = foe.Attack();

                    player.hp = player.GetDamaged(foeAttack);

                    foe.hp = foe.GetDamaged(playerAttack);

                    Console.WriteLine("You did " + playerAttack + " points of damage");
                    Console.WriteLine("The foe did " + foeAttack + " points of damage");
                    Console.WriteLine("your hp is at " + player.hp);
                }
                else if (input == "1" && randomNumber == 1) //  if player attack and foe dodge
                                                            // Om spelaren lyckas få en högre accuracy än fiendens dodge kommer spelaren skada fienden, annars kommer fienden komma undan och ingen tar skada
                {
                    Console.WriteLine("You attacked and your foe dodged");

                    int playerAccuracy = player.HittingTarget();

                    int foeDodge = foe.Dodge();

                    if (playerAccuracy >= foeDodge)
                    {
                        int playerAttack = player.Attack();

                        foe.hp = foe.GetDamaged(playerAttack);

                        Console.WriteLine("The foe did not manage to dodge");
                        Console.WriteLine("You did " + playerAttack + " points of damage");
                    }
                    else if (foeDodge > playerAccuracy)
                    {
                        Console.WriteLine("The foe manage to dodge");
                    }
                }
                else if (input == "1" && randomNumber == 2)// if player attack and foe charm // spelarens accuracy måste vara högre än fiendens charm. Är den det kommer fienden ta skada annars tar spelaren skada
                {
                    Console.WriteLine("You attacked and your foe tried to charm you");

                    int playerAccuracy = player.HittingTarget();

                    int foeCharm = foe.Charm();

                    if (playerAccuracy > foeCharm)
                    {
                        int playerAttack = player.Attack();

                        foe.hp = foe.GetDamaged(playerAttack);

                        Console.WriteLine("The foe did not manage to charm you");
                        Console.WriteLine("You did " + playerAttack + " points of damage");
                    }
                    else if (foeCharm >= playerAccuracy)
                    {
                        player.hp = player.hp - 8;
                        Console.WriteLine("The foe did manage to charm you");
                        Console.WriteLine("you took 8 damage");
                    }
                }
                else if (input == "2" && randomNumber == 0) //if player dodge and foe attack
                                                            // Om spelaren lyckas få en högre dex score än fiendens accuracy kommer spelaren undan och ingen tar skada, annars träffar fienden spelaren och den tar skada
                {
                    Console.WriteLine("You dodged and your foe tried to attack you");

                    int foeAccuracy = foe.HittingTarget();

                    int playerDodge = player.Dodge();

                    if (foeAccuracy >= playerDodge)
                    {
                        int foeAttack = foe.Attack();

                        player.hp = player.GetDamaged(foeAttack);

                        Console.WriteLine("The foe did " + foeAttack + " points of damage");
                        Console.WriteLine("your hp is at " + player.hp);
                    }
                    else if (playerDodge > foeAccuracy)
                    {
                        Console.WriteLine("you managed to dodge the attack");
                    }
                }
                else if (input == "2" && randomNumber == 1) //if player dodge and foe dodge // Båda tar skydd och ingen tar skada eller får konsekvenser
                {
                    Console.WriteLine("You both tried to dodge");
                }
                else if (input == "2" && randomNumber == 2) // if player dodge and foe charm
                                                            // spelarens dex score måste vara högre än fiendens charm. Är den det kommer spelaren undan och ingen tar skada om fiendens charm är högre än spelarens dex kommer spelaren ta skada
                {
                    Console.WriteLine("You dodged and your foe tried to charm you");

                    int playerDodge = player.Dodge();
                    int foeCharm    = foe.Charm();

                    if (playerDodge >= foeCharm)
                    {
                        Console.WriteLine("You managed to dodge the attack");
                    }
                    else if (foeCharm > playerDodge)
                    {
                        player.hp = player.hp - 8;

                        Console.WriteLine("The foe did 8 points of damage");
                        Console.WriteLine("your hp is at " + player.hp);
                    }
                }

                else if (input == "3" && randomNumber == 0) //if player charm and foe attack// spelarens charm score måste vara högre än fiendens accuracy. Är den det kommer fienden ta skada annars tar spelaren skada
                {
                    Console.WriteLine("You tried to charm and your foe tried to attack you");

                    int foeAccuracy = foe.HittingTarget();

                    int playerCharm = player.Charm();

                    if (foeAccuracy > playerCharm)
                    {
                        Console.WriteLine("You didn`t manage to charm your foe");

                        int foeAttack = foe.Attack();

                        player.hp = player.GetDamaged(foeAttack);

                        Console.WriteLine("The foe did " + foeAttack + " points of damage");
                        Console.WriteLine("your hp is at " + player.hp);
                    }
                    else if (playerCharm >= foeAccuracy)
                    {
                        foe.hp = foe.hp - 8;

                        Console.WriteLine("Your foe didn´T manage to get to you within time, your charm was a success");

                        Console.WriteLine("You dealt 8 damage to the foe");
                    }
                }
                else if (input == "3" && randomNumber == 1) //if player charm and foe dodge
                {                                           // spelarens charm score måste vara högre än fiendens dex. Är den det kommer fienden ta skada, däremot om fiendens dex score är högre än spelarens charm tar ingen skada
                    Console.WriteLine("You tried to charm and your foe tried to dodge");

                    int foeDodge    = foe.Dodge();
                    int playerCharm = player.Charm();

                    if (foeDodge >= playerCharm)
                    {
                        Console.WriteLine("The foe managed to dodge");
                    }
                    else if (playerCharm > foeDodge)
                    {
                        foe.hp = foe.hp - 8;
                        Console.WriteLine("You dealt 8 damage to the foe");
                    }
                }
                else if (input == "3" && randomNumber == 2)// if player charm and foe charm // Om fiendens charm är högst tar spelaren skada men om spelarens charm är högst tar fienden skada
                {
                    Console.WriteLine("You and your foe tried to charm each other");

                    int playerCharm = player.Charm();
                    int foeCharm    = foe.Charm();

                    if (foeCharm > playerCharm)
                    {
                        player.hp = player.hp - 8;
                        Console.WriteLine("You suffered 8 damage");
                        Console.WriteLine("Your hp at " + player.hp + " points");
                    }
                    else if (playerCharm > foeCharm)
                    {
                        foe.hp = foe.hp - 8;
                        Console.WriteLine("You dealt 8 damage to the foe");
                    }
                    else if (playerCharm == foeCharm)
                    {
                        Console.WriteLine("nothing happened you both charmed the the same amount");
                    }
                }
            }


            if (player.hp > 0 && foe.hp < 0) //Kommer retunera spelarens hp om spelaren lever
            {
                Console.WriteLine("Hurray you do not die");
                return(player.hp);
            }
            else if (player.hp < 0 && foe.hp > 0)//Kommer retunera spelarens hp om fienden lever
            {
                Console.WriteLine("oh no you died");
                return(player.hp);
            }
            else if (player.hp < 0 && foe.hp < 0)//Kommer retunera spelarens hp om spelaren oc fienden är döda
            {
                Console.WriteLine("oh no you died, but so is your foe");
                return(player.hp);
            }

            return(player.hp);
        }