본문 바로가기
프로그래밍/파이썬

모두의 파이썬 - DAY 17 (터틀런 만들기1)

by Tilog 2021. 12. 11.
728x90
반응형

모두의 파이썬 '17번 째'시간!

오늘은 '터틀런 만들기' 첫 번째 시간이다.

다소 긴 과정으로 DAY17~18에 걸쳐 진행된다.

 

터틀런 개요

 

터틀런

이번에 만들 '터틀런' 게임은 

플레이어 거북이가 적(빨간색 거북이)을 피해 

최대한 많은 먹이를 먹는게 목표이다.

 

본론

터틀런1

제목부터 터틀런이니 만큼 거북이 모듈을 불러오고

먹이의 위치를 랜덤하게 지정해주기 위해 랜덤 모듈도 불러온다.

그리고 '악당 거북이'를 만들어줄건데 악당 거북이의 변수 이름은

'te'로 지정해준다. 그리고 변수값엔 't.Turtle()'를 적어주는데

Turtle의 맨 앞 글자는 꼭 '대문자'로 적어준다. 안 그러면 에러가 난다.

모양은 거북이, 색깔은 빨간색, 스피드는 최상인 0으로 지정한다.

그리고 초기 위치를 지정해줄건데 꼭 'te.up()'을 적어주도록 하자

그리고 'te.goto(0, 200)'으로 초기 위치를 지정한다.

 

안 그러면 이렇게 된다.

'te.up()'이 없으면 위 처럼 빨간 거북이의 동선이

모두 기록된다. 게임을 오래 진행하다보면

꽤 난잡해질 것 이다.

터틀런1

그 다음으로 '초록색 먹이'를 만들어주도록 하자.

변수 명은 'ts'로 지정하고 값은 빨간 거북이와 같이

't.Turtle()'로 지정해준다. 먹이의 모양은 '원'

색깔은 '초록색'으로 설정한다.

초기 위치는 '(0, -200)'으로 빨간 거북이와

반대선상에 놓이게 설정한다.

 

 

 

 

터틀런1

다음은 '주인공 거북이(플레이어)'의 이동을 설정해보자.

'turn_방향():' 함수를 각 방향마다 설정해주고

't.setheading()'으로 방향마다 거북이 머리방향을 설정해준다.

 

터틀런1

이젠 게임 시스템에 관여하는 것을 만들어보겠다.

'play'라는 함수를 만들어주고 자동으로 주인공 거북이가

이동하도록 설정해준다. 그 다음 'ang'라는 변수를 선언해주고

값은 'te.towards(t.pos())'로 설정한다. 무엇을 의미하는 변수냐면

'te(빨간 거북이)'가 항상 't(주인공 거북이)'를 향하게 하는 것이다.

'pos'가 좌표값을 반환시키는 함수이다!

 

그리고 빨간 거북이를 '9'만큼 전방으로 이동시킨다.

 

터틀런1

위 조건문들도 'play'함수에 걸리는 부분들이다.

'주인공과 먹이의 거리가 12보다 작으면' 이라는 조건문을 만들고

'star_x, star_y'라는 변수를 만들어준 후 좌표값을

'(-230, 230)'범위로 지정해준다. 그리고 'ts(먹이)'

'star_x, star_y'로 이동시킨다.

두 번째 조건문은 '주인공과 적의 거리가 12 이상이면'

'ontimer'함수를 써서 타이머를 작동하게 한다.

괄호를 보면 앞은 '함수', 뒤는 시간이다.

 

파이썬에서 타이머는 '1회성'이며 

1초는 '1000'으로 설정한다.

이 게임에서는 '0.1초'로 설정할 것이기 때문에

'100'으로 해준다.

 

타이머는 1회성 이지만 두 번째 조건문을 보면

'주인공과 악당의 거리가 12 이상이면'... 이기떄문에

조건문의 조건과 합치하면 타이머는 계속 작동된다.

 

반대로 얘기하면 악당과의 거리가 12 이내이면

play함수는 더 이상 진행되지 않고 멈춘다

이 말은 즉슨 '게임이 더 이상 진행되지 않는다'

물론 적과 닿는다고 러닝창이 꺼지진 않지만 

아무 이벤트도 일어나지 않는다.

 

터틀런1

이번엔 '주인공 거북이'를 만들어보자.

그런데 주인공 거북이와 상관없는 명령어도 들어가있는데

't.setup(500, 500)'은 게임창의 크기를 말하는것이고,

't.bgcolor'는 그 전에도 썼지만 그냥 뒷 배경 색깔을 지정하는 것 이다.

거북이 모양은 'turtle'로 지정하고 스피드는 '0(가장 빠름)',

't.up()'을 꼭 적어주고 거북이 색깔은 '흰색'으로 지정한다.

 

터틀런1

'onkeypress'함수를 이용하여 방향키를 누를 때 마다

위에서 설정해둔 각 방향 별 함수가 실행되게 한다.

이 때 큰 따옴표 안에 있는 단어들은 꼭 첫 머리를

'대문자'로 해준다.

 

그리고 't.listen()' 함수를 넣어준다. 이 함수는 '꼭' 넣어줘야한다.

아니면 키보드의 입력을 받을 수 없다. 그럼 게임 진행이 불가능하다.

 

그리고 마지막으로 'play()'함수를 실행한다.

 

 

 

 

플레이 영상

빨간색 거북이한테 따라잡히면

영상 마지막 부분처럼 그냥 멈춘다.

 

728x90
반응형

댓글


#네이버 애널리틱스 ▼