작성
·
172
0
지금 # 충돌된 공 or 무기 없애기
if ball_to_remove > -1:
del balls[ball_to_remove]
ball_to_remove = -1 부분이 도저히 이해가 안됩니다.
balls.append 해서 최초의 공 (=가장 큰 공) 이 있는건 알겠는데 도대체 어느코드에서 balls의 인덱스 수가 ball_images
만큼 늘어난건가요......제 생각에는 # 최초 발생하는 큰 공 추가 만 되있어서 인덱스는 0이고 값은 딕셔너리의 내용인데요..
(프린트 문으로 이 부분은 확인했습니다!)
아래가 balls 가 포함되있는 코드인데 어디서 ball_images 만큼의 인덱수가 늘어난건가요.
# 최초 발생하는 큰 공 추가
balls.append({
"pos_x" : 50, # 공의 x좌표
"pos_y" : 50, # 공의 y좌표
"img_idx" : 0, # 공의 이미지 인덱스,ball_image 리스트 안에서의 이미지의 인덱스 넘버
"to_x": 3, # x축 이동방향
"to_y": -6, # y축 이동방향
"init_spd_y": ball_speed_y[0] # y의 최초 속도
})
# 공 위치 정의
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"]
ball_size = ball_image[ball_img_idx].get_rect().size # 해당 ball의 x,y값이 묶여진 리스트
ball_width = ball_size[0]
ball_height = ball_size[1]
... ...
# 4. 충돌 처리
... ...
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"]
# 공 rect 정보 업데이트
ball_rect = ball_images[ball_img_idx].get_rect() # 공의 크기와 좌표(x,y = left,top)
ball_rect.left = ball_pos_x
ball_rect.top = ball_pos_y
... ...
# 왼쪽으로 튕겨나가는 작은 공
balls.append({
"pos_x": ball_pos_x + (ball_width/2) -(small_ball_width/2),
"pos_y": ball_pos_y + (ball_height/2) -(small_ball_height/2),
"img_idx": ball_img_idx + 1,
"to_x": -3,
"to_y": -6,
"init_spd_y": ball_speed_y[ball_img_idx + 1]})
# 오른쪽으로 튕겨나가는 작은 공
balls.append({
"pos_x": ball_pos_x + (ball_width/2) -(small_ball_width/2),
"pos_y": ball_pos_y + (ball_height/2) -(small_ball_height/2),
"img_idx": ball_img_idx + 1,
"to_x": 3,
"to_y": -6,
"init_spd_y": ball_speed_y[ball_img_idx + 1]})
break
else:
continue
break
... ...
# 충돌된 공 or 무기 없애기
if ball_to_remove > -1:
del balls[ball_to_remove]
ball_to_remove = -1
# 모든 공을 없앴다면 게임 종료
if len(balls) == 0:
game_result = "Mission Complete"
running = False
답변 1
0
이거 뒷부분 보고 오신건가요?? 아님 이 강의 내에서만 질문하시는건가요?
이 수업 내에서의 질문이라면,
여기 에서는 처음 있는 공만 지우는게 맞아요. 초기값인 0번 인덱스
쪼개 진 것에 대해서는 다음 수업에서 진행 해요.
거기서 작아진걸 리스트에 추가하는 과정에서, 그 추가된게, 자동으로 리스트의 1 번 2 번 3 번으로 들어가게 되는 거죠.