Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Certainly! I'll expand the code to include more features such as a more complex world, additional player stats, a leveling system, and more diverse gameplay elements. Here's an extended version of the text-based adventure game:
- ```python
- import random
- import time
- import json
- import os
- class Player:
- def __init__(self, name):
- self.name = name
- self.level = 1
- self.exp = 0
- self.max_health = 100
- self.health = self.max_health
- self.attack = 10
- self.defense = 5
- self.gold = 0
- self.inventory = {}
- self.equipped = {"weapon": None, "armor": None}
- self.location = "Town Square"
- self.quests = []
- class Enemy:
- def __init__(self, name, level, health, attack, defense, exp_reward, gold_reward):
- self.name = name
- self.level = level
- self.health = health
- self.attack = attack
- self.defense = defense
- self.exp_reward = exp_reward
- self.gold_reward = gold_reward
- class Item:
- def __init__(self, name, description, item_type, effect, value):
- self.name = name
- self.description = description
- self.item_type = item_type
- self.effect = effect
- self.value = value
- class Quest:
- def __init__(self, name, description, objective, reward):
- self.name = name
- self.description = description
- self.objective = objective
- self.reward = reward
- self.completed = False
- class World:
- def __init__(self):
- self.locations = {
- "Town Square": ["Marketplace", "Tavern", "Blacksmith"],
- "Marketplace": ["Town Square", "Alchemist Shop"],
- "Tavern": ["Town Square", "Inn"],
- "Blacksmith": ["Town Square"],
- "Alchemist Shop": ["Marketplace"],
- "Inn": ["Tavern"],
- "Forest Entrance": ["Town Square", "Dark Forest", "Mountain Path"],
- "Dark Forest": ["Forest Entrance", "Haunted Clearing"],
- "Haunted Clearing": ["Dark Forest", "Abandoned Mine"],
- "Abandoned Mine": ["Haunted Clearing"],
- "Mountain Path": ["Forest Entrance", "Mountain Peak"],
- "Mountain Peak": ["Mountain Path", "Dragon's Lair"],
- "Dragon's Lair": ["Mountain Peak"]
- }
- def print_slowly(text):
- for char in text:
- print(char, end='', flush=True)
- time.sleep(0.02)
- print()
- def create_enemies():
- return [
- Enemy("Goblin", 1, 30, 8, 2, 20, 5),
- Enemy("Wolf", 2, 40, 12, 3, 30, 8),
- Enemy("Orc", 3, 60, 15, 5, 50, 15),
- Enemy("Troll", 5, 100, 20, 8, 100, 30),
- Enemy("Dark Mage", 7, 80, 25, 6, 150, 50),
- Enemy("Dragon", 10, 200, 35, 15, 500, 200)
- ]
- def create_items():
- return [
- Item("Health Potion", "Restores 50 HP", "consumable", lambda player: setattr(player, "health", min(player.health + 50, player.max_health)), 20),
- Item("Strength Potion", "Increases attack by 5 for one battle", "consumable", lambda player: setattr(player, "attack", player.attack + 5), 30),
- Item("Iron Sword", "A sturdy iron sword", "weapon", lambda player: setattr(player, "attack", player.attack + 10), 100),
- Item("Steel Armor", "Protective steel armor", "armor", lambda player: setattr(player, "defense", player.defense + 10), 150),
- Item("Magic Amulet", "Increases max health by 25", "accessory", lambda player: setattr(player, "max_health", player.max_health + 25), 200)
- ]
- def create_quests():
- return [
- Quest("Goblin Slayer", "Defeat 5 Goblins", {"Goblin": 5}, {"exp": 100, "gold": 50}),
- Quest("Wolf Hunter", "Defeat 3 Wolves", {"Wolf": 3}, {"exp": 150, "gold": 75}),
- Quest("Orc Chieftain", "Defeat the Orc leader", {"Orc": 1}, {"exp": 300, "gold": 150}),
- Quest("Dragon Slayer", "Defeat the mighty Dragon", {"Dragon": 1}, {"exp": 1000, "gold": 500})
- ]
- def explore(player, enemies, items, world):
- print_slowly(f"\n{player.name} is exploring {player.location}...")
- time.sleep(1)
- if random.random() < 0.6:
- enemy = random.choice([e for e in enemies if e.level <= player.level + 2])
- print_slowly(f"You encounter a level {enemy.level} {enemy.name}!")
- combat(player, enemy)
- elif random.random() < 0.3:
- item = random.choice(items)
- print_slowly(f"You found a {item.name}!")
- print_slowly(item.description)
- if item.name in player.inventory:
- player.inventory[item.name] += 1
- else:
- player.inventory[item.name] = 1
- print_slowly(f"{item.name} has been added to your inventory.")
- else:
- print_slowly("You find nothing of interest.")
- def combat(player, enemy):
- print_slowly(f"\nCombat with level {enemy.level} {enemy.name} begins!")
- while player.health > 0 and enemy.health > 0:
- print_slowly(f"\n{player.name}'s Health: {player.health}/{player.max_health}")
- print_slowly(f"{enemy.name}'s Health: {enemy.health}")
- action = input("Do you want to (A)ttack, use (I)tem, or (R)un? ").lower()
- if action == 'a':
- damage = max(1, player.attack - enemy.defense + random.randint(-2, 2))
- enemy.health -= damage
- print_slowly(f"You deal {damage} damage to the {enemy.name}.")
- if enemy.health <= 0:
- print_slowly(f"You have defeated the {enemy.name}!")
- reward_exp = enemy.exp_reward
- reward_gold = enemy.gold_reward
- player.exp += reward_exp
- player.gold += reward_gold
- print_slowly(f"You gain {reward_exp} EXP and {reward_gold} gold!")
- level_up(player)
- update_quests(player, enemy.name)
- return
- enemy_damage = max(1, enemy.attack - player.defense + random.randint(-2, 2))
- player.health -= enemy_damage
- print_slowly(f"The {enemy.name} deals {enemy_damage} damage to you.")
- elif action == 'i':
- use_item(player)
- elif action == 'r':
- if random.random() < 0.5:
- print_slowly("You successfully flee from the battle!")
- return
- else:
- print_slowly("You failed to escape!")
- enemy_damage = max(1, enemy.attack - player.defense + random.randint(-2, 2))
- player.health -= enemy_damage
- print_slowly(f"The {enemy.name} deals {enemy_damage} damage to you.")
- else:
- print_slowly("Invalid action. You hesitate and lose your turn!")
- enemy_damage = max(1, enemy.attack - player.defense + random.randint(-2, 2))
- player.health -= enemy_damage
- print_slowly(f"The {enemy
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement