Python 如何调用函数中的某个参数?

Python 如何调用函数中的某个参数?,python,Python,所以我刚开始学习python,我想为什么不做一个基于文本的游戏来提高我的技能呢。所以在这个游戏中,我想制作一个战斗场景,你有一个职业(骑士、盗贼或巫师),这个职业存储在player_类中。每个类都有三个属性。每个职业都有速度、伤害和生命值。我想这样做,如果你的速度高于或等于敌人,你会先攻击,但如果敌人的速度高于敌人,你会先攻击。所以我想我可以这样做,只要调用player_class=userKnight,然后在战斗中,如果player_class(速度)>=敌方类型(espeed),那么敌方类型

所以我刚开始学习python,我想为什么不做一个基于文本的游戏来提高我的技能呢。所以在这个游戏中,我想制作一个战斗场景,你有一个职业(骑士、盗贼或巫师),这个职业存储在player_类中。每个类都有三个属性。每个职业都有速度、伤害和生命值。我想这样做,如果你的速度高于或等于敌人,你会先攻击,但如果敌人的速度高于敌人,你会先攻击。所以我想我可以这样做,只要调用player_class=userKnight,然后在战斗中,如果player_class(速度)>=敌方类型(espeed),那么敌方类型(健康)-玩家类(伤害)。这是行不通的,如果有人有更好的方法或者可以解释我如何更好地实现这一点,那就太棒了

def userRogue(damage,speed,health):
    health = 100;
    damage = 50;
    speed = 150;
    return

def userKnight(damage,speed,health):
    health = 100;
    damage = 100;
    speed = 50;
    return

def userWizard(damage,speed,health):
    health = 100;
    damage = 75;
    speed = 75;
    return

def enemyRat(ehealth, espeed, edamage):
    ehealth = 100;
    edamage = 10;
    espeed = 70;
    return

def enemyDeath():
    if ehealth <= 0:
        print("Enemy is dead!")
    return

def playerDeath():
    if health <= 0:
        print("You have died!")
    return

user_name = input("What is your name: ")

print("1:)Rogue")
print("2:)Knight")
print("3:)Wizard")

player_class_select = int(input("Choose your class: "))

player_class = 0
enemy_type = 0

if player_class_select == 1:
    print("You chose Rogue!")
    player_class = userRogue

elif player_class_select == 2:
    print("You chose Knight!")
    player_class = userKnight

elif player_class_select == 3:
    print("You chose Wizard!")
    player_class = userWizard

else:
    print("That is not a choice!")


print("Time for your first battle...")
print("A enemy has appeared!")

enemy_type = enemyRat

if player_class(speed) >= enemy_type(espeed):
    enemy_type(ehealth) - player_class(damage)
    enemyDeath()
elif player_class(speed) < enemy_type(espeed):
    player_class(health) - enemy_type(edamage);
    playerDeath()
    ```
def userRogue(伤害、速度、生命值):
健康=100;
损害=50;
速度=150;
返回
def用户骑士(伤害、速度、生命值):
健康=100;
损伤=100;
速度=50;
返回
def用户向导(伤害、速度、健康):
健康=100;
损害=75;
速度=75;
返回
def enemyRat(电子健康、espeed、电子图像):
e健康=100;
edamage=10;
espeed=70;
返回
def enemyDeath():

如果ehealth您应该为您的角色创建一个父类,如下所示:

class Player:
  def __init__(self, name, damage, speed, health):
    self.name = name 
    self.damage = damage
    self.speed = speed
    self.health = health

  def __str__(self):
    return 'Name: {} | Damage: {} | Speed: {} | Health: {}'.format(self.name, self.damage, self.speed, self.health)

rogue = Player('Rogue', 100, 50, 150) # Setting attributes to the parent class
knight = Player('Knight', 100, 100, 50) # name, damage, speed, health
wizard = Player('Wizard', 100, 75, 75)
rat = Player('Rat', 100, 10, 70)

print(rogue)
print(knight)
print(wizard)
print(rat)
这将创建您的玩家和属性:

Name: Rogue | Damage: 100 | Speed: 50 | Health: 150
Name: Knight | Damage: 100 | Speed: 100 | Health: 50
Name: Wizard | Damage: 100 | Speed: 75 | Health: 75
Name: Rat | Damage: 100 | Speed: 10 | Health: 70
使用此信息比较容易将其与其他玩家/敌人的其他值进行比较:

if rogue.speed > rat.speed:
do something

这段代码有很多问题。我建议在尝试进一步调试代码之前先阅读本教程。你的
user
方法是无用的。它们声明局部变量并立即丢弃它们。首先尝试将它们声明为全局函数。您使用函数的方式很笨拙,无法按您所希望的方式工作。函数需要返回调用者需要的数据。不过,如果有一个实际的
,并将该类的属性设置为与不同玩家“类”的属性相匹配,则会更有意义。我认为您无意中将类设置为函数,而不是实际的类。对于定义类,您必须使用
class
关键字。可能重复感谢您的帮助,我同意在进行此操作之前,我应该更加熟悉python。我只是把它当作一种尝试,把自己的东西放在一起,在学校里做实验。如果你觉得答案是正确的,请考虑一下答案。