메이

메이

pythonsqlunix
메이메이· 2년

질문python class를 사용해서 작은 게임룰을 만들고 있는데 디버깅을 돌리면 답이 나오지만 실행을 하면 계속 에러가 뜹니다. 한번만 도와주세요

class Amazons: def __init__(self): #setting standard place self.amazons = {(3, 0): 'A', (0, 3): 'B', (0, 6): 'C', (3, 9): 'D', (6, 0): 'a', (9, 3): 'b', (9, 6): 'c', (6, 9): 'd'} star_list = [] # making star_list for append the star'*' self.star_list = list(star_list) self.arrows = set() #making star board do not confuse the star file self.star_board = self.amazons.copy() def __str__(self): board_list = [] all_list = [] self.star_board = self.amazons.copy() for i in self.star_list: self.star_board[i] = '*' for z in range(10): for i in range(10): a = (z, i) if a not in self.star_board: board_list.append('_') else: board_list.append(self.star_board[a]) all_list.append(''.join(board_list)) board_list = [] return '\n'.join(all_list) def position(self, letter): return {value: key for key, value in self.amazons.items()}[letter] def possible_directions(self, letter): all_dir = {'E': (0, 1), 'S': (1, 0), 'SW': (1, -1), 'NW': (-1, -1), 'NE': (-1, 1), 'SE': (1, 1), 'W': (0, -1), 'N': (-1, 0)} direction_list = [] a = {value: key for key, value in self.amazons.items()}[letter] for direction in all_dir: y_axis = tuple(sum(elem) for elem in zip(a, all_dir[direction]))[0] x_axis = tuple(sum(elem) for elem in zip(a, all_dir[direction]))[1] if 0 <= y_axis <= 9 and 0 <= x_axis <= 9: if (y_axis, x_axis) not in self.amazons: direction_list.append(direction) return set(direction_list) # 그 방향으로 갈 수있는지 없는 지 확인하기 def way_go(self, letter, direction, number): a = {value: key for key, value in self.amazons.items()}[letter] check_number = 0 for i in range(1, number+1): all_dir = {'E': (0, i), 'S': (i, 0), 'SW': (i, -i), 'NW': (-i, -i), 'NE': (-i, i), 'SE': (i, i),'W': (0, -i),'N': (-i, 0)} check_space = tuple(sum(elem) for elem in zip(a, all_dir[direction])) if 0 <= check_space[0] <= 9 and 0 <= check_space[1] <= 9: if check_space in self.star_board: raise AssertionError('invalid move') else: check_number += 1 return check_number def move_amazon(self, letter, direction, number): a = {value: key for key, value in self.amazons.items()}[letter] # 현재의 위치 파악 move_dir = {'E': (0, number), 'S': (number, 0), 'SW': (number, -number), 'NW': (-number, -number), 'NE': (-number, number), 'SE': (number, number), 'W': (0, -number), 'N': (-number, 0)} move_space = tuple(sum(elem) for elem in zip(a, move_dir[direction])) way = Amazons.way_go(self, letter, direction, number) if way == number: del(self.amazons[a]) self.amazons[move_space[0],move_space[1]] = letter return board else: raise AssertionError('invalid move') def shoot_arrow(self, letter, direction, number): a = {value: key for key, value in self.amazons.items()}[letter] move_dir = {'E': (0, number), 'S': (number, 0), 'SW': (number, -number), 'NW': (-number, -number), 'NE': (-number, number), 'SE': (number, number), 'W': (0, -number), 'N': (-number, 0)} arrow_space = tuple(sum(elem) for elem in zip(a, move_dir[direction])) way = Amazons.way_go(self, letter, direction, number) if way == number: self.star_list.append(arrow_space) self.arrows = set(self.star_list) return board else: raise AssertionError('invalid move')   문제가 되는 부분은 def move_amazon과 shoot_arrow 부분입니다. board = Amazons() print(board.move_amazon(&#39;b&#39;, &#39;W&#39;, 1).shoot_arrow(&#39;b&#39;, &#39;W&#39;, 1)) print(board.move_amazon(&#39;B&#39;, &#39;W&#39;, 3).shoot_arrow(&#39;B&#39;, &#39;E&#39;, 4)) 두번째 프린티에서 에러가 납니다. 선배님들 한번만 도와주세요 ㅠㅠ
462
1
1
0
피토니
피토니·2023-04-09
에러 메시지나 오류 메시지를 알려주시면 한번 확인해보겠습니다.