我必须为游戏设计一个记分板 我有一个包含游戏中所有玩家的列表:
players = ['Starplayer', 'Ben', 'Kev', 'Cris', 'Runner', 'Heart'...etc]
我需要将此列表中的每个玩家分配到他们的等级编号(他们都做了5个级别),每个级别需要一个单独的分数。
我需要知道的是如何将这些变量分配给列表项。
我有一个包含playernames
及其levels
和score
的文字文件:
Starplayer,1,19
Ben,1,20
Kev,0,20
Cris,1,19
Runner,4,19
Cris,2,15
Heart,5,16
...etc
答案 0 :(得分:2)
一种方法是创建一个代表玩家的类,其属性为name
,level
和score
,并使用文本中的信息填充该类的对象数组文件。您可以推出自己的类,也可以定义namedtuple
。例如,
from collections import namedtuple
Player = namedtuple('Player', 'name, level, score')
这是你可以实例化单个玩家的方法:
# keyword arguments
p1 = Player(name='bob', level=1, score=19)
# positional arguments
p2 = Player('fred', 42, 99)
这是你可以从对应于文件中一行的字符串中实例化一个
的方法 # just for illustration. This would really come from reading the file
line = 'Starplayer,1,19'
# split line into ['Starplayer', '1', '19'] and unpack into Player
p = Player(*line.split(','))
虽然请注意,这会使level
和score
属性字符串。如果你需要整数,你需要做一些更聪明的事情。
然后您可以按名称或索引访问其属性:
print p.name
print p[0]
最后,这就是你可以打开一个文件并在其行上循环的方法,
with open('some_file.txt') as f:
for line in f:
# line is a string containing the contents
# of one line in the file
答案 1 :(得分:1)
在这种情况下,我会像这样制作一个类玩家:
class Player:
def __init__(self, name):
"""put init variables here"""
self.level=0 #or 1 whatever is first
self.name=name
def incrementLevel(self):
self.level+=1
def printName(self):
print self.name
然后你可以:
players=[]
players.append(Player("starplayer"))
players.append(Player("Ben"))
等...
然后打印所有玩家,例如:
for player in players:
player.printName()
答案 2 :(得分:0)
我认为beter选择是字典,而不是列表。您可以在文件中使用for循环,并分隔所有名称,分数,级别和创建列表。然后再次在此列表中使用for循环并在循环中创建字典,例如i [0]是键,i [1],[2]是值。