2013-06-01 2 views
1

파이 게임 3을 사용하여 파이 게임 라이브러리를 사용하여 보드 게임을 만들려고합니다. 내가하려고하는 것은 보드를 나타 내기 위해 공백이라고 부른 객체의 x 2 y 목록을 만드는 것입니다. 먼저 모든 색상을 회색으로 초기화하고 is_piece 속성을 모두 False로 설정하여 모든 빈 공간임을 나타냅니다. 그런 다음 board x [y] 값을 is_piece 속성이 true로 설정된 객체로 대체하여 빈 공간을 조각으로 대체하려고합니다.2d는 오브젝트 교체를 나열합니다.

내가 겪고있는 버그는 self.coords 값이 뒤집히는 것입니다. 예를 들어, 아래 코드에서 [2, 3] self.coords 값을 가진 돌 개체는 보드 [3] [2] 위치에 있고 그 반대의 경우도 있습니다. 더 많은 돌을 추가하면 인덱스 값을 뒤집고 때로는 그 중 하나에 하나를 추가하여 self.coords를 망칠 수도 있습니다.

def initialize_board(): 
    #creates an array of empty spaces representing the board 
    board = [[Space(GRAY, RADIUS, [x, y], False) for x in range(BOARDWIDTH)] 
       for y in range(BOARDHEIGHT) 
    #Create the center stones 
    board[3][3] = Space(RED, RADIUS, [3, 3], True) 
    board[2][3] = Space(RED, RADIUS, [2, 3], True) 
    board[4][3] = Space(RED, RADIUS, [4, 3], True) 
    board[3][2] = Space(RED, RADIUS, [3, 2], True) 
    board[3][4] = Space(RED, RADIUS, [3, 4], True) 

여기에 내가 사용하고 스페이스 클래스의 초기화 방법이다 :

def __init__(self, color, size, coords, is_stone): 
    self.color = color 
    self.size = size 
    self.coords = coords 
    self.is_stone = is_stone #false if empty 
    self.pos = [CCONSTANT + DISTANCE * self.coords[0], 
       CCONSTANT + DISTANCE * self.coords[1]] 

사람이 내가 엉망으로하고있는 무슨 말해 줄래?

+3

예상되는 좌표는 (x, y) 형식이지만 2 차원 배열은 일반적으로 [행] [col] (예 (y, x)) ... 따라서 코드를주는 방법을 뒤집을 필요가 있습니다 –

+0

@ JoranBeasley : 답변을 귀하의 의견을 변경하십시오. –

+0

필자는 목록의 목록 대신에 dict을 사용하여 튜플'(x, y)'인 키를 사용하여 모든 문제를 해결할 것입니다. –

답변

0

@ Joran Beasley가 이미 지적했듯이 현재 코드에서 [row] [col] ([y] [x])를 사용하여 값에 액세스 할 수 있습니다. 위해 [X] [Y]를 약간 보드를 생성하는 루프를 변경할 수 있습니다 사용하여 액세스합니다 :

board = [[Space(GRAY, RADIUS, [x, y], False) for y in range(BOARDHEIGHT)] 
      for x in range(BOARDWIDTH) 

는 결과 보드의 모양 (BOARDWIDTH, BOARDHEIGHT)를 얻으려면.