2012-11-24 2 views
0

를 지원하지 않습니다 나는 간단한 게임에 사용할거야 코드의 비트를 테스트하고있어하지만 난 in init gamefield[x][y] = tecken TypeError: 'field' object does not support indexing파이썬 오류 : 형식 오류 : '목록'개체를 인덱싱

이 게임은이 오류를 얻을 다소 뱀과 비슷합니다. 내 프로그램이 원하는 것은 처음에 "+"로 표현되는 뱀 (여기에서 웜이라고 부름)을 삽입하려는 행렬 인 게임 필드를 만드는 것입니다. 위치는 무작위로 선택해야합니다 .

그런 다음 웜이 성장하는 방향을 결정하여 성장 기능을 결정할 수 있기를 원합니다.

여기에있는 문제가 누구에게 표시 될 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다!

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.table입니다. gamefield 자체는 색인 할 수 없습니다.

원할 경우 table에 작업을 래핑하도록 __getitem____setitem__을 정의 할 수 있습니다. 또는 별도의 개체 유형이 아닌 gamefield을 목록의 목록으로 간단하게 인스턴스화 할 수 있습니다.

+0

아, 알 겠어요! gamefield.table로 변경해 보겠습니다. 어떻게하면됩니까? – Nekroz

+0

나는 별도의 객체로 만드는 대신 gamefield를 어떻게 인스턴스화 할까? – Nekroz

+0

당신이 할 수있는'gamefield = [[ "0"for i ...' – Vlad