Inheritance: MonoBehaviour
Exemple #1
0
 //Constructeur
 private TileFactory()
 {
     TileDesert  = new Desert();
     TilePlain   = new Plain();
     TileSwamp   = new Swamp();
     TileVolcano = new Volcano();
 }
Exemple #2
0
        public Quest()
        {
            InitializeComponent();

            player = new Player(10, 10, 20, 0, 1);
            MoveTo(Swamp.LocationByID(Swamp.LOCATION_ID_HOME));
            player.Inventory.Add(new Inventory(Swamp.ItemByID(Swamp.ITEM_ID_SLINGSHOT), 1));

            lblPoints.Text     = player.CurrentPoints.ToString();
            lblGold.Text       = player.Gold.ToString();
            lblExperience.Text = player.ExperiencePoints.ToString();
            lblLevel.Text      = player.Level.ToString();
        }
Exemple #3
0
    /// <summary>
    /// Returns a specific LandTerrain class based on the value of parameter iRange
    /// </summary>
    /// <param name="iRange"></param>
    /// <returns></returns>
    LandTerrain SelectNewTerrain(int iRange)
    {
        //Select a new terrain
        LandTerrain tempTerrain = new LandTerrain();

        //Might randomize which Terrain the tempTerrain will be
        // Different terrain weighted differently

        switch (iRange)
        {
        case 0:     //Forest
            tempTerrain = new Forest();
            return(tempTerrain);

        case 1:     //Grassland
            tempTerrain = new Grassland();
            return(tempTerrain);

        case 2:     //Lake
            tempTerrain = new Lake();
            return(tempTerrain);

        case 3:     //Mountain
            tempTerrain = new Mountain();
            break;

        case 4:     //Desert
            tempTerrain = new Desert();
            break;

        case 5:     //Swamp
            tempTerrain = new Swamp();
            break;

        case 6:     //Tundra
            tempTerrain = new Tundra();
            break;

        case 7:     //Jungle
            tempTerrain = new Jungle();
            break;

        case 8:     //Wasteland
            tempTerrain = new Wasteland();
            break;
        }


        return(tempTerrain);
    }
Exemple #4
0
        private void btnUsePotion_Click(object sender, EventArgs e)
        {
            //Get elixir
            Elixir potion = (Elixir)comboBoxPotions.SelectedItem;

            player.CurrentPoints = (player.CurrentPoints + potion.AmountToHeal);

            if (player.CurrentPoints > player.MaximumPoints)
            {
                player.CurrentPoints = player.MaximumPoints;
            }

            //Remove elixir inventory
            foreach (Inventory item in player.Inventory)
            {
                if (item.Item.ID == potion.ID)
                {
                    item.Quantity--;
                    break;
                }
            }

            //Display message
            rtbMessages.Text += "You drink a " + potion.Name + Environment.NewLine;

            //Gremlin attacks

            int damageToPlayer = RandomNumGenerator.NumberBetween(0, currentMonster.MaximumDamage);

            rtbMessages.Text += "The " + currentMonster.Name + " did " + damageToPlayer.ToString() + " points of damage." + Environment.NewLine;

            player.CurrentPoints -= damageToPlayer;

            if (player.CurrentPoints <= 0)
            {
                rtbMessages.Text += "The " + currentMonster.Name + " killed you." + Environment.NewLine;

                //Move player back home
                MoveTo(Swamp.LocationByID(Swamp.LOCATION_ID_HOME));
            }

            //Refresh data
            lblPoints.Text = player.CurrentPoints.ToString();
            UpdateInventoryListInUI();
            UpdatePotionListInUI();
        }
Exemple #5
0
            public override void Create()
            {
                Name = "MiddleEarth";
                var island   = new Island();
                var forest   = new Forest();
                var swamp    = new Swamp();
                var mountain = new Mountain();
                var plains   = new Plains();

                Areas = new Area[]
                {
                    island, forest, swamp, mountain, plains
                };

                foreach (var area in Areas)
                {
                    area.Create();
                }
            }
Exemple #6
0
            public override void Create()
            {
                Name = "WestEarth";
                var island    = new Island();
                var forest    = new Forest();
                var swamp     = new Swamp();
                var mountain1 = new Mountain();
                var mountain2 = new Mountain();

                Areas = new Area[]
                {
                    island, forest, swamp, mountain1, mountain2
                };

                foreach (var area in Areas)
                {
                    area.Create();
                }
            }
Exemple #7
0
        private void LoadMap(Bytemap bitmap)
        {
            _tiles = new ITile[WIDTH, HEIGHT];

            for (int x = 0; x < WIDTH; x++)
            {
                for (int y = 0; y < HEIGHT; y++)
                {
                    ITile tile;
                    bool  special = TileIsSpecial(x, y);
                    switch (bitmap[x, y])
                    {
                    case 2: tile = new Forest(x, y, special); break;

                    case 3: tile = new Swamp(x, y, special); break;

                    case 6: tile = new Plains(x, y, special); break;

                    case 7: tile = new Tundra(x, y, special); break;

                    case 9: tile = new River(x, y); break;

                    case 10: tile = new Grassland(x, y); break;

                    case 11: tile = new Jungle(x, y, special); break;

                    case 12: tile = new Hills(x, y, special); break;

                    case 13: tile = new Mountains(x, y, special); break;

                    case 14: tile = new Desert(x, y, special); break;

                    case 15: tile = new Arctic(x, y, special); break;

                    default: tile = new Ocean(x, y, special); break;
                    }
                    _tiles[x, y] = tile;
                }
            }
        }
Exemple #8
0
        public void ChangeTileType(int x, int y, Terrain type)
        {
            bool special  = TileIsSpecial(x, y);
            bool road     = _tiles[x, y].Road;
            bool railRoad = _tiles[x, y].RailRoad;

            switch (type)
            {
            case Terrain.Forest: _tiles[x, y] = new Forest(x, y, special); break;

            case Terrain.Swamp: _tiles[x, y] = new Swamp(x, y, special); break;

            case Terrain.Plains: _tiles[x, y] = new Plains(x, y, special); break;

            case Terrain.Tundra: _tiles[x, y] = new Tundra(x, y, special); break;

            case Terrain.River: _tiles[x, y] = new River(x, y); break;

            case Terrain.Grassland1:
            case Terrain.Grassland2: _tiles[x, y] = new Grassland(x, y); break;

            case Terrain.Jungle: _tiles[x, y] = new Jungle(x, y, special); break;

            case Terrain.Hills: _tiles[x, y] = new Hills(x, y, special); break;

            case Terrain.Mountains: _tiles[x, y] = new Mountains(x, y, special); break;

            case Terrain.Desert: _tiles[x, y] = new Desert(x, y, special); break;

            case Terrain.Arctic: _tiles[x, y] = new Arctic(x, y, special); break;

            case Terrain.Ocean: _tiles[x, y] = new Ocean(x, y, special); break;
            }
            _tiles[x, y].Road     = road;
            _tiles[x, y].RailRoad = railRoad;
        }
Exemple #9
0
        private void AgeAdjustments()
        {
            Log("Map: Stage 5 - Age adjustments");

            int x         = 0;
            int y         = 0;
            int ageRepeat = (int)(((float)800 * (1 + _age) / (80 * 50)) * (WIDTH * HEIGHT));

            for (int i = 0; i < ageRepeat; i++)
            {
                if (i % 2 == 0)
                {
                    x = Common.Random.Next(WIDTH);
                    y = Common.Random.Next(HEIGHT);
                }
                else
                {
                    switch (Common.Random.Next(8))
                    {
                    case 0: { x--; y--; break; }

                    case 1: { y--; break; }

                    case 2: { x++; y--; break; }

                    case 3: { x--; break; }

                    case 4: { x++; break; }

                    case 5: { x--; y++; break; }

                    case 6: { y++; break; }

                    default: { x++; y++; break; }
                    }
                    if (x < 0)
                    {
                        x = 1;
                    }
                    if (y < 0)
                    {
                        y = 1;
                    }
                    if (x >= WIDTH)
                    {
                        x = WIDTH - 2;
                    }
                    if (y >= HEIGHT)
                    {
                        y = HEIGHT - 2;
                    }
                }

                bool special = TileIsSpecial(x, y);
                switch (_tiles[x, y].Type)
                {
                case Terrain.Forest: _tiles[x, y] = new Jungle(x, y, special); break;

                case Terrain.Swamp: _tiles[x, y] = new Grassland(x, y); break;

                case Terrain.Plains: _tiles[x, y] = new Hills(x, y, special); break;

                case Terrain.Tundra: _tiles[x, y] = new Hills(x, y, special); break;

                case Terrain.River: _tiles[x, y] = new Forest(x, y, special); break;

                case Terrain.Grassland1:
                case Terrain.Grassland2: _tiles[x, y] = new Forest(x, y, special); break;

                case Terrain.Jungle: _tiles[x, y] = new Swamp(x, y, special); break;

                case Terrain.Hills: _tiles[x, y] = new Mountains(x, y, special); break;

                case Terrain.Mountains:
                    if ((x == 0 || _tiles[x - 1, y - 1].Type != Terrain.Ocean) &&
                        (y == 0 || _tiles[x + 1, y - 1].Type != Terrain.Ocean) &&
                        (x == (WIDTH - 1) || _tiles[x + 1, y + 1].Type != Terrain.Ocean) &&
                        (y == (HEIGHT - 1) || _tiles[x - 1, y + 1].Type != Terrain.Ocean))
                    {
                        _tiles[x, y] = new Ocean(x, y, special);
                    }
                    break;

                case Terrain.Desert: _tiles[x, y] = new Plains(x, y, special); break;

                case Terrain.Arctic: _tiles[x, y] = new Mountains(x, y, special); break;
                }
            }
        }
Exemple #10
0
        private void MoveTo(Location newLocation)
        {
            //See if a pass is needed for location
            if (!player.HasRequiredItemToEnterThisLocation(newLocation))
            {
                rtbMessages.Text += "You need a " + newLocation.ItemRequiredToEnter.Name + " to enter this location." + Environment.NewLine;
                return;
            }

            player.CurrentLocation = newLocation;

            //Show available movements
            btnNorth.Visible = (newLocation.LocationToNorth != null);
            btnEast.Visible  = (newLocation.LocationToEast != null);
            btnSouth.Visible = (newLocation.LocationToSouth != null);
            btnWest.Visible  = (newLocation.LocationToWest != null);

            //Display location name and description
            rtbLocation.Text  = newLocation.Name + Environment.NewLine;
            rtbLocation.Text += newLocation.Description + Environment.NewLine;

            //Heal the player
            player.CurrentPoints = player.MaximumPoints;
            lblPoints.Text       = player.CurrentPoints.ToString();

            //See if quest exists at this location
            if (newLocation.QuestAvailableHere != null)
            {
                handleQuest(newLocation);
            }

            // Does the location have a monster?
            if (newLocation.GremlinLivingHere != null)
            {
                rtbMessages.Text += "You see a " + newLocation.GremlinLivingHere.Name + Environment.NewLine;

                // Make a new monster, using the values from the standard monster in the Swamp.Ogre list
                Gremlin standardMonster = Swamp.GremlinByID(newLocation.GremlinLivingHere.ID);

                currentMonster = new Gremlin(standardMonster.ID, standardMonster.Name, standardMonster.MaximumDamage,
                                             standardMonster.RewardExperiencePoints, standardMonster.RewardGold, standardMonster.CurrentPoints, standardMonster.MaximumPoints);

                foreach (Treasure lootItem in standardMonster.TreasureChest)
                {
                    currentMonster.TreasureChest.Add(lootItem);
                }

                comboBoxWeapons.Visible = true;
                comboBoxPotions.Visible = true;
                btnUseWeapon.Visible    = true;
                btnUsePotion.Visible    = true;
            }
            else
            {
                currentMonster = null;

                comboBoxWeapons.Visible = false;
                comboBoxPotions.Visible = false;
                btnUseWeapon.Visible    = false;
                btnUsePotion.Visible    = false;
            }

            // Refresh player's inventory list
            UpdateInventoryListInUI();

            // Refresh player's quest list
            UpdateQuestListInUI();

            // Refresh player's weapons combobox
            UpdateWeaponListInUI();

            // Refresh player's potions combobox
            UpdatePotionListInUI();
        }
Exemple #11
0
        private void btnUseWeapon_Click(object sender, EventArgs e)
        {
            Weapon currentWeapon   = (Weapon)comboBoxWeapons.SelectedItem;
            int    damageToMonster = RandomNumGenerator.NumberBetween(currentWeapon.MinimumDamage, currentWeapon.MaximumDamage);

            currentMonster.CurrentPoints -= damageToMonster;
            rtbMessages.Text             += "You hit the " + currentMonster.Name + " for " + damageToMonster.ToString() + " points." + Environment.NewLine;

            if (currentMonster.CurrentPoints <= 0)
            {
                //Gremlin is dead
                rtbMessages.Text += Environment.NewLine;
                rtbMessages.Text += "You defeated the " + currentMonster.Name + Environment.NewLine;

                player.ExperiencePoints += currentMonster.RewardExperiencePoints;
                rtbMessages.Text        += "You receive " + currentMonster.RewardExperiencePoints.ToString() + " experience points" + Environment.NewLine;

                player.Gold      += currentMonster.RewardGold;
                rtbMessages.Text += "You receive " + currentMonster.RewardGold.ToString() + " gold" + Environment.NewLine;

                List <Inventory> lootedItems = new List <Inventory>();

                //Add items to the lootedItems list, comparing a random number to the drop percentage
                foreach (Treasure lootItem in currentMonster.TreasureChest)
                {
                    if (RandomNumGenerator.NumberBetween(1, 100) <= lootItem.DropPercentage)
                    {
                        lootedItems.Add(new Inventory(lootItem.Item, 1));
                    }
                }

                //If no items were randomly selected, then add the default loot item(s).
                if (lootedItems.Count == 0)
                {
                    foreach (Treasure lootItem in currentMonster.TreasureChest)
                    {
                        if (lootItem.IsDefaultItem)
                        {
                            lootedItems.Add(new Inventory(lootItem.Item, 1));
                        }
                    }
                }

                // Add the looted items to the player's inventory
                foreach (Inventory inventoryItem in lootedItems)
                {
                    player.AddItemToInventory(inventoryItem.Item);

                    if (inventoryItem.Quantity == 1)
                    {
                        rtbMessages.Text += "You loot " + inventoryItem.Quantity.ToString() + " " + inventoryItem.Item.Name + Environment.NewLine;
                    }
                    else
                    {
                        rtbMessages.Text += "You loot " + inventoryItem.Quantity.ToString() + " " + inventoryItem.Item.NamePlural + Environment.NewLine;
                    }
                }

                // Refresh player information and inventory controls
                lblPoints.Text     = player.CurrentPoints.ToString();
                lblGold.Text       = player.Gold.ToString();
                lblExperience.Text = player.ExperiencePoints.ToString();
                lblLevel.Text      = player.Level.ToString();

                UpdateInventoryListInUI();
                UpdateWeaponListInUI();
                UpdatePotionListInUI();

                // Add a blank line to the messages box, just for appearance.
                rtbMessages.Text += Environment.NewLine;

                //Move player to current location (to heal player and create a new monster to fight)
                MoveTo(player.CurrentLocation);
            }
            else
            {
                // Monster is still alive

                // Determine the amount of damage the monster does to the player
                int damageToPlayer = RandomNumGenerator.NumberBetween(0, currentMonster.MaximumDamage);

                // Display message
                rtbMessages.Text += "The " + currentMonster.Name + " did " + damageToPlayer.ToString() + " points of damage." + Environment.NewLine;

                // Subtract damage from player
                player.CurrentPoints -= damageToPlayer;

                // Refresh player data in UI
                lblPoints.Text = player.CurrentPoints.ToString();

                if (player.CurrentPoints <= 0)
                {
                    // Display message
                    rtbMessages.Text += "The " + currentMonster.Name + " killed you." + Environment.NewLine;

                    // Move player to "Home"
                    MoveTo(Swamp.LocationByID(Swamp.LOCATION_ID_HOME));
                }
            }
        }
Exemple #12
0
        static void Main(string[] args)
        {
            {
/* Welkom bij Simple Adventure
 * Hier zie je een raamwerk van een text based rpg
 * De classes en subclasses zijn al aangemaakt, subclasses staan in de mapjes
 * Aan jou de taak om hier een invulling aan te geven!
 * Wat moet je laten zien:
 *  - Dat je OOP beheerst
 *  - Dat je inheritance beheerst
 *  - Dat je in staat bent om output naar de console te krijgen op basis van de classes
 *  - Het hoeft geen volledig spel te zijn, maar het moet iets doen en het moet werken
 *  - En natuurlijk op de juiste manier in elkaar zitten
 * Waar scoor ik bonuspunten mee:
 *  - Gebruik polymorphism d.m.v. virtual methods en/of verschillende constructors (bijvoorbeeld subclasses)
 *  - Je hebt een speelbare game gemaakt
 *  - Je hebt zinvolle en werkende uitbreidingen gemaakt op het raamwerk
 * Kwaliteit gaat boven kwantiteit, ga pas uitbreiden als je basis goed is
 * Werk alleen: als ik bij twee personen dezelfde code zie, krijgen jullie allebei een onvoldoende
 * Gebruik comments ten overvloede! Leg uit wat je doet! Hoe de comments kort, duidelijk en volledig!
 */
            }

            Player player;

            Forest forest = new Forest();
            Swamp  swamp  = new Swamp();
            Plains plains = new Plains();

            Direwolf wolf   = new Direwolf();
            Goblin   goblin = new Goblin();
            Orc      orc    = new Orc();

            Chest   chest = new Chest();
            Diamond dia   = new Diamond();
            Key     key   = new Key();

            int    userNumber;
            string tempName;

            //creating player
            #region playerSetup
            Console.WriteLine("Greeting new player");
            Console.WriteLine("Welcome to SimpelAdventure");
            Console.ReadLine();

            Console.WriteLine("What is your name?");
            tempName = Console.ReadLine();

            Console.WriteLine("Choose a class!");
            Console.WriteLine("1. Babarian: You like hitting people with sharp stuff || 2. Sorcerer: You like hitting stuff but with lighting");
            userNumber = makeDecision(2);


            if (userNumber == 1)
            {
                player = new Barbarian(tempName);
            }
            else
            {
                player = new Sorcerer(tempName);
            }

            Console.Clear();

            Console.WriteLine("Your name is " + player.name);
            Console.WriteLine("You Choose class " + player.classname);

            Console.ReadLine();
            Console.Clear();
            #endregion

            Console.Clear();
            do
            {
                //end the game if you find both key and chest
                if (key.hasItem && chest.hasItem)
                {
                    dia.hasItem = true;
                    Console.WriteLine("You use the key on the chest and you find a diamond!");
                    Console.WriteLine("This mean you won the game for some reason");
                    Console.WriteLine("Thanks for playing the game");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Choose where you want to go");
                    Console.WriteLine("1. Church: For your healling needs 2. Forest: Lots of murder puppies\n3. Plains: Boring place nothing special 4. Swamp: What are you doing here!");
                    userNumber = makeDecision(4);

                    switch (userNumber)
                    {
                    case 1:
                        EnterChurch(player);
                        break;

                    case 2:
                        EnterLoc(forest, wolf);
                        break;

                    case 3:
                        EnterLoc(plains, goblin);
                        break;

                    case 4:
                        EnterLoc(swamp, orc);
                        break;

                    default:
                        Console.WriteLine("Something went very wrong");
                        break;
                    }
                }
            } while (!dia.hasItem);

            int makeDecision(int maxNumber)
            {
                //This is for whevenever the player has to make a decision
                string userInput;

                do
                {
                    Console.WriteLine("Choose a number between 1 and " + maxNumber);
                    userInput = Console.ReadLine();
                    int.TryParse(userInput, out userNumber);
                } while (userNumber < 1 || userNumber > maxNumber);

                Console.Clear();
                return(userNumber);
            }

            //turn based combat
            void Battle(Player p, Enemy e)
            {
                Console.WriteLine("You are fighting a " + e.name);
                Console.WriteLine("It has " + e.str);
                do
                {
                    p.health -= e.DealDamage();
                    Console.WriteLine(p.name + " has " + p.health + " hp left");
                    e.health -= p.DealDamage();
                    Console.WriteLine(e.name + " has " + e.health + " hp left");
                    Console.ReadLine();
                } while (p.health > 0 && e.health > 0);

                e.ResetHealth();

                //Earn item
                if (e.name == "Direwolf" || e.name == "Goblin")
                {
                    FindItem(key);
                }
                else if (e.name == "Orc" || e.name == "Goblin")
                {
                    FindItem(chest);
                }

                Console.ReadLine();
                Console.Clear();
            }

            //works on everytinh execpt church
            void EnterLoc(Location loc, Enemy e)
            {
                loc.welcome();

                do
                {
                    loc.options();
                    userNumber = makeDecision(2);

                    if (userNumber == 1)
                    {
                        Battle(player, e);
                    }
                    else
                    {
                        loc.Leave();
                    }
                } while (userNumber != 2);
            }

            void EnterChurch(Player p)
            {
                Church church = new Church();

                church.welcome();

                do
                {
                    church.options();
                    userNumber = makeDecision(2);

                    if (userNumber == 1)
                    {
                        Console.WriteLine("You are fully healed!");
                        church.FullHeal(p);
                    }
                    else
                    {
                        church.Leave();
                    }
                } while (userNumber != 2);
            }

            void FindItem(Item item)
            {
                Random rnd = new Random();
                int    i   = rnd.Next(2);

                if (i == 1)
                {
                    item.hasItem = true;
                    Console.WriteLine("You found " + item.itemName);
                }
                else
                {
                    Console.WriteLine("You found no loot");
                }
            }
        }