작성
·
191
0
무기 위치 조정 할 때, weapone의 y 좌표를 줄여 나감으로 위로 쏘아 올리는 건 이해 하는데,
만약 weapones에 [[10,50],[10,40]]이라는 무기 포지션이 있다면, 아래 코드를 만나서 (speed가 10이라면)
weapons=[[w[0],w[1]-weapone-speed] for w in weapons
10,50 ->10,40이 되고 아래 코드를 만나서
for weapone_x_pos, weapone_y_pos in weapones:
screen.blit(weapone,(weapone_x_pos, weapone_y_pos))
10,40을 그려주고
다시 weapons=[[w[0],w[1]-weapone-speed] for w in weapons 이 코드로 올라가서
10,30이 되고 또 10,30을 그려주고
이걸 반복하는 건가요..?
*리스트의 첫 번째 인덱스로 (10,40)이 되어 그려주고 두번째 인덱스로 넘어가서 (10,30)이 되어 그려주고 이걸 반복할 것 같은데 첫 번째 인덱스의 weapone-speed가 계속 반복 되는 게 이해가 안되요ㅠㅠ
*제 질문이 이해가 안가실 것 같기는 한데 이런 고민 해 보신 분 없으실까요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
제가 이해한 바로는, 무기의 위치를 조정할 때 speed 값을 이용하여 y 좌표를 감소시키는 것이 맞나요? 그렇다면 예시로 주신 코드를 통해 질문을 이해해보겠습니다.
먼저, weapons 리스트에 [[10,50],[10,40]]이 있는 경우, 첫 번째 코드인 “weapons=[[w[0],w[1]-weapone-speed] for w in weapons”를 통해 [10,50]은 [10,50-speed]으로 변경됩니다. 따라서 첫 번째 무기의 y 좌표가 speed만큼 감소하게 됩니다.
그리고 두 번째 코드에서는 weapones 리스트의 값을 가져온 후에 해당 위치에 weapone 이미지를 그려주는 부분입니다. 여기서 for loop를 통해 weapons 리스트에서 한 개씩 무기의 위치를 가져오면서 그림을 그려줍니다.
따라서, 첫 번째 무기의 위치가 [10,40]이 되어 그려진 후, 다시 두 번째 코드에서 첫 번째 무기의 위치를 변경하는 코드를 만나게 됩니다. 그래서 [10,40]에서 [10,40-speed]으로 변경되며, 이렇게 변경된 위치가 그려지게 됩니다.
그 후에는 위의 과정이 반복되어, 무기가 위로 이동하게 되는 것입니다. 어느 부분에서 막히시는지 더 자세히 설명해주시면 추가적인 도움을 드릴게요. 감사합니다.