//Constructeur private TileFactory() { TileDesert = new Desert(); TilePlain = new Plain(); TileSwamp = new Swamp(); TileVolcano = new Volcano(); }
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(); }
/// <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); }
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(); }
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(); } }
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(); } }
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; } } }
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; }
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; } } }
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(); }
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)); } } }
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"); } } }