티스토리 뷰

본 게시글에서는 나도코딩 파이썬 활용편1 영상을 학습하시는 분들이 자주 묻는 질문을 정리하였습니다.

 

영상 순서에 맞도록 구성하였으며 각 질문 마다 태그를 적어두었으니 Ctrl + F 를 통해 찾으시려는 키워드를 입력하시면 보다 빠르게 관련 질문 및 답변 내용을 찾을 수 있습니다. 이 글은 지속적으로 업데이트 될 예정이며 찾으시려는 내용이 없는 경우 댓글을 통해 남겨 주시면 추가될 수 있도록 하겠습니다.

 

단, 질문글을 남겨주실 때

  • 작성하신 소스 코드 전체
  • 에러메시지 전체
  • 영상 시간 정보

를 포함해서 작성해주시면 보다 빠르고 정확하게 답변을 드리도록 하겠습니다.

 


Chapter. 환경설정 & 프레임 (0:02:59)


(질문) 사용하시는 IDE 가 무엇인가요?  

#개발환경 #IDE #툴


(답변) Visual Studio Code 입니다. 설치 방법은 아래 링크를 확인해주세요.

 

 

파이썬 기본편 - 환경설정

환경설정 파이썬 개발을 위해 가장 먼저 해야 하는 작업, 바로 환경설정을 진행합니다. 파이썬 설치 1. 공식 홈페이지(https://www.python.org/downloads)에 접속합니다. 2. Downloads > All releases 를 클릭한..

nadocoding.tistory.com


(질문) 맥(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)


(질문) 충돌 영역이 사각형이 아닌 원이나 실제 이미지 영역 기준으로 할 수는 없나요?  

#네모 #동그라미 #투명


(답변) 가능합니다. 충돌에 대해서는 아래 링크에 있는 보다 자세한 설명을 참고 부탁드립니다.

 

 

pygame 의 스프라이트 충돌체크 방법

pygame 의 스프라이트 충돌체크에 대해서는 한번 간단하게 정리를 따로 해야 할것 같아 따로 정리를 해 둡니다. 전부 상세하게 적지는 않고 중요한 몇가지만(내가 필요한거만....아마도....?) 정리

nightshadow.tistory.com


Chapter. 공 쪼개기 (2:19:46)
(질문) 아직 내용이 없습니다. 
(답변) 아직 내용이 없습니다.


Chapter. 게임 오버 (2:27:38)
(질문) 아직 내용이 없습니다. 
(답변) 아직 내용이 없습니다.


Chapter. 버그 수정 (2:38:47)
(질문) 아직 내용이 없습니다. 
(답변) 아직 내용이 없습니다.


Chapter. 공통

(질문) 게임 속에 사운드를 넣을 수 있나요?

#사운드 #소리 #음악 #효과음 #mp3

 

(답변) 가능합니다. 아래 링크의 설명을 참고 부탁드립니다.

 

 

pygame 에서의 사운드 출력

매우 간단하게 중요한 부분만 설명하겠습니다. 나머지 자잘한 함수들은 직접 문서를 보시면 함수명만 봐도 뭔지 알만한 것들이니까요. > 일단 처음에 초기화를 해줘야 합니다. pygame.mixer.init() 믹

nightshadow.tistory.com


(질문) 파이썬으로 개발한 프로그램을 파이썬이 설치되지 않은 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) 가 잘못되었을 수도 있구요. 에러가 없다면 문법적인 실수는 없지만 로직 상에 문제가 생긴 것이므로 나도코딩 블로그에 제공되는 소스코드와 직접 작성하신 코드를 아래 영상 설명대로 비교를 해보시면 쉽게 잘못된 부분을 찾으실 수 있을겁니다.

 

(소스코드가 있는 블로그 링크)

 

[나도코딩] 파이썬 활용편1 게임개발 - 소개

많은 분들이 파이썬 기초까지는 잘 배우지만,  1. 초보를 벗어나 중급자로 실력을 키우려면?  2. 파이썬을 가지고 뭘 할 수 있는지? 이 2가지로 어려움을 겪고 있는 줄로 압니다. 그래서 저는 이

nadocoding.tistory.com

(소스코드 비교 강의 영상)

 


최종 수정 2020.12.31

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함