먼저 무엇을 하려는지 설명해야합니다.Python - 2 질문 : 함수에서 변수를 편집하고 런타임 중에 else 문의 순서를 내부적으로 변경하면
나는 던전 크롤러와 같은 게임을 만들고 있는데, 컴퓨터 캐릭터/몬스터의 움직임을 맵에 프로그래밍하려고합니다. 지도는 기본적으로 데카르트 좌표계입니다. 문자의 위치는 x 및 y 값의 튜플 (x, y)로 나타냅니다. 게임은 차례대로 작동하며, 차례대로 캐릭터는 위, 아래, 왼쪽 또는 오른쪽으로 1 칸 이동할 수 있습니다. 저는 캐릭터가 단순히 턴 단위로 차례를 결정할 수있는 매우 간단한 이동 시스템을 만들고 있습니다. 본질적으로 '건망증'운동 시스템.
내가 뭘하려는거야 무엇의 기본 흐름도 :
- 찾기 방향을 대상
- 으로 운동의 우선 순위 목록을 만드는 방향 등을 사용하여 수행 할 수 있습니다 ('R', '. u ','d ','l ')은 먼저 오른쪽으로 이동 한 다음 위로 이동 한 다음 이동 한 다음 왼쪽으로 이동하려고합니다.
- 우선 순위에 따라 각각의 가능성을 시도하십시오. 첫 번째 이동이 실패하면 (장애물 등으로 막힘) 첫 번째 이동이 성공할 때까지 연속적으로 시도한 다음 중지합니다. 3 단계에서
, 내가 할 노력하고있어 방법은 다음과 같은 경우 : 경우/다른 블록에서
def move(direction,location):
try:
-snip- # Tries to move, raises the exception Movementerror if cannot move in the direction
return 1 # Indicates movement successful
except Movementerror:
return 0 # Indicates movement unsuccessful (thus character has not moved yet)
prioritylist = ('r','u','d','l')
if move('r',location): pass
elif move('u',location): pass
elif move('d',location): pass
elif move('l',location): pass
else: pass
, 우선 순위 목록에서 우선 순위의 첫 번째 움직임을 시도 할 것이다 프로그램 . 이동 기능에서 캐릭터는 움직이려합니다. 문자가 막히지 않고 움직이지 않으면 1을 반환하고 멈출 곳으로갑니다. 문자가 차단되면 0을 반환하고 다음 동작을 시도합니다.
그러나, 이것은이 문제가 발생합니다
1.How 나는, 함수 자체 내부 함수에 전달 변수를 수정합니까 편집이 성공하면 반환 동안?
변수의 값을 실제로 변경하지 않으므로 함수 내부의 변수를 편집 할 수 없다는 말을 들었습니다. 원래 변수가 변경되지 않은 상태에서 함수 내부의 변수가 다른 것을 참조하게 만듭니다. . 따라서 해결 방법은 값을 반환 한 다음 반환 된 값에 변수를 할당하는 것입니다. 그러나이 편집이 성공했는지 여부를 나타내는 다른 값을 반환하려면이 변수를 함수 자체에서 편집하고 싶습니다. 어떻게해야합니까?
2. 우선 순위 목록의 순서를 따르기 위해 if/else 문의 순서를 변경하려면 어떻게해야합니까? 우선 순위 목록이 변경되어 시도 할 때 다른 순서의 동작이 발생할 수 있으므로 런타임 중에 변경할 수 있어야합니다.