소개
게시글
질문&답변
저는 화면이 다릅니다
(사진) 이렇게요!
- 0
- 3
- 244
질문&답변
초보입니다 코드 런을 어떻게 어디서 시켜야 하는거에요
아 드디어 해결되었습니다 감사합니다 정말 간단한 문제인데 서로 소통이 원활하게 되지않아 빙빙 돌았던 것 같습니다 앞으로 남은 강의도 열심히 듣겠습니다 바보같은 질문으로 치부될 수도 있었는데 끝까지 도와주셔서 감사합니다
- 0
- 8
- 955
질문&답변
초보입니다 코드 런을 어떻게 어디서 시켜야 하는거에요
그냥 지금하는 부분은 이해하고 넘어가는 파트인가요? 결과 출력을 보는것이 아니라??
- 0
- 8
- 955
질문&답변
초보입니다 코드 런을 어떻게 어디서 시켜야 하는거에요
지금 연산자까지 다 들었습니다. 질문해결을 원할하게 하기위해 여기에 답글 다는거 이해부탁 드립니다. 위에 사진까지 올렸는데 올린거 보셨나요? 콘솔창이라는게 크롬 개발자도구 콘솔창 컨트롤 쉬프트 아이 누르면 나오는거 맞죠? 거기에 console이라고 되있는 곳에 선생님이 가르치시는 코드 log(1 === 1 ? "같음" : "다름"); 이런거 똑같이 쓰고있는데 결과는 못 보고 에러만 납니다 그래서 지금 그냥 코드는 따라 못 쓰고 못 돌려보고 눈 으로만 이해만 하면서 보고 있습니다 저도 코드 적고 엔터나 실행버튼 눌러서 돌려서 [실행결과] 같음 이런것을 좀 보고 싶습니다 어떻게 해야 합니까 제가 너무 초보라 이런것도 해결이 안되고 답답하네요
- 0
- 8
- 955
질문&답변
초보입니다 코드 런을 어떻게 어디서 시켜야 하는거에요
(사진) 브라우저에서 이런식으로 하라는거 아니에요? 크롬 개발자 도구에서 console창 들어가서요 근데 근데 브라우저 콘솔창에 무엇을 쓰든 VM343:1 Uncaught ReferenceError: log is not defined at :1:1 뜨고 결과가 실행되는것이 없습니다 1+2, 2*3 이런거만 쓸수 있어요 vs code에서 폴더를 하나 파서 해당폴더 안에 js파일, html파일을 만든뒤 만든 html을 브라우저 창으로 끌고와서 연다음에 개발자도구 열어서 콘솔창에서 코드를 작성하라 제가 제대로 이해한것 맞나요?
- 0
- 8
- 955
질문&답변
가장 작은 공이 밑으로 사라져버려요
import os import pygame ############################################################################################################# # 기본 초기화 (반드시 해야 하는 것들) pygame.init() # 화면 크기 설정 screen_width = 640# 가로 크기 screen_height = 480 # 세로 크기 screen = pygame.display.set_mode((screen_width, screen_height)) # 화면 타이틀 설정 pygame.display.set_caption("Nado Pang") # FPS clock = pygame.time.Clock() ############################################################################################################# # 1. 사용자 게임 초기화 (배경 화면, 게임 이미지, 좌표, 폰트 등) current_path = os.path.dirname(__file__) #현재 파일의 위치 반환 image_path = os.path.join(current_path, "images") #image 폴더 위치 반환 #배경 만들기 background = pygame.image.load(os.path.join(image_path, "background.png")) #스테이지 만들기 stage = pygame.image.load(os.path.join(image_path, "stage.png")) stage_size = stage.get_rect().size stage_height = stage_size[1] #스테이지의 높이 위에 캐릭터를 두기 위해 #캐릭터 만들기 character = pygame.image.load(os.path.join(image_path, "character.png")) character_size = character.get_rect().size character_width = character_size[0] character_height = character_size[1] character_x_pos = (screen_width / 2) - (character_width / 2) character_y_pos = screen_height - character_height - stage_height #캐릭터 이동 방향 character_to_x = 0 #캐릭터 이동속도 character_speed = 5 #무기 만들기 weapon = pygame.image.load(os.path.join(image_path, "weapon.png")) weapon_size = weapon.get_rect().size weapon_width = weapon_size[0] #무기는 한번에 여러 발 발사 가능 weapons = [] #무기 이동 속도 weapon_speed = 10 #공 만들기 (4개 크기에 대해 따로 처리) ball_images = [ pygame.image.load(os.path.join(image_path, "balloon1.png")), pygame.image.load(os.path.join(image_path, "balloon2.png")), pygame.image.load(os.path.join(image_path, "balloon3.png")), pygame.image.load(os.path.join(image_path, "balloon4.png")) ] #공 크기에 따른 최초 스피드 ball_speed_y = [-18, -15, -12, 9] #index 0, 1, 2, 3 에 해당하는 값 #공들 balls = [] #최초 발생하는 큰 공 추가 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 최초속도 }) #사라질 무기, 공 정보 저장 변수 weapon_to_remove = -1 ball_to_remove = -1 #Font 정의 game_font = pygame.font.Font(None, 40) total_time = 100 start_ticks = pygame.time.get_ticks() #시작 시간 정의 #게임 종료 메시지 #Time Over(시간 초과 실패) #Mission Complete(성공) #Game Over(캐릭터 공에 맞음, 실패) game_result = "Game Over" running = True while running: dt = clock.tick(30) # 2. 이벤트 처리 (키보드 ,마우스 등) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: #캐릭터를 왼쪽으로 character_to_x -= character_speed elif event.key == pygame.K_RIGHT: character_to_x += character_speed elif event.key == pygame.K_SPACE: weapon_x_pos = character_x_pos + (character_width/2) - (weapon_width/2) weapon_y_pos = character_y_pos weapons.append([weapon_x_pos, weapon_y_pos]) if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key ==pygame.K_RIGHT: character_to_x = 0 # 3. 게임 캐릭터 위치 정의 character_x_pos += character_to_x if character_x_pos 0: character_x_pos = 0 elif character_x_pos > screen_width - character_width: character_x_pos = screen_width - character_width #무기 위치 조정 weapons = [[w[0], w[1] - weapon_speed] for w in weapons] #무기 위치를 위로 #천장에 닿은 무기 없애기 weapons = [[w[0], w[1] - weapon_speed] for w in weapons if w[1] > 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"] ball_size = ball_images[ball_img_idx].get_rect().size ball_width = ball_size[0] ball_height = ball_size[1] #가로벽에 닿았을 때 공 이동 위치 변경 (튕겨 나오는 효과) if ball_pos_x 0 or ball_pos_x > screen_width - ball_width: ball_val["to_x"] = ball_val["to_x"] * -1 # 세로 위치 #스테이지에 튕겨서 올라가는 처리 if ball_pos_y >= screen_height - stage_height - ball_height: ball_val["to_y"] = ball_val["init_spd_y"] else: ball_val["to_y"] += 0.5 ball_val["pos_x"] += ball_val["to_x"] ball_val["pos_y"] += ball_val["to_y"] # 4. 충돌 처리 #캐릭터 rect 정보 업데이트 character_rect = character.get_rect() character_rect.left = character_x_pos character_rect.top = character_y_pos 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() ball_rect.left = ball_pos_x ball_rect.top = ball_pos_y #공과 캐릭터 충돌 처리 if character_rect.colliderect(ball_rect) : running = False break #공과 무기들 충돌 처리 for weapon_idx, weapon_val in enumerate(weapons): weapon_pos_x = weapon_val[0] weapon_pos_y = weapon_val[1] #무기 rect 정보 업데이트 weapon_rect = weapon.get_rect() weapon_rect.left = weapon_pos_x weapon_rect.top = weapon_pos_y #충돌 체크 if weapon_rect.colliderect(ball_rect): weapon_to_remove = weapon_idx #해당 무기 없애기 위한 값 설정 ball_to_remove = ball_idx #해당 공 없애기 위한 값 설정 #가장 작은 크기의 공이 아니라면 다음 단계의 공으로 나눠주기 if ball_img_idx 3: #현재 공 크기 정보를 가지고 옴 ball_width = ball_rect.size[0] ball_height = ball_rect.size[1] #나눠진 공 정보 small_ball_rect = ball_images[ball_img_idx + 1].get_rect() small_ball_width = small_ball_rect.size[0] small_ball_height = small_ball_rect.size[1] #왼쪽으로 튕겨나가는 작은 공 balls.append({ "pos_x" : ball_pos_x + (ball_width/2) - (small_ball_width/2), #공의 x좌표 "pos_y" : ball_pos_y + (ball_height/2) - (small_ball_height/2), #공의 y좌표 "img_idx" : ball_img_idx + 1, #공의 이미지 인덱스 "to_x" : -3, # x축 이동방향, -3 이면 왼쪽으로, 3이면 오른쪽으로 "to_y" : -6, # y축 이동방향, "init_spd_y" : ball_speed_y[ball_img_idx + 1]# y 최초속도 }) #오른쪽으로 튕겨나가는 작은 공 balls.append({ "pos_x" : ball_pos_x + (ball_width/2) - (small_ball_width/2), #공의 x좌표 "pos_y" : ball_pos_y + (ball_height/2) - (small_ball_height/2), #공의 y좌표 "img_idx" : ball_img_idx + 1, #공의 이미지 인덱스 "to_x" : 3, # x축 이동방향, -3 이면 왼쪽으로, 3이면 오른쪽으로 "to_y" : -6, # y축 이동방향, "init_spd_y" : ball_speed_y[ball_img_idx + 1]# y 최초속도 }) break else: #계속 게임을 진행 continue #안쪽 for 문 조건이 맞지 않으면 continue. 바깥 for 문 계속 수행 break #안쪽 for 문에서 break를 만나면 여기로 진입 가능. 2중 for 문을 한번에 탈출 #충돌된 공 or 무기 없애기 if ball_to_remove > -1: del balls[ball_to_remove] ball_to_remove = -1 if weapon_to_remove > -1: del weapons[weapon_to_remove] weapon_to_remove = -1 #모든 공을 없앤 경우 게임 종료(성공) if len(balls) == 0: game_result = "Mission Complete" running = False #5. 화면에 그리기 screen.blit(background, (0, 0)) for weapon_x_pos, weapon_y_pos in weapons: screen.blit(weapon, (weapon_x_pos, weapon_y_pos)) for idx, val in enumerate(balls): ball_pos_x = val["pos_x"] ball_pos_y = val["pos_y"] ball_img_idx = val["img_idx"] screen.blit(ball_images[ball_img_idx], (ball_pos_x, ball_pos_y)) screen.blit(stage, (0, screen_height - stage_height)) screen.blit(character, (character_x_pos, character_y_pos)) #경과 시간 계산 elapsed_time = (pygame.time.get_ticks() - start_ticks) / 1000 #ms -> s timer = game_font.render("Time : {}" .format(int(total_time - elapsed_time)), True, (255, 255, 255)) screen.blit(timer, (10,10)) #시간 초과 if total_time - elapsed_time 0: game_result = "Time Over" running = False pygame.display.update() #게임 오버 메시지 msg = game_font.render(game_result, True, (255, 255, 0)) msg_rect = msg.get_rect(center=(int(screen_width/2), int(screen_height/2))) screen.blit(msg, msg_rect) #2초 대기 pygame.time.delay(2000) pygame.display.update() pygame.quit()
- 0
- 3
- 187