티스토리 뷰
본 게시글에서는 나도코딩 파이썬 활용편1 영상을 학습하시는 분들이 자주 묻는 질문을 정리하였습니다.
영상 순서에 맞도록 구성하였으며 각 질문 마다 태그를 적어두었으니 Ctrl + F 를 통해 찾으시려는 키워드를 입력하시면 보다 빠르게 관련 질문 및 답변 내용을 찾을 수 있습니다. 이 글은 지속적으로 업데이트 될 예정이며 찾으시려는 내용이 없는 경우 댓글을 통해 남겨 주시면 추가될 수 있도록 하겠습니다.
단, 질문글을 남겨주실 때
- 작성하신 소스 코드 전체
- 에러메시지 전체
- 영상 시간 정보
를 포함해서 작성해주시면 보다 빠르고 정확하게 답변을 드리도록 하겠습니다.
Chapter. 환경설정 & 프레임 (0:02:59)
(질문) 사용하시는 IDE 가 무엇인가요?
#개발환경 #IDE #툴
(답변) Visual Studio Code 입니다. 설치 방법은 아래 링크를 확인해주세요.
(질문) 맥(Mac)에서 개발 중인데 소스 코드를 똑같이 해도 에러가 나면서 실행이 안돼요
command gcc failed with exit status 1 |
#개발환경 #IDE #툴
(답변) 맥에서는 일부 버전 호환성 문제가 있답니다. 터미널에서 아래 명령을 통해 설치 해보세요. 참고로 맥에는 자동으로 파이썬 2.7 버전이 설치되어 있어서 파이썬 3.x 임을 명시하기 위해 pip 뒤에 3 을 붙여서 pip3 로 똑같이 하셔야 합니다. 다른 패키지를 설치할 때도 마찬가지입니다.
pip3 install pygame==2.0.0.dev6 |
(질문) pygame 은 설치가 잘 되었는데도 import pygame 부분에서 에러가 나요.
ModuleNotFoundError: No module named 'pygame' |
#pygame #no module
(답변) 파이썬이 2개 이상 설치돼있으신가봐요. 터미널에서 python -V 해서 나오는 버전과 vscode 좌측 하단에 나오는 버전 정보가 다를텐데, vscode 에서 버전 나오는 부분 클릭하셔서 상단에 뜨는 버전 중 터미널에 나오는 버전과 같은 것으로 맞춰보세요. 맥 환경이시면 pip 대신 pip3 명령으로 pygame 을 설치해주세요
pip3 install pygame |
Chapter. 배경 (0:11:52)
(질문) 아래와 같은 에러가 나타나며 창이 닫힙니다.
NameError: name 'screen' is not defined |
#개발환경 #IDE #툴
(답변) screen 변수 선언이 올바르게 안되었네요. 코드 윗부분 pygame.display.set_mode(...) 줄 앞에 아래와 같이 screen = 을 넣어주세요.
screen = pygame.display.set_mode((screen_width, screen_height)) # screen 변수에 할당
Chapter. 캐릭터 (0:18:36)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 키보드 이벤트 (0:28:26)
(질문) 키를 누르고 있으면 to_x, to_y 가 더해져서 속도가 점점 빨라져야 하는 것 아닌가요? 왜 같은 속도로 움직이죠?
#to_x #to_y
(답변) for 문 바깥에 print(to_x) 를 해보시면 값의 변화를 확인할 수 있는데요, 가로 기준으로 오른쪽으로 가려면 to_x 를 양수로, 왼쪽으로 가려면 to_x 를 음수로 해서 for 문 밖에서 캐릭터의 x 값에 더해줍니다. 그런데 키를 누르고 있을 때는 KEYDOWN 이벤트가 딱 1번만 발생하고 이후에는 이벤트가 발생하지 않아요. 그렇기 때문에 계속 to_x 값을 변화시키지는 않다가 키보드에서 손을 떼면 KEYUP 이벤트가 발생하고 이때 to_x 값을 다시 0으로 초기화를 합니다. 그 때문에 가속의 효과를 내지는 않게 되지요. 결국 if 문 내에서는 키보드로 입력한 키의 종류에 맞게 방향만 설정해준다고 보시면 됩니다.
Chapter. FPS (0:39:54)
(질문) 델타 (dt) 값을 곱하면 왜 속도가 같아지는지 이해가 잘 안돼요.
#clock #속도 #delta
(답변)
dt = clock.tick()
위 코드는 이전에 불려진 시점으로부터 현재 불려지는 시점까지의 시간을 ms로 반환해줍니다. 그리고 clock.tick(30) 이렇게 함으로써 최대한 30 fps 내에서만 동작이 되도록, 소스코드 수행이 빨리 이루어지더라도 아직 시간이 되지 안 않았으면 기다리는 역할을 하지요. 마치 회사에서 3일동안 하기로 했던 일을 하루만에 끝냈다고 해도 남은 2일은 다른 일을 미리 하지 않고 휴식을 취하는 것처럼요.
fps 가 10이면, 1초에 10번 동작하니까 매 동작 소요시간은 0.1초입니다.
fps 가 20이면, 1초에 20번 동작하니까 매 동작 소요시간은 0.05초입니다.
그리고 이게 fps 에 따른 dt 값이 된답니다.
만약 100 씩 이동한다고 정의되었다면, to_x 도 프레임마다 100씩 더해질텐데요
fps 가 10이면 100 * 0.1초를 해서 이동거리가 10으로 보정이 됩니다.
fps 가 20이면 100 * 0.05초를 해서 이동거리가 5로 보정이 됩니다.
처음으로 돌아가서,
fps 가 10이면 1초에 10번 동작하는데 이동거리가 10이니까 총 이동거리는 100이 되지요
fps 가 20이면 1초에 20번 동작하는데 이동거리가 5니까 총 이동거리는 역시 100이 됩니다
이런 식으로 fps 가 달라져도 1초에 이동거리는 동일하게 되는 거랍니다.
Chapter. 충돌 처리 (0:46:54)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 텍스트 (0:54:42)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 게임 개발 프레임 (1:02:46)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 퀴즈 전반전 (1:07:03)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 퀴즈 후반전 (1:14:53)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 프로젝트 (1:22:16)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 배경과 캐릭터 (1:25:17)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 무기와 키보드 이벤트 (1:25:17)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 공 만들기 (1:50:43)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 공 튕기기 (1:57:37)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 충돌 처리 (2:10:22)
(질문) 충돌 영역이 사각형이 아닌 원이나 실제 이미지 영역 기준으로 할 수는 없나요?
#네모 #동그라미 #투명
(답변) 가능합니다. 충돌에 대해서는 아래 링크에 있는 보다 자세한 설명을 참고 부탁드립니다.
Chapter. 공 쪼개기 (2:19:46)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 게임 오버 (2:27:38)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 버그 수정 (2:38:47)
(질문) 아직 내용이 없습니다.
(답변) 아직 내용이 없습니다.
Chapter. 공통
(질문) 게임 속에 사운드를 넣을 수 있나요?
#사운드 #소리 #음악 #효과음 #mp3
(답변) 가능합니다. 아래 링크의 설명을 참고 부탁드립니다.
(질문) 파이썬으로 개발한 프로그램을 파이썬이 설치되지 않은 PC 환경에서도 실행하도록 할 수 있나요?
#배포 #패키징 #pyinstaller #친구
(답변) pyinstaller 를 통해 가능합니다. 아래 강의를 참고해주세요. 특히 게임 내에서 이용하는 리소스(이미지 파일) 경로 및 폰트 부분은 주의해주셔야 합니다. 리소스는 아래 영상에 설명이 되구요, 폰트 부분은 이렇게 None 대신 특정 폰트로 명시적으로 설정해주세요.
# game_font = pygame.font.Font(None, 40) # 기존 코드
game_font = pygame.font.SysFont("arial", 40) # 수정 코드
(질문) 키보드 방향키를 빨리 움직이면 캐릭터가 아예 멈춰버리는 현상이 있는데 개선할 방법이 있나요?
#멈춤 #느림 #방향키 #빠르게
(답변) 프로젝트 코드 기준으로 아래와 같이 4군데를 수정하면 위 현상을 해결할 수 있습니다. x 좌표 이동 방향 처리를 왼쪽, 오른쪽으로 나누어서 key down / key up 에서 각각 처리하여 더해주는 방식입니다.
# 수정1 : 기존의 character_to_x 를 왼쪽 방향, 오른쪽 방향 변수 2개로 나눔
character_to_x_LEFT=0
character_to_x_RIGHT=0
...
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 수정2 : 키를 누를 때 LEFT, RIGHT 에 따라 서로 다른 변수의 값 조정
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
character_to_x_LEFT -= character_speed # 바뀐 부분
elif event.key == pygame.K_RIGHT:
character_to_x_RIGHT += character_speed # 바뀐 부분
elif event.key == pygame.K_SPACE:
...
# 수정3 : 키에서 손을 뗄 때 LEFT, RIGHT 를 각각 처리
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT: # 이 부분은 모두 다 바뀜
character_to_x_LEFT = 0
elif event.key == pygame.K_RIGHT:
character_to_x_RIGHT = 0
# 수정4 : 두 변수의 값을 모두 더함
character_x_pos += character_to_x_LEFT + character_to_x_RIGHT
...
(질문) 강의 내용과 똑같이 했는데 에러는 없지만 동작이 달라요. 한 쪽 방향으로만 움직인다던지, 공이 작은 공으로 나눠지지 않는다던지, 공이 튕기지 않는다던지, 캐릭터와 충돌처리가 되지 않던지, 무기가 이상하게 나간다던지 등등...
#코드 #같은 #이상
(답변) 소스코드 상에 실수가 있어서 그렇습니다. 변수 명이 잘못되었거나, 코드 위아래 순서가 다르거나, 들여쓰기 (Indent) 가 잘못되었을 수도 있구요. 에러가 없다면 문법적인 실수는 없지만 로직 상에 문제가 생긴 것이므로 나도코딩 블로그에 제공되는 소스코드와 직접 작성하신 코드를 아래 영상 설명대로 비교를 해보시면 쉽게 잘못된 부분을 찾으실 수 있을겁니다.
(소스코드가 있는 블로그 링크)
(소스코드 비교 강의 영상)
최종 수정 2020.12.31
'파이썬 강의 > 자주 묻는 질문' 카테고리의 다른 글
[파이썬] 자주 묻는 질문 (FAQ) 모음 (35) | 2020.12.31 |
---|---|
[파이썬 기본편] 자주 묻는 질문 (FAQ) 정리 (283) | 2020.12.27 |
- Total
- Today
- Yesterday
- pycharm
- Tkinter
- pygame
- Unity
- 파이게임
- onlineclass
- 코랩
- coloso
- 나도코딩
- 아나콘다
- Colab
- game
- 행맨
- 주피터노트북
- vscode
- Coding
- Xcode
- c언어
- 파이썬
- 비주얼 스튜디오 코드
- Visual Studio Code
- GUI
- Mac
- 환경설정
- repl.it
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |