기타 지식

파이썬 무료 강의를 만들었습니다. (황금캐기 게임 개발)

안녕하세요!

 

지난 기억력 테스트 게임 편에 이어서 새로운 강의를 만들어서 개붕이들께 신고 드립니다.

 

* 미리 사과드립니다. 재미 없는 글입니다.
공부 글 보기 싫으신 분은 뒤로 가기를 눌러주세요

 

 

대충 이런거 만듭니다.

 

 

 

 

 

 

 

 

 

 

 


------------------------------------------------ 절 취 선 -----------------------------------------------------------------

 

 

 

 

코딩에 입문하시는 분들이 처음에는 으쌰으쌰 공부를 시작하지만 반복되는 지루한 문법 설명에, 한 번씩 나오는 어려운 개념(클래스라던지?)을 만나게 되면 곧 흥미를 잃게 되는 경우가 많습니다. 막상 공부를 꾸준히 하시는 분들도 "그래서 뭐? 이걸 배우면 내가 뭘 만들 수 있지?" 의문을 가지게 되기도 하구요.

 

0.jpg

 

기초 문법을 공부하신 분들께 저는 항상 프로젝트를 해보시라고 추천합니다. 주제는 뭐가 되었든 상관 없어요. 그냥 만들고 싶은 프로그램을 처음부터 끝까지 완성해보면 그게 프로젝트입니다. 그 과정에서 오류도 만나고 시행 착오도 겪고 책에서 배우지 않은 내용은 구글링도 해보고 누군가에게 질문도 해보면서 실력이 쌓이는 것이죠.

 

물론 험한 말도 한 번씩 나오곤 합니다.

 


하지만 어떤 분들은 프로젝트를 무엇으로 할 지, 어디까지 만들 수 있을 지 쉽게 떠오르지 않는 경우도 있을 겁니다.

공부한 내용을 어떻게 적용할 수 있을지 감이 안 잡힐 수도 있구요. 이는 아주 자연스러운 현상이므로 크게 걱정하지 않으셔도 됩니다.

 

그리고 이럴 땐 그냥 평소에 즐기시는 게임을 하나 골라서 비슷하게 만들어보는 것도 아주 좋은 접근이에요!! 강추하는 방법입니다.

 

왜냐면, 게임은 재밌거든요...

 

딱 한 판만... 한 판이 두 판이 되고... 두 판이 네 판이 되고...

 

2.jpg

 

그리고 남들은 게임을 할 때, 나는 게임을 직접 만든다고 생각하면 왠지 기부니가 좋습니다.

 

3.png

 

그래서 이번에 "황금 캐기" 라는 게임을 주제로 해봤는데요.
어쩌면 인터넷 어디선가 한 번 정도는 보셨을거라 생각됩니다.

 

 

게임을 하는 방법은 굉장히 단순합니다.

 

주어진 시간 동안 최대한 비싼 보석을 많이 캐서 목표 점수보다 높은 점수를 따면 성공입니다.

게임 조작은 그냥 마우스 클릭만 하면 끝이에요.

 

 

 

 

화면을 자세히 들여다보면 화면 윗쪽의 광부 근처에 집게가 좌우로 왔다갔다 하고 있습니다.

 

 

이 때 캐고자 하는 보석의 위치에 집게가 왔다고 판단되면, 마우스를 클릭하여 거기로 집게를 쭉 뻗어서 잡을 수 있습니다.

 

 

보석을 끌고 오게 되면 그 보석이 가지고 있는 가격만큼 점수가 더해지게 되며, 계속해서 다음 보석을 캘 수 있게 되지요.

 

이렇게 해서 화면 오른쪽 위에 있는 주어진 시간동안
 

 

주어진 목표 점수보다 높은 점수를 얻게 되면 다음 레벨로 계속 이어갈 수 있게 됩니다.
 

8.png


그런데 게임 내 보석들은 그 종류와 크기에 따라 무게가 달라서, 보석마다 끌고 오는 속도가 제각각이에요. 

 

엄청 큰 금을 잡게 되면 가격은 높지만 끌고 오는데 시간이 꽤 걸리구요.

 


반면에 크기는 제일 작은데 가격이 제일 높은 다이아몬드는 아주 빨리 끌고 올 수 있습니다.
 

 

 

하지만 다이아몬드는 잡기가 쉽지가 않아요. 보통 무겁기만 하고 아무 짝에도 쓸모 없는 돌 사이에 숨어 있어서 다이아몬드를 잡으려다 돌을 잡아서 허탕을 치는 경우가 많습니다. 돌은 엄청 무거워서 끌고 오는 속도가 느린데 가치는 거의 없지요.

 

11.png

 

그리고 이렇게 게임 내에서 좌우로 움직이며 집게의 동작을 방해하는 동물도 있구요

 


때로는 폭탄이 있어서 잘못 건드렸다가는 주변의 모든 보석을 사라지게 할 수도 있습니다.

 


결국은 마우스 터치만 하면 되는 단순한 게임이지만 원하는 목표를 향해 정확하게 집게를 뻗어야 하므로 타이밍이 아주 중요한 게임이라고 할 수 있습니다.

 


 

이번 프로젝트를 함께 진행하면서 새롭게 배우는 내용은 이렇습니다.

 

1. 마우스 클릭을 통한 이벤트 처리
키보드 방향키나 스페이스가 아닌 마우스를 클릭했을 때 어떻게 동작을 처리하는지 공부합니다.

 

 

2. Sprite 클래스
게임 내에서 캐릭터 하나를 사용하기 위해서는 이미지 파일, 가로 세로 크기, 현재 좌표 등 여러 정보를 필요로 합니다. 각각 별도의 변수로 만들어서 처리하는 방법도 있지만 캐릭터의 수가 많아지게 되면 수십, 수백개의 변수를 만들게 될 수도 있는데요. 이 때 라이브러리에서 제공하는 Sprite 클래스를 상속받아서 게임 클래스를 만들면 보다 수월하게 게임 캐릭터나 아이템을 관리할 수 있게 됩니다.

 

 

3. 이미지 회전
어떤 중심점을 기준으로 해서 이미지를 원하는 각도에 맞춰서 회전하는 방법을 배웁니다. 황금캐기 게임의 경우 집게를 회전시키는 법을 배우게 되구요.

 

 

이 부분을 응용하면 유명한 게임인 퍼즐 버블이나 포트리스에서도 비슷하게 적용할 수 있겠지요.

 

퍼즐 버블에서 화살표를 좌우로 움직여서 공을 쏘는 방향을 잡거나,
 

15.png

 

포트리스에서 적 탱크를 맞히기 위해 각도를 계산하는 부분처럼 말이죠.

 

16.png

 

 

4. 투명한 영역을 제외한 충돌 처리
게임 개발에서 아주 많이 쓰이는 부분 중 하나가 충돌 처리인데, 지금까지 제가 다룬 기초 강의에서는 rect, 즉 사각형 기준으로 충돌체크를 하고 있었습니다. 그러다보니 사각형이 아닌 이미지는 눈으로 볼 때는 분명 충돌하지 않았는데 게임에서는 충돌한 것으로 인식이 되어서 부자연스러운 부분이 있지요.

 

 


그래서 보다 심화된 내용으로, 이미지 파일 내에서 투명한 영역은 제외하고 진짜 이미지가 존재하는 부분끼리 충돌했을 때에만 충돌처리 하는 방법을 배워봅니다.

 

 

5. 수학
한 번씩 이런 질문을 받습니다.
"코딩을 위해서 수학을 잘 해야 하나요?"

 

저는 이렇게 생각합니다.
"잘 못해도 되지만, 잘 하면 유리합니다"

 

프로그램 개발에도 다양한 분야가 있어서 모든 개발자분들이 수학을 잘 알아야 한다고 생각하지는 않지만, 게임 개발에 있어서는 수학적 지식이 요구되는 경우가 종종 있습니다. 이번 영상에서는 프로그램 내에서 수학이 어떻게 쓰이는지, 삼각함수를 예로 들어서 설명합니다.

 

18.png

 

19.jpg

 


강의에서 사용하는 툴은 비주얼 스튜디오 코드(VSCode)이며 라이브러리는 pygame을 활용합니다.

 

20.png

21.png

 

 

 

 

 

 

 


이번 강의는 난이도가 "중급" 정도이며, 총 2시간 40분 정도 분량의 목차는 이렇게 구성했어요.


(0:00:00) 0.Intro
(0:00:26) 1.소개
(0:03:12) 2.기본 프레임
(0:07:12) 3.배경 이미지
(0:10:58) 4.보석 클래스
(0:19:24) 5.보석 그룹핑
(0:26:17) 6.집게 클래스
(0:33:15) 7.집게 중심점
(0:41:35) 8.집게까지 직선 긋기
(0:46:13) 9.집게 흔들기 #1
(0:59:45) 10.집게 흔들기 #2
(1:09:39) 11.집게 발사
(1:17:46) 12.집게 돌아오기
(1:24:52) 13.충돌 처리 기본 #1
(1:35:49) 14.충돌 처리 기본 #2
(1:42:14) 15.충돌 처리 기본 #3
(1:55:20) 16.충돌 처리 고급 #1
(2:03:01) 17.충돌 처리 고급 #2
(2:08:45) 18.게임 점수
(2:18:25) 19.게임 오버
(2:30:24) 20.다양한 보석 추가
(2:36:37) 21.PyInstaller 패키징

 


마지막에는 보너스로 개발하신 게임을 친구에게 공유할 수 있도록 PyInstaller 를 이용한 패키징 방법도 알려드립니다.

 


황금 캐기 프로젝트 강의 영상은 하나로 돼 있으며 여기에서 확인하실 수 있습니다.

(황금캐기 프로젝트)
 

 

 

파이썬을 처음 접하시는 분들은 기본기가 필요하므로 다음 두 영상을 먼저 공부해주세요 ^^

(파이썬 기본편)

 

 

(파이썬 활용편1 - 게임 개발)

 

 

파이썬 공부를 하시는 분들께, 게임 제작 원리가 궁금하신 분들께 도움되면 좋겠습니다.

 

긴 글 읽어주셔서 감사합니다. ^^

 

 

 

p.s 스마트폰 앱으로 즐길 수 있는 진짜 게임을 개발하시려는 분들은 Unity3D 엔진을 공부하시길 권해드립니다. 위 영상에서 다루는 pygame 라이브러리는 파이썬을 공부하신 분들이 실력을 다지기 위해, 그리고 게임 개발의 원리를 학습하시는 용도로 배우기에 좋습니다.

55개의 댓글

2021.06.05
@커뮤니티잘안해요

2번씩 박으면 다시 해제되는데!!!

0
@나코

ㅋㅋ 농담이고 한번햇음

근데 프로그래밍을 전공한거야?

 

이거 조기교육이 중요하지않음?? 몇살때부터 한거야??

0
2021.06.06
@커뮤니티잘안해요

ㅇㅇ 컴공나왔는데, 조기교육이 중요하다고는 생각안해. 나도 제대로 공부한건 대학 가서 처음이고 초딩때 GW_BASIC 조금 만져본 정도? 적성에만 맞으면 시작이 늦어도 크게 문제 없다고 봐

0

나코님 ㅠㅠ 여기서 뵙다니 ㅋㅋㅋㅋㅋ 깜놀했습니다. 개발 공부하려고 카페에서 과외해준다는 사람한테 사기 먹고 트라우마 때문에 코딩을 놨다가 다시 시작해보려구 해요.... 웹개발 쪽은 어떻게 보시나요 ㅠㅠ 공부할 때 MERN 스택으로 공부하라는 얘기가 있던데 어떤 것 부터 해야 될지 막막합니다... 일단 HTML CSS JS 는 어느정도 할 줄 알고 리액트 공부중에 있습니다 ㅜㅜ

0
2021.06.06
@한국에살으리랏다

ㅠㅠ 저런 저런.. 사기라니... 위로 드립니다. 나쁜 사람을 만났네요. 웹개발 아주 좋지요. 바람직한 선택이라 생각합니다. 공부하실 내용은 댓글로 몇 글자 적는것보다는 여기 링크 설명이랑 로드맵 천천히 보시면서 방향을 잡아보는것을 권해드립니다. 자세하게 잘 나와있어서 도움되실거에요

https://smoh.tistory.com/m/388

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
5227 [기타 지식] 카우치 사건은 정말 인디 음악을 끝장냈는가? 21 프라이먼 13 19 시간 전
5226 [기타 지식] 알코올 중독에 빠질 수 있는 칵테일, 브랜디 알렉산더편 - 바... 1 지나가는김개붕 4 1 일 전
5225 [기타 지식] 세계에서 제일 잘 팔리는 칵테일 중 하나, 위스키 사워편 - ... 2 지나가는김개붕 3 2 일 전
5224 [기타 지식] 왜 나는 독일을 포기하고 캐나다로 왔는가 26 상온초전도체 10 2 일 전
5223 [기타 지식] 독한 칵테일의 대표, 파우스트편 - 바텐더 개붕이의 술 이야기 5 지나가는김개붕 2 3 일 전
5222 [기타 지식] 칵테일에도 아메리카노가 있다. 편 - 바텐더 개붕이의 술 이야기 6 지나가는김개붕 6 5 일 전
5221 [기타 지식] 미국은 왜 틱톡을 분쇄하려 하는가? 14 K1A1 29 14 일 전
5220 [기타 지식] 아마도, 미국에서 가장 사랑 받는 칵테일 마르가리타편 - 바... 7 지나가는김개붕 9 14 일 전
5219 [기타 지식] 카이저라이히 다큐멘터리 E07. 왕관과 초승달 3 김팽달 0 16 일 전
5218 [기타 지식] 1편보다 나은 2편, 콥스 리바이버#2 편 - 바텐더 개붕이의 술... 1 지나가는김개붕 6 18 일 전
5217 [기타 지식] 애플 잭을 언급했으니 나오는 칵테일, 잭 로즈 편 - 바텐더 ... 1 지나가는김개붕 3 20 일 전
5216 [기타 지식] 얼려서 만드는 술, 애플잭편 - 바텐더 개붕이의 술 이야기 11 지나가는김개붕 6 21 일 전
5215 [기타 지식] 부드러운 입문용 버번, 우드포드 리저브 - 바텐더 개붕이의 ... 13 지나가는김개붕 5 22 일 전
5214 [기타 지식] 카이저라이히 다큐멘터리 E06. 영원한 제국 김팽달 1 25 일 전
5213 [기타 지식] 카이저라이히 다큐멘터리 E03. 불타는 브리튼 2 김팽달 3 28 일 전
5212 [기타 지식] 카이저라이히 다큐멘터리 E02. 유럽의 붉은 새벽 김팽달 1 28 일 전
5211 [기타 지식] 미술은 부자만 할 수 있을까? 에 대한 현실적인 이야기 8 알라신1 10 29 일 전
5210 [기타 지식] 엄벌주의에 반대하는 6가지 이유 78 술콩 38 2024.02.24
5209 [기타 지식] 유명하고 인기도 많지만 잘 안 만드는 칵테일, 피나 콜라다 ... 7 지나가는김개붕 9 2024.02.24
5208 [기타 지식] 뉴올리언스, 그리고 칵테일편 - 바텐더 개붕이의 술 이야기 14 지나가는김개붕 11 2024.02.20