2016-08-12 2 views
1

У меня есть огромная проблема, прямо сейчас, я не могу сослаться на мои играющих атрибуты, мой код выглядит как это в настоящее время:Yatzy, как я могу ссылаться на мои атрибуты Player?

from terminaltables import AsciiTable 

class Player: 
    def __init__(self,name): 
     self.name=name 
     self.ones=0 
     self.twos=0 
     self.threes=0 
     self.fours=0 
     self.fives=0 
     self.sixs=0 
     self.abovesum=0 
     self.bonus=0 
     self.onepair=0 
     self.twopair=0 
     self.threepair=0 
     self.fourpair=0 
     self.smalladder=0 
     self.bigladder=0 
     self.house=0 
     self.chance=0 
     self.yatzy=0 
     self.totalsum=0 
     #self.lista={"ones":0,"twos":0,"threes":0, "fours":0,"fives":0,"sixs":0,"abovesum":0,"bonus":0,"onepair":0,"twopair":0,"threepair":0,"fourpair":0,"smalladder":0,"bigladder":0,"house":0,"chance":0,"yatzy":0,"totalsum":0} 

    def __repr__(self): 
     return self.name 

    def __str__(self): 
     return self.name 

    def countbonus(self): 
     self.abovesum=self.ones+self.twos+self.threes+self.fours+self.fives+self.sixs 
     if self.abovesum>=63: 
      self.bonus+=50 
      return self.abovesum, self.bonus 
     else: 
      return self.abovesum, self.bonus 

    def counttotalsum(self): 
     self.totalsum=self.abovesum+self.bonus+self.onepair+self.twopair+self.threepair+self.fourpair+self.smalladder+self.bigladder+self.house+self.chance+self.yatzy 

    def add(self): 
     moment=input("Where do you want to put your points?: ") #ej klar 
     points=input("How many points did you get?: ") 
     self.lista 

    def visa(self): 
     for i in self.name: 
      print(i) 

def welcome(): 
    print("Welcome to the yahtzee game!") 
    players = int(input("How many players: ")) 
    rounds=0 
    spelarlista=[] 
    spelarlista.append("name") 
    while not players==rounds: 
     player=input("What is your name?: ") 
     rounds=rounds+1 
     spelarlista.append(Player(player)) 
    table_data = [spelarlista, 
     ['Ettor',spelarlista[0].ones], 
     ['Tvåor'], 
     ['Treor'], 
     ['Fyror'], 
     ['femmor'], 
     ['sexor']] 
    table = AsciiTable(table_data) 
    table.inner_row_border = True 
    table.table_data[0][0] += '\n' 
    print(table.table) 
welcome() 

В настоящее время я получаю ErrorMessage «Str» -объект не имеет атрибута " из них». Я понимаю, что строка spelarlista [0] .ones не работает, но скажем, что я управляю программой с игроками «Джеймс» и «Андерс», и я хочу, чтобы мой yatzy распечатывал таблицу с текущим счетом игроков, как я имею в виду, что, скажем, я сначала напечатал «Джеймс», что я пишу, чтобы получить его очки?

Заранее благодарен!

+0

Tjena Joakim! Svenska är najs men när det kommer до программирования, чтобы следить за ходом до тех пор, пока он не появится. Även om du bara programmerar för dig själv för närvarande kan det vara en bra rutin att försöka träna in då det underlättar för andra programmerare att läsa din kod och att hjälpa dig. Om du är intresserad av jobb inom программирование måste det ju också vara skriven på engelska. ** Резюме на английском языке: часто лучше использовать в своем коде только английский язык. ** –

ответ

3

spelarlista.append("name") означает, что первым элементом в вашем списке является строка. Затем вы попытаетесь получить доступ к spelarlista[0].ones.

Как сказано в сообщении об ошибке, строковые объекты не имеют атрибута ones.

+0

Спасибо, иногда вы можете ослепнуть при просмотре собственного кода! –

+0

Если это исправляет вашу проблему, пожалуйста, примите мой ответ с помощью кнопки галочки :) –

+0

Там вы идете! У меня на самом деле есть еще один вопрос, если у вас есть время ... Теперь, когда я могу обратиться к игрокам, мне нужно обратиться к каждому игроку, поэтому мне нужно идти как spelarlista [1] .ones, spelarlista [2] .ones, но только столько раз, сколько я получил игроков. Скажем, я набираю имена «Джеймс», «Питер» и «Альфред». Есть ли способ сделать мою программу достаточно умной, чтобы понять, что есть 3 игрока и обратитесь к разным игрокам в моей доске? –

Смежные вопросы