Python 如何调用函数中的某个参数?
所以我刚开始学习python,我想为什么不做一个基于文本的游戏来提高我的技能呢。所以在这个游戏中,我想制作一个战斗场景,你有一个职业(骑士、盗贼或巫师),这个职业存储在player_类中。每个类都有三个属性。每个职业都有速度、伤害和生命值。我想这样做,如果你的速度高于或等于敌人,你会先攻击,但如果敌人的速度高于敌人,你会先攻击。所以我想我可以这样做,只要调用player_class=userKnight,然后在战斗中,如果player_class(速度)>=敌方类型(espeed),那么敌方类型(健康)-玩家类(伤害)。这是行不通的,如果有人有更好的方法或者可以解释我如何更好地实现这一点,那就太棒了Python 如何调用函数中的某个参数?,python,Python,所以我刚开始学习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。我只是把它当作一种尝试,把自己的东西放在一起,在学校里做实验。如果你觉得答案是正确的,请考虑一下答案。