인프런 커뮤니티 질문&답변

라툭Ratuk님의 프로필 이미지
라툭Ratuk

작성한 질문수

파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)

키보드 이벤트

to_x, to_y 윈도우에서는 오류나오는데 대체 코드가 있나요?

작성

·

386

0

to_x, to_y 윈도우에서는 오류나오는데 대체 코드가 있나요?

답변 8

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

^^ 감사합니다.

0

라툭Ratuk님의 프로필 이미지
라툭Ratuk
질문자

아아 감사합니다 잘움직이네요 !! 강의항상 잘보고 있어요

기본편부터 섭렵중입니다!

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

# 이벤트 루프, 

바로 윗줄에 

to_x = 0

이라고 넣어보시겠어요?

0

라툭Ratuk님의 프로필 이미지
라툭Ratuk
질문자

import pygame

pygame.init() # 초기화 (반드시 필요)

# 화면 크기 설정
screen_width = 480 # 가로 크기
screen_height = 640 # 세로 크기
screen = pygame.display.set_mode((screen_width, screen_height))

# 화면 타이틀 설정
pygame.display.set_caption("JD Game"# 게임 이름

# 배경 이미지 불러오기
background = pygame.image.load("C:\\Users\\JunDragon\\Desktop\\PythonWorkspace\\pygame_basic\\background.png")

# 캐릭터 (스프라이트) 불러오기
character = pygame.image.load("C:\\Users\\JunDragon\\Desktop\\PythonWorkspace\\pygame_basic\\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 # 화면 세로크기 가장 아래에 해당 하는 곳에 위치


# 이벤트 루프
running = True # 게임이 진행중인가?
while running:
    for event in pygame.event.get(): # 어떤 이벤트가 발생하였는가>
        if event.type == pygame.QUIT: # 창이 닫히는 이벤트가 발생하였는가?
            running = False # 게임이 진행중이 아님

        if event.type == pygame.KEYDOWN: 
            if event.key == pygame.K_LEFT:
                to_x -= 5
            elif event.key == pygame.K_RIGHT:
                to_x += 5
            elif event.key == pygame.K_UP:
                to_y -= 5
            elif event.key == pygame.K_DOWN:
                to_y += 5

        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                to_x = 0
            if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                to_y = 0

    character_x_pos += to_x
    character_y_pos += to_y

    if character_x_pos < 0:
        character_x_pos = 0
    elif character_x_pos > screen_width - character_width:
        character_x_pos = screen_width - character_width

    if character_y_pos < 0:
        character_y_pos = 1
    elif character_y_pos > screen_height - character_y_pos:
        character_y_pos = screen_height - character_y_pos

    # screen.fill((0, 0, 255))
    screen.blit(background, (00)) # 배경 그리기

    screen.blit(character, (character_x_pos, character_y_pos))

    pygame.display.update() # 게임 화면을 다시 그리기!

# pygame 종료
pygame.quit()

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

to_x 라는 변수가 선언되지 않았다네요. 윗쪽에 변수를 잘 만드셨는지, 오타는 없는지요?

소스코드 전체를 다 올려주시면 봐드리겠습니다 ^^

0

라툭Ratuk님의 프로필 이미지
라툭Ratuk
질문자

이렇게 뜨네요 ㅠ

0

라툭Ratuk님의 프로필 이미지
라툭Ratuk
질문자

keyboard_event.py", line 48, in <module>

    character_x_pos += to_x

NameError: name 'to_x' is not defined

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요

어떤 에러가 발생하나요?

작성하신 전체 코드를 올려주시면 확인 후 도움드리겠습니다 ^^

감사합니다.

라툭Ratuk님의 프로필 이미지
라툭Ratuk

작성한 질문수

질문하기