안녕하세요 저는 파이썬에 상당히 익숙하며 현재 지뢰 찾기 게임을 만들려고합니다. 나는 2 개의리스트를 만들었고, 1 개는 플레이어 (필드)에 표시되고 1 개는 지뢰 (지뢰밭)를 포함합니다. 나는 좌표를 선택하는 플레이어를 요구하고, 프로그램은 주변에 지뢰가 있는지 여부를 확인 여부와 홍수가이 코드를 사용하여 광산 주변의지도를 채우는 : 나는이 있는지 확인하기 위해 노력하고있어 그래서 기본적으로다른 목록을 기반으로 목록을 수정하는 데 문제가 있습니까?
def floodfill(field, minefield, x, y)
list1 = [(x, y)]
while True:
a, b = list1.pop()
field[b][a] = 'W'
list2 = [(a, b - 1), (a, b + 1), (a - 1, b), (a + 1, b)]
for element in list2:
x2 = element[0]
y2 = element[1]
if y2 >= len(field) or x2 >= len(field[0]) or y2 < 0 or x2 < 0:
continue
if minefield[y2][x2] == 'O':
list1.append(element)
if not list1:
break
return field
을 'minefield'목록을보고 'minefield'목록에 따라 'field'목록을 수정하여 선택한 좌표 주변의 광산을 찾습니다. 문제는 주어진 좌표 주위에 비 광산 블록이 있으면 프로그램이 멈추는 것입니다.
예를 들어 이러한 항목을 실행하면 아무 일도 일어나지 않습니다.
minefield = [['O', 'O'], ['x', 'x']] # field is the same without xs
x = 0
y = 0
그러나이와
: 당신은에 지뢰밭 배열을 수정하지 않기 때문에field = [['W', 'O'], ['O', 'O']] # Os are covered mines
* "잼을 중단합니다"*는 무엇을 의미합니까? 비헤이비어를 복제하는 예제를 제공 할 수 있습니까? 자신 만의 변수'list'를 명명하는 것은 나쁜 생각입니다; 그것은 그림자가 내장되어 있습니다. – jonrsharpe
예제를 추가하고 목록의 이름을 변경하려고했습니다. 희망이 지금은 더 명확한 – Aapoman