2015-11-02 23 views
-1

我要設計一個記分牌遊戲
我有一個包含遊戲中所有的球員名單:如何分配變量的項目列表中的

players = ['Starplayer', 'Ben', 'Kev', 'Cris', 'Runner', 'Heart'...etc] 

我需要分配每個這個列表中的球員到他們的等級號碼(他們都做了5個等級),每個等級都需要一個個人得分。

我需要知道的是如何將這些變量分配到列表項。

我有一個包含playernames及其levelsscore文本文檔:

Starplayer,1,19 
Ben,1,20 
Kev,0,20 
Cris,1,19 
Runner,4,19 
Cris,2,15 
Heart,5,16 

...etc 
+5

也許你應該使用形式'的字典{名:[score1,score2,score3,score4,score5]}' –

+0

會在哪裏 「水平」 適合嗎? – TigerhawkT3

+0

我簡要地閱讀了關於類型的字典,我認爲他們可能是正是我需要的,謝謝你的幫助 – Dop

回答

2

一種方法是創建一個類,代表一個球員,有屬性namelevelscore,並填寫對象的數組該類使用文本文件中的信息。您可以推出自己的班級,也可以定義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(',')) 

雖然注意,這將使得levelscore屬性字符串。如果你需要整數,你需要做些更聰明的事情。

然後,您可以通過名稱或索引來訪問它的屬性:

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 
+0

也許值得一提的是,您還可以使用'namedtuple'('Player',['name','level''score'])語法更自然地定義一個namedtuple' – Joost

0

我覺得尤爲明顯的選擇將是字典,而不是列表。你可以在文件中使用for循環,並分隔所有名稱,分數,級別和創建列表。然後在這個列表中再次使用for循環,並在循環中創建字典,就像i [0]是關鍵字,而我[1],[2]是值。

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() 
相關問題