Untitled

 avatar
unknown
plain_text
2 months ago
3.5 kB
4
Indexable
import random

class Citizen:
    def __init__(self, name):
        self.name = name
        self.level = 1
        self.shine_points = 0
        self.health = 100
        self.defense = 5
        self.attack = 10
        self.houses = 0

    def level_up(self):
        self.level += 1
        self.health += 20
        self.defense += 5
        self.attack += 5
        print(f"{self.name} leveled up to Level {self.level}! Stats improved.")

class Enemy:
    def __init__(self, name, level):
        self.name = name
        self.level = level
        self.health = level * 20
        self.attack = level * 5

def generate_enemy(player_level):
    enemy_types = ["Tangles", "Dandruff", "Split-Ends", "Frizz", "Grease", "Breakage"]
    name = random.choice(enemy_types)
    enemy_level = max(1, player_level + random.randint(-1, 2))
    return Enemy(name, enemy_level)

def combat(player, enemy):
    print(f"A wild {enemy.name} (Level {enemy.level}) appears!")
    while enemy.health > 0 and player.health > 0:
        # Player's turn
        damage = max(0, player.attack - (enemy.level * 2))
        enemy.health -= damage
        print(f"{player.name} deals {damage} damage to {enemy.name} (HP: {enemy.health})")
        
        if enemy.health <= 0:
            print(f"{enemy.name} defeated!")
            reward = enemy.level * 10
            player.shine_points += reward
            print(f"Earned {reward} Shine Points! Total: {player.shine_points}")
            return True
        
        # Enemy's turn
        damage = max(0, enemy.attack - player.defense)
        player.health -= damage
        print(f"{enemy.name} deals {damage} damage to {player.name} (HP: {player.health})")
        
        if player.health <= 0:
            print(f"{player.name} was defeated...")
            return False
    
    return False

def build_house(player):
    cost = 50 * player.houses + 50  # Cost increases with each house
    if player.shine_points >= cost:
        player.shine_points -= cost
        player.houses += 1
        player.defense += 10  # Houses improve defense
        print(f"Built a house! Total houses: {player.houses}. Shine Points left: {player.shine_points}")
    else:
        print(f"Not enough Shine Points! Need {cost}, have {player.shine_points}")

def game():
    print("Welcome to Planet AF!")
    player_name = input("Enter your citizen name: ")
    player = Citizen(player_name)
    
    while player.health > 0:
        print("\n--- Planet AF Status ---")
        print(f"Level: {player.level} | Health: {player.health} | Shine Points: {player.shine_points}")
        print(f"Houses: {player.houses} | Attack: {player.attack} | Defense: {player.defense}")
        print("1. Fight an enemy")
        print("2. Build a house")
        print("3. Rest (heal)")
        print("4. Quit")
        
        choice = input("What would you like to do? ")
        
        if choice == "1":
            enemy = generate_enemy(player.level)
            if combat(player, enemy) and player.shine_points >= player.level * 100:
                player.level_up()
        elif choice == "2":
            build_house(player)
        elif choice == "3":
            player.health = min(100 + (player.level - 1) * 20, player.health + 50)
            print(f"Rested! Health restored to {player.health}")
        elif choice == "4":
            print("Thanks for protecting Planet AF!")
            break
        else:
            print("Invalid choice!")

if __name__ == "__main__":
    game()
Editor is loading...
Leave a Comment