在计算机科学课上,想要创建一个类似于“Top Trumps”卡牌游戏的程序。已经创建了一个超级英雄类,并创建了两个超级英雄(绿巨人和雷神)。需要让程序能够选择雷神的属性,并自动与绿巨人的属性进行比较,说出哪个更高。
希望最终能构建一个包含 20 个超级英雄的列表,将它们均匀地分成两个列表的列表。从中,玩家的卡片将显示出来供他们选择,然后将其与对手列表中的相应属性进行比较(在选择之前无法看到)。获胜者将从一个列表中删除超级英雄并将它放在另一个列表中,直到其中一个列表耗尽。
目前面临的问题是如何设置列表的列表,以及如何在选择后比较值。
import random
# 超级英雄类
class Superhero(object):
def __init__(self, name, beastrating, power, intelligence, specialpower, fightingskills, speed):
self.name = name
self.beastrating = beastrating
self.power = power
self.intelligence = intelligence
self.specialpower = specialpower
self.fightingskills = fightingskills
self.speed = speed
def displaySuperhero(self):
print("\nName: ", self.name,
"\nBeastrating: ", self.beastrating,
"\nPower: ", self.power,
"\nIntelligence: ", self.intelligence,
"\nSpecial Power: ", self.specialpower,
"\nFighting Skills: ", self.fightingskills,
"\nSpeed: ", self.speed)
# 创建两个超级英雄
Hulk = Superhero("Hulk", 10, 10, 1, 1, 7, 10)
Thor = Superhero("Thor", 1, 8, 8, 7, 8, 9)
# 显示超级英雄的信息
Thor.displaySuperhero()
Hulk.displaySuperhero()
print("\n")
2、解决方案
列表的列表
可以创建一个列表的列表,其中每个元素是超级英雄的列表。然后,可以使用random.choice()选择来自每个子列表的超级英雄。
比较值
可以使用max()函数比较来自两个超级英雄的属性值。例如,以下代码比较雷神和绿巨人的力量值:
if max(Thor.power, Hulk.power) == Thor.power:
print("Thor has a higher power than Hulk.")
elif max(Thor.power, Hulk.power) == Hulk.power:
print("Hulk has a higher power than Thor.")
完整的代码
以下代码实现了上述方法,创建了一个 Top Trumps 游戏的简单版本:
import random
# 超级英雄类
class Superhero(object):
def __init__(self, name, beastrating, power, intelligence, specialpower, fightingskills, speed):
self.name = name
self.beastrating = beastrating
self.power = power
self.intelligence = intelligence
self.specialpower = specialpower
self.fightingskills = fightingskills
self.speed = speed
def displaySuperhero(self):
print("\nName: ", self.name,
"\nBeastrating: ", self.beastrating,
"\nPower: ", self.power,
"\nIntelligence: ", self.intelligence,
"\nSpecial Power: ", self.specialpower,
"\nFighting Skills: ", self.fightingskills,
"\nSpeed: ", self.speed)
# 创建两个超级英雄列表
superheroes_list1 = [
Superhero("Hulk", 10, 10, 1, 1, 7, 10),
Superhero("Iron Man", 8, 9, 7, 8, 6, 9),
Superhero("Captain America", 7, 8, 9, 6, 7, 7),
Superhero("Thor", 1, 8, 8, 7, 8, 9),
Superhero("Black Widow", 6, 7, 9, 8, 8, 8)
]
superheroes_list2 = [
Superhero("Spider-Man", 7, 8, 8, 7, 8, 9),
Superhero("Wolverine", 9, 9, 6, 9, 7, 8),
Superhero("Black Panther", 8, 8, 8, 7, 9, 8),
Superhero("Doctor Strange", 7, 7, 9, 9, 6, 7),
Superhero("Ant-Man", 6, 7, 8, 7, 7, 9)
]
# 从每个列表中随机选择一个超级英雄
player1_superhero = random.choice(superheroes_list1)
player2_superhero = random.choice(superheroes_list2)
# 显示超级英雄的信息
print("Player 1's Superhero:")
player1_superhero.displaySuperhero()
print("\nPlayer 2's Superhero:")
player2_superhero.displaySuperhero()
print("\n")
# 选择要比较的属性
attribute = input("Enter the attribute you want to compare (beastrating, power, intelligence, specialpower, fightingskills, speed): ")
# 比较属性值
if max(getattr(player1_superhero, attribute), getattr(player2_superhero, attribute)) == getattr(player1_superhero, attribute):
print("Player 1's superhero has a higher {} than Player 2's superhero.".format(attribute))
elif max(getattr(player1_superhero, attribute), getattr(player2_superhero, attribute)) == getattr(player2_superhero, attribute):
print("Player 2's superhero has a higher {} than Player 1's superhero.".format(attribute))