我正在编写一个基于文本的角色扮演游戏,并设置了三个类:角色类、玩家和敌人。我有一种称为“攻击”的方法,它接收一个目标,然后从其生命值中删除一定数量的目标。当玩家攻击敌人时它可以完美地工作,但是当敌人攻击玩家时,它会增加玩家的生命值而不是减少生命值。两种攻击同时发生,也许这是问题的一部分,但我不明白情况会怎样。我希望每个攻击序列的健康统计数据都会下降。
import random
class Character():
#initialize a blank character
def __init__(self, level, health, strength, defense):
self.level = level
self.health = health * 100
self.strength = strength
self.defense = defense
def attack(self, target):
target.health = target.health-(self.strength * 1.5 - target.defense)
class Player(Character):
#initialize the constructor of the player
def __init__(self, level, health, strength, defense):
self.level = level
self.health = health * 100
self.strength = strength
self.defense = defense
def get_xp(self):
pass
def walk():
pass
class Enemy(Character):
#initialize the constructor of the enemy
def __init__(self, level, health, strength, defense):
self.level = level
self.health = health * 100
self.strength = strength
self.defense = defense
import time
import random
from character import *
#creating a player
new_player = Player(1,10,10,10)
#establishing enemy stats
enemy_level_mod = random.randint(1,5)
if new_player.level > 5:
enemy_level = new_player.level - random.randint(1,5)
else:
enemy_level = 1
enemy_health = enemy_level * random.randint(1,4)
enemy_strength = enemy_level * random.randint(1,4)
enemy_defense = enemy_level * random.randint(1,4)
#running the game loop
while True:
new_enemy = Enemy(enemy_level,enemy_health,enemy_strength,enemy_defense)
while new_enemy.health > 0:
print(f"Player Health is:{new_player.health}")
print(f"Enemy Health is: {new_enemy.health}")
new_player.attack(new_enemy)
new_enemy.attack(new_player)
time.sleep(1)
else:
print("Enemy has been vanquished")
time.sleep(1)
最初我没有父类,但我想既然它们都会攻击,那么让它们成为具有通用方法的类的子类会更有意义。
使用您当前的代码,有可能
enemy.strength * 1.5 < new_player.defense
。您可以做的是使用 max(self.strength * 1.5 - target.defense, 1)
设置最小伤害值。