• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

enumerate 부분에서 이해가 힘든 코드가 있습니다

20.08.26 23:35 작성 조회수 119

0

안녕하세요. 공튀기기 강의 부분 코드입니다.

코드에서 for ball_idx, ball_val in enumerate(balls):

        ball_pos_x = ball_val["pos_x"]
        ball_pos_y = ball_val["pos_y"]

        ball_img_idx = ball_val["img_idx"]라고 하면

balls.append({
    "pos_x" : 50# 공의 x좌표
    "pos_y" : 50# 공의 y좌표
    "img_idx" : 0# 공의 이미지 인덱스
    "to_x" : 3# x축 이동방향 -3이면 왼쪽, +3 이면 오른쪽
    "to_y" : -6# y축 이동방향
    "init_spd_y" : ball_speed_y[0]# y 최초 속도 
})

를 했으니깐 저 대괄호 {} 안에 있는 자체( 첫번째 공에 대한 정보)가 ball[0]이 되는 것이 맞나요? 그렇다면 ball_val["pos_x"] 가 무슨 값이 되는지 궁금합니다.  50 이 되는건가요..?? print로 찍어보니 점점 늘어나는 수던데 .. 0,1,2 등의 인덱스 숫자값이 아닌 "pos_x" 가 들어가있어서 헷갈리네요 ㅠㅠ 

답변 2

·

답변을 작성해보세요.

1

balls 는 각각의 딕셔너리 자료형을 여러개 가지는 리스트입니다. 각 항목은 딕셔너리라서 "pos_x" 와 같이 key 값으로 value 를 확인하구요. balls.append 를 하므로 값을 추가하게 되면 그 리스트에서는 마지막 값으로 추가가 되기때문에 질문 내용처럼 balls[0] 이라는 보장은 못합니다. 값이 처음으로 들어가는 거라면 0 이 맞겠지요. enumerate 를 통해 balls 리스트에 있는 값들을 하나씩 가져와서 for 문을 수행하므로, 각각의 공이 현재 가지고 있는 pos_x, pos_y 의 값이 저장되는 것이랍니다 ^^

0

양유진님의 프로필

양유진

질문자

2020.09.01

감사합니다!! 이해했습니다^^