2012-11-24 51 views
0

我測試了一下的是,我將使用一個簡單的遊戲代碼,但我得到這個錯誤in init gamefield[x][y] = tecken TypeError: 'field' object does not support indexingPython的錯誤:類型錯誤:「名單」對象不支持索引

的遊戲有點類似蛇和我想要我的程序要做的是,首先創建一個遊戲區,這是一個矩陣,我想插入我的蛇(我稱之爲蠕蟲在這裏),這是由「+」表示,位置應該隨機選擇。

然後我想要能夠決定蠕蟲在哪個方向增長,從而增長功能。

任何人都可以看到這裏有什麼問題嗎?任何幫助將不勝感激!

import random 

class field: 
    def __init__(self): 

     self.table= [ [ "0" for i in range(10) ] for j in range(10) ] 



def printfield(self): 
    for row in self.table: 
      print (row) 
class worm: 
    def __init__(self,tecken): 

     x = random.randint(1,9) 
     y = random.randint(1,9) 
     gamefield[x][y] = tecken 

    def grow(self,p,b,c):    
      try :    

       for antal in range(p): 
        if p != 0:  
         gamefield[x-antal*b][y-antal*c] = "+"  

      except IndexError : 
       print ("Game Over") 


p = 2 
b = 3 
c = 0 
gamefield = field() 
hilda = worm("+") 
hilda.grow(p,b,c) 

print(gamefield.printfield) 
+0

代碼中沒有'spelplan'。請發佈來自您發佈的實際代碼的完整錯誤消息。 – BrenBarn

+0

我假設'spelplan'是一個類似德語的遊戲場。 – Vlad

+0

哦,對不起,夥計們。我認爲代碼現在已經更新了,但我只是認爲我應該在發佈之前將它從瑞典語翻譯成英語,但是我想我錯過了那裏的一些東西! 以下是完整的錯誤消息:回溯(最近通話最後一個): 文件 「C:/Allt/Programmering/Test/astrakan.py」 35行,在 希爾達=蠕蟲( 「+」) 文件「C:/Allt/Programmering/Test/astrakan.py」,第18行,在__init__ gamefield [x] [y] = tecken TypeError:'field'對象不支持索引 – Nekroz

回答

2

該列表是gamefield.tablegamefield本身不可索引。

如果您願意,您可以定義__getitem____setitem__,以覆蓋table上的操作。或者,您可以將gamefield實例化爲列表列表,而不是將其作爲單獨的對象類型。

+0

哦,我明白了!我會嘗試更改爲gamefield.table。 我該怎麼做? – Nekroz

+0

我補充說,我將​​如何實例化遊戲領域,而不是使它成爲一個單獨的對象? – Nekroz

+0

我想你可以做'gamefield = [[「0」爲我...' – Vlad

相關問題