Python 大型游戏开发示例:迷失之城

以下是一个使用 Python 编写的大型游戏示例 - '迷失之城':

import random

class Game:
    def __init__(self):
        self.player = None
        self.enemies = []
        self.treasures = []
        self.current_room = None
        self.rooms = []

    def start(self):
        print('欢迎来到迷失之城!')
        self.create_rooms()
        self.create_player()
        self.create_enemies()
        self.create_treasures()
        self.current_room = self.rooms[0]
        self.play()

    def create_rooms(self):
        room1 = Room('大厅')
        room2 = Room('走廊')
        room3 = Room('密室')
        room4 = Room('宝藏室')
        room5 = Room('地下室')
        room1.add_neighbor(room2)
        room2.add_neighbor(room1)
        room2.add_neighbor(room3)
        room2.add_neighbor(room4)
        room3.add_neighbor(room2)
        room4.add_neighbor(room2)
        room4.add_neighbor(room5)
        room5.add_neighbor(room4)
        self.rooms.extend([room1, room2, room3, room4, room5])

    def create_player(self):
        name = input('请输入您的角色名称:')
        self.player = Player(name)

    def create_enemies(self):
        for _ in range(3):
            name = random.choice(['巨魔', '恶魔', '僵尸'])
            enemy = Enemy(name)
            room = random.choice(self.rooms)
            room.add_enemy(enemy)
            self.enemies.append(enemy)

    def create_treasures(self):
        for _ in range(3):
            name = random.choice(['黄金', '钻石', '宝剑'])
            treasure = Treasure(name)
            room = random.choice(self.rooms)
            room.add_treasure(treasure)
            self.treasures.append(treasure)

    def play(self):
        while True:
            self.current_room.print_info()
            self.player.print_info()

            action = input('请选择要进行的操作:1-前进,2-后退,3-攻击,4-退出游戏\n')
            
            if action == '1':
                self.move_forward()
            elif action == '2':
                self.move_backward()
            elif action == '3':
                self.attack()
            elif action == '4':
                print('游戏结束!')
                break
            else:
                print('无效的操作,请重新选择!')

            if self.player.hp <= 0:
                print('您的角色已被击败!游戏结束!')
                break

            if self.current_room.has_treasure():
                self.player.add_treasure(self.current_room.get_treasure())
                print('恭喜您获得宝藏!')

            if len(self.enemies) == 0:
                print('您成功击败所有敌人!恭喜您完成游戏!')
                break

    def move_forward(self):
        next_room = self.current_room.get_random_neighbor()
        if next_room:
            self.current_room = next_room
        else:
            print('无法前进!')

    def move_backward(self):
        prev_room = self.current_room.get_previous_room()
        if prev_room:
            self.current_room = prev_room
        else:
            print('无法后退!')

    def attack(self):
        enemy = self.current_room.get_random_enemy()
        if enemy:
            print('您攻击了敌人!')
            self.player.attack(enemy)
            if enemy.hp <= 0:
                self.current_room.remove_enemy(enemy)
                self.enemies.remove(enemy)
                print('您击败了敌人!')
        else:
            print('房间里没有敌人!')


class Room:
    def __init__(self, name):
        self.name = name
        self.neighbors = []
        self.enemies = []
        self.treasures = []

    def add_neighbor(self, room):
        self.neighbors.append(room)

    def get_random_neighbor(self):
        return random.choice(self.neighbors)

    def get_previous_room(self):
        return self.neighbors[0] if len(self.neighbors) > 0 else None

    def add_enemy(self, enemy):
        self.enemies.append(enemy)

    def remove_enemy(self, enemy):
        self.enemies.remove(enemy)

    def get_random_enemy(self):
        return random.choice(self.enemies) if len(self.enemies) > 0 else None

    def add_treasure(self, treasure):
        self.treasures.append(treasure)

    def get_treasure(self):
        return random.choice(self.treasures) if len(self.treasures) > 0 else None

    def has_treasure(self):
        return len(self.treasures) > 0

    def print_info(self):
        print(f'您现在在{self.name},房间里有{len(self.enemies)}个敌人和{len(self.treasures)}个宝藏。')


class Player:
    def __init__(self, name):
        self.name = name
        self.hp = 100
        self.attack_power = 20
        self.treasures = []

    def attack(self, enemy):
        enemy.hp -= self.attack_power

    def add_treasure(self, treasure):
        self.treasures.append(treasure)

    def print_info(self):
        print(f'角色:{self.name},生命值:{self.hp},攻击力:{self.attack_power},宝藏:{len(self.treasures)}个。')


class Enemy:
    def __init__(self, name):
        self.name = name
        self.hp = random.randint(50, 100)
        self.attack_power = random.randint(10, 20)


class Treasure:
    def __init__(self, name):
        self.name = name


game = Game()
game.start()

注意:这只是一个简单的示例,可以根据需求进行修改和扩展。这个游戏的目标是击败所有敌人并收集宝藏。玩家可以在不同的房间之间移动,并与敌人战斗。战斗中,玩家和敌人的攻击力和生命值是随机生成的。收集到的宝藏数量将记录在玩家信息中。

Python 大型游戏开发示例:迷失之城

原文地址: https://www.cveoy.top/t/topic/qoqK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录