기타 지식

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

안녕하세요!

 

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

 

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

 

 

대충 이런거 만듭니다.

 

 

 

 

 

 

 

 

 

 

 


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

 

 

 

 

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

 

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개의 댓글

HAK
2021.06.03

님 텐서플로우 언제해줘요 ㅠㅠ

0
2021.06.03
@HAK

인공지능 원래 대기번호 3번인데 너무 바빠서 자꾸 늦어지네요 ㅠㅠ 미안해요

1
HAK
2021.06.03
@나코

장난이에여 ㅎㅎ 잘 보고 있습니다.

항상 감사합니다

0
2021.06.03

채굴 달달

0
2021.06.03
@엑세쿠탄스

저게 모두 코인이라면 ㅋㅋ

0
2021.06.03

님껄로 공부해서 이것저것 써먹고 있습니다.

정말 감사해요!!

0
2021.06.03
@대천사

키키키 써먹을 정도라면 능력이 대단한데요??? 도움되었다니 너무 기뻐요 ㅋㅋㅋ

0
2021.06.03

개붕이었다니 ㅜㅜ

0
2021.06.03
@대천사
0
2021.06.03

군대 다녀와서 휴학 때리고 이번에 2학년 복학하는 컴공인데 1학년때 파이선 기초 배운거 같은데 다 까먹엇네요.. 이런거 보면서 공부좀 하다가 복학 해야 겠어요.. 1학년때 배운 파이썬이나 c언어 기초 다 까먹어서 복학하고 따라갈수잇을지 모르겟네요 ㅠㅠㅠ 영상 감사합니다

0
2021.06.03
@만드레

방학을 잘 활용하셔야해요. 이후에 배우는 과정들은 프로그래밍 능력은 기본으로 깔고 갈거라서 모르면 배우는데 꽤나 고생... 아니, 진도를 아예 못 따라갈수가 있어요. 다시 처음부터 배운다 생각하고 맘먹고 언어 2개 정도는 마스터하고 새 학기 들어가세요 ^^

0
2021.06.03
@나코

어떻게 공부하는게 좋을까요... 일단 파이썬부터 공부하려고 하는데... 마스터라는 단어가 겁이 나네요ㅋㅋ;;;

0
2021.06.03
@만드레

컴공이면 어차피 넘어야 할 산이에요. 파이썬보다 C 믈 먼저 공부하시고 C 문법을 다 떼고 나면 C 언어로 자료구조와 알고리즘을 공부해보세요. 이 정도 하고 혼자 개인프로젝트 어느 정도 규모있는것 만들어보고나면 그 다음부터는 아주 쉬워집니다.

0
2021.06.03
@나코

댓글 감사합니다

0
2021.06.03
@만드레

파이썬 자체는 무료강의로도 질높은거 많음 인프런, 패스트캠퍼스만봐도 널린게 파이썬이라 하나찾아봐, 아직 학부생이면 갠적으론 c랑 파이썬을 빠르게 익히는거 추천해 일단 학교수업이 파이썬 c 위주로 진행할텐데 두개익혀두면 학점따는덴 좋지

0
2021.06.03
0
2021.06.03
@엉아조아
0
2021.06.03

컴퓨터 그래픽관련 개붕이인데 파이썬으로 스크립트짜서 인하우스 HDA나 인하우스툴 같은 자동화 해보려고하는데 어려울까??

0
2021.06.03
@Uranus

코딩이 완전 처음이라면 지금 시점에서 쉽다 어렵다를 얘기하기는 어렵고 직접 겪어봐야 알 수 있을거에요. 분명한 건 파이썬은 다른 언어에 비해 배우기가 굉장히 쉬워서 많은 비전공자분들도 공부를 하고 어느 정도 잘 써먹는다는 장점이 있어요

0
2021.06.03
@나코

코딩은 어느정도 할줄알아 이제 약간 수학을 가미하면서 하는부분이라 예를들어 코딩으로 코사인 모양이나 사인 모양을 합처서 만든다던가, 파이썬은 조금해봤는데 뭐래해야하지? 다른 언어보다 쉽게는 느껴졌는데 너무 생약하는 부분이 많아서 어려우면서 쉽다고해야하나? 그런 느낌을 많이 받았음

0
2021.06.03
@Uranus

오? 이 정도면 의외로 쉽게 원하는 자동화 구상 가능할지도!!

0
2021.06.03

님 유투브 보면 진짜 1도 모르는 사람도 배울 수 있나요??

0
2021.06.03
@그리즐리

사람 by 사람입니다만 1도 모르는 분들이 열공하셔가지고 비개발 직군에 있다가 개발 직군으로 옮긴 사례도 있어요 ㅋ 도전해볼만한 가치는 있습니다. 꼭 취업 관련이 아니더라도 코딩을 할 줄 아는 것은 나에게 굉장한 무기입니다.

0
2021.06.03

오 저 채널 주인이 개붕쿤이었네

0
2021.06.03
@질리지마
1
2021.06.04
@나코

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 개웃기네

0
2021.06.03

오 머야 GUI(tkinter)깔짝할때 님 영상으로 좀 참고했는데 개붕이였네 반가웟 구독해야지

0
2021.06.03
@commitPush

ㅋㅋㅋㅋ tkinter 딱 1년 전에 만들었는데 ... 사실 강의 만들고 나도 다 까먹은 ㅋㅋ 구독조앗

0
2021.06.03

0
2021.06.04
@호모심슨
0
2021.06.04

파이썬 공부해서 빅데이터 활용해서 마케팅쪽에 이용하거나 업무자동화 하는건 어느 정도 시간이 필요할까유?

0
2021.06.04
@호우예

제 강의 기준이라면 기본편 6시간 + 업무자동화 9시간 = 총 15시간 강의 들으면 돼요. 근데 따라히면서 실습도 하고 실수도 하고 구글링도 하고 응용도 하고 그럴려면 2주 정도는 꾸준히 해야 혼자서 조금씩 해볼 수 있을거에요 ^^

0
2021.06.04
@나코

오호...강의 들어보겠슴둥

0
2021.06.04

요즘 프로그래밍 하건다니는데 개붕이꺼보고 공부해봐야겠다 고마워!ㅊㅊ!!

0
2021.06.04
@시나모로루

ㅊㅊ 감사!! 학원이 질문도 바로 할수있고 돈내고 하다보니 안갈수도 없어서 효과는 더 좋을수 있어 ㅋ 대신 기초만 잡으면 그 다음부터는 온라인 강의로 훨씬 싸게 공부 가능할듯

0
2021.06.04

오 이 개붕이 완전 좋음. 혹시 궁금한게 웹서비스로 프론트랑 파이썬이랑 이을 수 있는 강의를 만들 계획이나 지금 당장 공뷰할만한 거 추천해줄 수 있어?

0
2021.06.04
@번째드립인지

아직 다른 활용편 강의들이 줄을 서서 기다리고 있어서 당장은 웹쪽은 다룰 계획이 없어 ㅠ 있다고 해도 내년 하반기에나 될려나?? 인프런에 이 강의가 평이 좋아보이네!

https://www.inflearn.com/course/%EB%B7%B0-%EC%9E%A5%EA%B3%A0-%EC%97%B0%EB%8F%99-%EC%8B%A4%EC%A0%84#

0
2021.06.04
@나코

오 고마워! 네 파이썬 강의 잘 보고 있는데 저거랑 같이 병행해야겠다

0
2021.06.04
0
2021.06.04
@청소기
3
2021.06.04

사랑합니당 행님.. 전전->로봇->AI 테크타는 개붕이라 빌드 컴파일 이런 기초 부분이 너무약한데, 바이너리 파일 말구 소스코드 받아서 프로그램 분석하려면 일일이 다 디버깅해보는 수 밖에없을까?

0
2021.06.04
@공중전화

설계문서 있으면 그거 보면서 우선 구조 파악하고 큰 그림은 그려볼수 있겠지만 제대로 분석하려면 디버깅 걸고 메인함수부터 시작해서 쭉 따라가면서 어떤 함수가 어떻게 호출되고 동작은 어떻고 살펴보는게 필요할거야, 코드 주석 처리 하고 지워보고 바꿔보고 하면서 예상한 게 맞는지 확인도 해보면서 말이지

1
2021.06.04
@나코

감사합니다 행님 복받으실거에요

0
2021.06.04

야부키 나코의 나코임?

0
2021.06.04

개붕쿤 천사야?

0
2021.06.05
@오우야열렸다

아직 살아는 있음

0
2021.06.04

아니 개붕이였어? 나도코딩? ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

0
2021.06.05
@코등이

코등이도 코딩 공부 ㄱㄱㄱ

0
2021.06.05
@나코

하고있엉

0

이게 개붕이었음? 구독 좋아요 알람설정 2번씩박았다.

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
12439 [호러 괴담] [살인자 이야기] 컨저링 3의 실화 이야기. 악마가 시켰다 그그그그 3 1 일 전
12438 [기타 지식] 당신이 칵테일을 좋아하게 됐다면 마주치는 칵테일, 사이드카... 4 지나가는김개붕 4 1 일 전
12437 [역사] 지도로 보는 올초 겨울까지의 우크라이나 전쟁 12 FishAndMaps 16 2 일 전
12436 [기타 지식] 클래식은 아니지만, 여전히 사랑 받는 칵테일, 갓 파더편 - ... 2 지나가는김개붕 3 2 일 전
12435 [역사] 중화인민공화국 의외의 금기-6.25전쟁(5) 2 綠象 4 3 일 전
12434 [역사] 중화인민공화국 의외의 금기-6.25전쟁(4) 綠象 3 4 일 전
12433 [역사] 중화인민공화국 의외의 금기-6.25전쟁(3) 1 綠象 3 4 일 전
12432 [호러 괴담] [미스테리] 한 은행 직원이 귀가 중 사라졌다? 2 그그그그 5 4 일 전
12431 [호러 괴담] [살인자 이야기] 뭔가 좀 이상한 지명수배자. 이와테 살인사건 2 그그그그 3 6 일 전
12430 [기타 지식] 페미니즘은 여성에게 도움이 되었는가 02 16 키룰루 28 6 일 전
12429 [역사] 중화인민공화국 의외의 금기-6.25전쟁(2) 4 綠象 10 8 일 전
12428 [역사] 중화인민공화국 의외의 금기-6.25전쟁(1) 4 綠象 13 8 일 전
12427 [기타 지식] 페미니즘은 여성에게 도움이 되었는가 01 25 키룰루 26 8 일 전
12426 [역사] 네안데르탈인은 어떻게 생겼을까? 2부 3 식별불해 11 8 일 전
12425 [호러 괴담] [미스테리] 방에서 실종됐는데 9일 뒤 방에서 사망한 채 발견... 6 그그그그 8 9 일 전
12424 [역사] 네안데르탈인은 어떻게 생겼을까? 11 식별불해 27 9 일 전
12423 [호러 괴담] [살인자 이야기] 게임에서 만난 여대생에게 돈을 주겠다며 집... 2 그그그그 3 10 일 전
12422 [호러 괴담] [살인자 이야기] 바람피우던 여성의 실종, 27년 뒤 법정에 선... 그그그그 6 13 일 전
12421 [역사] American Socialists-링컨대대의 투쟁과 최후(下) 2 綠象 5 13 일 전
12420 [역사] American Socialists-링컨대대의 투쟁과 최후(中) 1 綠象 3 14 일 전