请用Python语言的控制台交互编写一个简单的龙与地下城游戏能够让玩家自主选择
角色、攻击方式和战斗对象,并在战斗中展示双方的血量和攻击效果。
以下是一个简单的示例代码:
import random
class Player:
def __init__(self, name, hp, attack):
self.name = name
self.hp = hp
self.attack = attack
def take_damage(self, damage):
self.hp -= damage
def is_alive(self):
return self.hp > 0
def attack_player(self, other):
damage = random.randint(1, self.attack)
print(f"{self.name}攻击了{other.name},造成了{damage}点伤害!")
other.take_damage(damage)
class Enemy(Player):
pass
class Game:
def __init__(self):
self.player = None
self.enemies = []
self.enemy = None
def start(self):
print("欢迎来到龙与地下城游戏!")
name = input("请输入您的角色名:")
hp = int(input("请输入您的角色血量:"))
attack = int(input("请输入您的角色攻击力:"))
self.player = Player(name, hp, attack)
print(f"{self.player.name}加入游戏!")
while True:
choice = input("请选择您要进行的操作:1.寻找敌人 2.打印角色信息 3.退出游戏")
if choice == "1":
self.find_enemy()
elif choice == "2":
self.print_player_info()
else:
print("游戏结束!")
break
def find_enemy(self):
if not self.enemies:
self.enemies = [Enemy("小怪兽1", 10, 5), Enemy("小怪兽2", 15, 7), Enemy("小怪兽3", 20, 10)]
print("发现敌人!")
self.enemy = random.choice(self.enemies)
print(f"你遭遇了{self.enemy.name}!")
self.start_battle()
def start_battle(self):
while self.player.is_alive() and self.enemy.is_alive():
choice = input("请选择您要进行的攻击方式:1.普通攻击 2.重击")
if choice == "1":
self.player.attack_player(self.enemy)
else:
self.player.attack *= 2
self.player.attack_player(self.enemy)
self.player.attack //= 2
if self.enemy.is_alive():
self.enemy.attack_player(self.player)
self.print_battle_info()
if self.player.is_alive():
print(f"{self.player.name}获胜!")
else:
print(f"{self.enemy.name}获胜!")
def print_battle_info(self):
print(f"{self.player.name}剩余血量:{self.player.hp}")
print(f"{self.enemy.name}剩余血量:{self.enemy.hp}")
def print_player_info(self):
print(f"角色名:{self.player.name}")
print(f"血量:{self.player.hp}")
print(f"攻击力:{self.player.attack}")
game = Game()
game.start()
在这个游戏中,玩家可以选择普通攻击或重击来攻击敌人。重击将暂时提高攻击力,但也会降低攻击力。游戏中共有三种敌人,每次遭遇敌人时会随机选择一种。战斗结束后,会展示胜利者的信息
原文地址: https://www.cveoy.top/t/topic/gEQq 著作权归作者所有。请勿转载和采集!