Python 大型游戏开发示例:迷失之城
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()
注意:这只是一个简单的示例,可以根据需求进行修改和扩展。这个游戏的目标是击败所有敌人并收集宝藏。玩家可以在不同的房间之间移动,并与敌人战斗。战斗中,玩家和敌人的攻击力和生命值是随机生成的。收集到的宝藏数量将记录在玩家信息中。
原文地址: https://www.cveoy.top/t/topic/qoqK 著作权归作者所有。请勿转载和采集!