안녕하세요! 게임을 만들고 싶어하는 잉여 쏘코입니다.
정말 오랜만에 게임을 한번 만들어 볼까 싶어서 이렇게 포스팅을 작성합니다.
고백 하나 하자면.. 저는 게임 개발을 통해 개발에 처음으로 입문하였습니다.
바로 RPG2000이라는 게임 개발 툴을 이용했었는데요..
아마 초등학교~중학교 언저리였는데, 아무 생각 없이 참 행복하게 만들었던 것 같습니다.
컴퓨터 사양이 좋지 않았기 때문에 (인생 첫 컴퓨터였던 펜티엄3...) 오래된 툴을 사용해야 했지만, 그런 것 상관 없이 내가 원하는 대로 게임을 만들고 플레이하는 것이 너무 재밌었습니다.
그 때가 벌써 10여 년 전입니다. 새삼 늙었다는 것이 실감되네요.(... 😢)
우연히 유튜브에서 나도코딩님의 영상을 보게 되었고, 그동안 웹에만 너무 치중했기 때문에 조금 색다르게 게임을 한 번 만들어볼까 싶어서 이렇게 새롭게 토이 프로젝트를 시작하게 되었습니다.
파이썬으로 게임도 만들 수 있다는 이야기를 학교에서 파이썬 수업을 들을 때 어렴풋이 들었었는데, 그걸 실제로 해볼 수 있을 것이라는 생각에 조금 설렙니다 😄 게임제작이 도대체 얼마만이야!!
사실 저는 파이썬을 깊이 공부하지 않아서.. 영상을 보면서 하나하나 이해해가면서 느릿느릿 따라갈 예정입니다.
그렇기 때문에 파이썬의 기본만 어느정도 되셨다면 충분히 제 글을 이해하실 수 있을 겁니다!!
만약 기초도 없다.. 하시는 분들은 아래 영상을 통해 6시간만에 파이썬의 기본을 익히고 다시 돌아오세요!! ㅋㅋㅋㅋ
나도코딩 님의 블로그와 유튜브 영상을 아래 올려드립니다. 제가 앞으로 따라하게 될 영상이니, 영상을 참고하실 분은 아래 링크를 참고하시면 됩니다 ㅎㅎ
정말 좋은 강의자료를 무료로 배포해주신 나도코딩 님께 진심으로 감사인사를 드립니다 (_ _)
이번 포스팅은 아래 영상에서 0:00~10:57까지의 내용을 담고 있습니다!
[파이썬] 황금캐기 게임 개발
코딩에 입문하시는 분들이 처음에는 으쌰으쌰 공부를 시작하지만 반복되는 지루한 문법 설명에, 한 번씩 나오는 어려운 개념(클래스라던지?)을 만나게 되면 곧 흥미를 잃게 되는 경우가 많습니
nadocoding.tistory.com
목차
0. 기본 프레임
IDE는 Visual Studio Code를 사용하고, pygame 라이브러리를 사용합니다.
저는 GoldMiner폴더를 하나 만들고 이 폴더 안에 파이썬 파일들을 만드려고 합니다.
터미널 창에서 pygame을 다운로드를 받습니다!
이제 폴더에 1_frame.py 파일을 만들어서 뼈대를 만들어줍니다.
스크린 크기를 지정하고, 프레임을 설정하고, X버튼을 누르면 게임을 종료할 수 있도록 만들어줍니다.
하나하나 주석처리를 했으니 참고하시길 바랍니다!
# 1_frame.py
# 기본 뼈대 생성
import pygame # 파이게임 라이브러리 불러오기
pygame.init() # 파이게임 초기화
# 스크린 크기 지정
screen_width = 1280
screen_height = 720
screen = pygame.display.set_mode((screen_width, screen_height)) # 이걸 통해 게임의 창 크기를 설정
pygame.display.set_caption("Gold Miner") # 게임 제목 설정 "Gold Miner"
clock = pygame.time.Clock() # 프레임값을 조정하기 위한 clock변수 설정
# 게임이 반복해서 수행될 수 있도록 게임 루프를 만든다!
running = True
while running: # 게임이 진행중이라면? while문을 계속해서 반복하게 된다!
clock.tick(30) # FPS 값이 30으로 고정
for event in pygame.event.get(): # 이벤트를 받아오고
if event.type == pygame.QUIT: # 게임이 꺼지는 이벤트가 발생했다면
running = False # running 변수를 False로 바꿔준다!
pygame.quit() # while문을 빠져나가면 게임이 끝나도록 설정
이제 .py파일을 실행하면 Gold Miner로 이름을 설정한 창 하나가 나옵니다.
이 곳에서 우리가 만든 게임이 돌아가게 되겠죠??
1. 배경 이미지
이번에는 2_background.py라는 파일을 만들어줍니다.
그리고 1_frame.py에서 작성한 코드들을 모두 copy&paste 해줍니다.
배경화면 설정을 위해서 그림판을 열어서 크기를 조정해줍니다.
1280*720으로 코드를 짰으니, 그림판의 배경 크기도 똑같이 1280*720으로 만들어줍니다.
그리고 색깔을 원하는 대로 바꿔서 페인트칠을 해주고 저장해줍니다. (저는 영상과 동일한 연한 노랑으로 했습니다!!)
저장 위치는 맨 처음에 vscode에서 설정해준 폴더가 되겠습니다.
이제 가져온 사진을 pygame 라이브러리에서 불러와서 사용해야겠죠?
os 라이브러리를 불러와서, 현재 파일의 위치를 반환할 수 있게 dirname을 사용합니다.
dirname은 디렉토리네임의 줄임말이고, __file__은 현재 수행중인 코드를 담고 있는 파일이 위치한 경로를 의미합니다.
경로를 불러왔따면 background 변수를 이용해서 그 이미지를 불러오고, screen.blit()으로 이미지를 전송합니다.
screen(화면)에 blit(전송하다)하라는 명령어입니다. 맨 앞에는 어떤 이미지를 전송할 것인지, 그 뒤에는 어느 좌표부터 그 이미지를 띄울 것인지를 의미합니다.
마지막으로 pygame의 display에 update하라는 명령을 내리면 됩니다!
앞으로 제가 올려드리는 사진에서 빨간 줄로 표시한 부분이 이전 단계에는 없었던 새로운 코드가 될 것입니다! 참고하세요!!
# 2_background.py
# 배경 이미지 설정
import os # 경로를 위해 os 라이브러리 불러오기
import pygame # 파이게임 라이브러리 불러오기
pygame.init() # 파이게임 초기화
# 스크린 크기 지정
screen_width = 1280
screen_height = 720
screen = pygame.display.set_mode((screen_width, screen_height)) # 이걸 통해 게임의 창 크기를 설정
pygame.display.set_caption("Gold Miner") # 게임 제목 설정 "Gold Miner"
clock = pygame.time.Clock() # 프레임값을 조정하기 위한 clock변수 설정
# 배경 이미지 불러오기
current_path = os.path.dirname(__file__) # os.path.dirname을 이용해서 현재 파일의 위치(2_background.py 위치) 반환
background = pygame.image.load(os.path.join(current_path, "background.png")) # 현재 위치의 파일이 있는 폴더의 background.png파일을 선택하게 됨!!
# 게임이 반복해서 수행될 수 있도록 게임 루프를 만든다!
running = True
while running: # 게임이 진행중이라면? while문을 계속해서 반복하게 된다!
clock.tick(30) # FPS 값이 30으로 고정
for event in pygame.event.get(): # 이벤트를 받아오고
if event.type == pygame.QUIT: # 게임이 꺼지는 이벤트가 발생했다면
running = False # running 변수를 False로 바꿔준다!
screen.blit(background, (0, 0)) # 맨 왼쪽 맨 위부터 ((0,0) 좌표부터)그림을 그려주도록 만들어준다!
pygame.display.update() # 설정한 배경화면 이미지를 pygame에 반영! (display에 업데이트!!)
pygame.quit() # while문을 빠져나가면 게임이 끝나도록 설정
여기까지 마치고 실행하면, 게임창에 아까 그림판으로 만든 배경화면이 떠 있는 것을 보실 수 있습니다!
신기하네요 :)
이번 포스팅에서는 기본 프레임~ 배경 이미지까지 만들어봤습니다.
영상에서는 0:00~10:57까지가 되겠네요!
아직 한참 남았지만, 천천히 목표달성 할 수 있도록 노력해보겠습니다!
그렇다면 다음 포스팅에서 뵙겠습니다 :) 감사합니다!!
최근댓글