python + pygame 환경구축
https://huiyu.tistory.com/entry/Python-Pygame-환경구축-Window10-VS-code?category=767379
pygame - cave
소스코드 다운
https://github.com/huiyueun/pythongame
책따라서 하고있는 첫번째 파이썬 게임, cave.
간단하게 space 키를 이용해 추락하지 않게 하는 게임. 80라인정도로 간단하게 만들 수 있다.
차근차근 따라하려고 깃레포 만들고 코드 업로드중.
먼저 파이썬 코드 이해하기.
import
가장 상단에 있는 코드는 파이썬 모듈을 임포트하기 위한 코드이다.
import sys, pygame -> sys(시스템 모듈)과 pygame 모듈을 임포트하고 있다.
각 모듈엔 여러 상수를 사용하고 있는데 이를 갖고올 수도 있다.
'from pygame.locals import QUIT'와 같이 사용하면 pygame.locals 모듈의 QUIT 상수를 사용한다는 의미이다.
main 함수
파이썬 파일은 기본적으로 위부터 차례로 실행하지만 함수가 설정되어 있다면 그 함수는 호출되지 않으면 실행되지 않는다.
python에서 함수 설정은 위 코드와 같이 def [함수명]() : 의 형태로 설정할 수 있다.
->def main() : 은 코드에서 main()함수를 설정하고 있는 것이다.
실제 main()함수를 설정하는 부분은 코드 제일 하단에 위와같이 되어있다.
__name__이 __main__과 같을때 main()함수를 실행시킨다.
** __name__이라는 변수는 자신이 프로그램을 시작한 파일이면 __main__이란 값이 설정된다.
위 예제파일을 실행시키면, 이파일은 프로그램을 시작한 파일이기 때문에 __main__이 설정되고, main()함수를 실행하게 되는 구조이다.
** 자신이 프로그램을 시작한 파일이 아니라면?
- 파이썬에선 import를 통해 여러 모듈을 읽어 들일 수 있다. 이땐 자신이 직접 실행되는 파일이 아니라 불리는 쪽이 되게 된다. 이 경우 __name__을 출력하게 되면 __name__에는 자신의 모듈명이 설정되어 있다.
PyGame code
PyGame은 SDL2를 바인딩한 코드라서 기본 구조 자체가 SDL2와 비슷하다. SDL2의 경우 코드를 많이 봐와서 기본 구조자체는 간단하게 이해할 수 있었다.
PyGame 초기화
pygame.init() - pygame 모듈 초기화 함수, pygame 사용시 가장 먼저 호출해줘야 한다.
pygame.key.set_reapeat(5, 5) - 키의 반복 기능을 설정을 위해 사용.
set_repeat(delay, interval)
SURFACE = pygame.display.set_mode((800,600)) - 800x600 윈도우 생성
타이머 설정
SDL의 게임 구조는 메인루프를 돌리면서 이 메인루프에서 화면을 갱신하는 구조이다. 하지만 휴식없이 매 루프에서 화면을 업데이트하게 되면 CPU가 부하를 받게 되면서 성능이 크게 저하된다.
사실 사람의 눈은 이렇게 빠르게는 쫓아갈 수 없어서 빠른 속도의 루프는 불필요하다. 그렇기 때문에 게임 구현시 매 프레임 휴식시간을 주도록 구현하게 되는데 PyGame엔 이러한 함수가 준비되어 있다.
pygame.time.Clock()으로 clock 객체를 생성, 메인루프에서 FPSCLOCK.tick(15)라고 호출한다. 이렇게 되면 1초에 15회 루프가 돌게 되면서 1초에 15프레임을 그리게 된다.
-->메인루프 내에서 호출
키입력
샘플코드 while문 내에 아래와 같은 코드를 볼 수 있다. key event를 받아오는 코드로, pygame.event.get()을 통해 키가 입력이 들어오면 키 이벤트를 받게 된다. 키이벤트를 받아오면 event.type 분기문을 통해 키 종류에 따라 하는 일을 구현하게 한다.
위 샘플의 구조는 아래 코드와 같은데, 기본적인 pygame의 모든 구조는 아래와 같다고 보면 된다.
여기까지가 게임알고리즘을 제외한 python과 pygame 기본구조.
책 게임으로 배우는 파이썬으로 공부중입니다 ->
http://www.yes24.com/Product/Goods/70916900?scode=032&OzSrank=1
'Software Development > Python' 카테고리의 다른 글
파이썬 구글스토어 분석 & 명사 추출 및 시각화 (0) | 2022.10.02 |
---|---|
Python + OpenPose로 달리기 포즈 추출해보기(이미지/비디오), OpenPose 기초 이해하기 (7) | 2022.02.02 |
python 두번째 게임 - 마인 스위퍼 (0) | 2020.03.28 |
python 첫번째 게임 cave - 캐릭터 조작 게임로직 (0) | 2020.03.22 |
Python + Pygame 환경구축 (Window10 / VS code) (2) | 2020.03.15 |