任意制作一个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"您现在在{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/iHXW 著作权归作者所有。请勿转载和采集!