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

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

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

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

오늘은 저번 시간에 이어 

'터틀런 만들기2'이다.

 

 

개요

터틀런 만들기2

오늘은 저번 시간에 이어 조금 더 게임답게

완성을 해보려고 한다.

 

스크린샷에 보이는 것 처럼

타이틀도 넣고 스페이스바를 눌러서 

게임을 시작할 수 있도록 하고

화면에 점수도 표시되게 할 것이다.

그리고 먹이를 먹을 때 마다 빨간 거북이의

이동속도가 더욱 빨라지는 것 까지가

오늘 18일차의 과제다.

 

본론

 

 

터틀런 만들기2

오늘 내용은 저번 파일을 보완해서 만든 것이다.

책에서는 수정하다가 헷갈려서 오히려 망칠 수 있으므로

그냥 새로 하라고 했지만 귀찮아서 그렇게 안 했다.

그래서 오늘 내용과 17일차 내용을 구별하기 위해

주석 말머리에 DAY18을 'D-18'이라고 적어놨다.

 

먼저 점수를 만들기 위해 'score = 0'라는 변수를 선언한다.

그리고 'playing= False'라는 변수도 만든다.

위 변수는 현재 게임이 플레이 중인지 확인하는 변수이다.

 

터틀런 만들기2

'start'함수가 이번 회차에 추가된다.

게임을 시작할 때 쓰는 함수이다.

 

 

global

잠시 'global'에 대해서 짚고 가려고 한다.

먼저 위와 같이 'f'라는 함수 안에

'a = 5'라는 값을 짚어넣고 f 함수를 호출한 후

a를 출력시키면

global

'a'가 정의되지 않았다는 오류가 뜬다.

 

global

그떄 'global'을 쓰는데

global을 쓰지 않았을 때 에러가 뜨는 이유는

'a'는 함수 f 안에서만 정의가 되어있기 때문에

어디서나 쓰려면 꼭 'global'을 붙여줘야 한다.

 

 

... 사실 문제가 생겼는데 위 과정이

이해가 되긴 하는데 왜 start함수 안에

playing 앞에 global을 붙였는지 모르겠다.

 

일대일 대응을 시켜보면 'def f' = 'def start'

'global a' = 'global playing'

다른 점이라면 def f의 경우는 

'global a'와 'a=5'가 f 함수 안에 있는 반면

def start의 경우 playing의 경우 독립적으로 

선언되었고, 'global playing'은 start 함수 안에

있다는 점인데... 흠 지금은 생각해도 모르겠다.

 

 

 

 

 

 

 

DAY 17

 

DAY 18

DAY17과 DAY18에 있는 'play'함수인데 바뀐점을 보면

play함수 안에 'score'와 'playing' 변수가 글로벌 지정되어있다.

그리고 빨간 거북이의 이동에 관련한 명령어가 좀 바뀌었는데

20%의 확률로 빨간 거북이의 방향을 플레이어가 아닌 다른곳으로

바뀌게 하는것이다. 왜냐하면 밑에 명령어를 보면 알겠지만

'spped = score + 5' 명령어 때문에 빨간 거북이의 속도는

득점을 할수록 높아지기 때문이다.

 

그래서 난이도 조절겸 플레이어를 쫒아오다가도

갑자기 따른곳으로 새게 만드는것이다.

물론 샛길로 갔다가 다시 돌아온다.

 

 

play 함수 내

아직 play 함수 들여쓰기 안쪽에 있다.

 

빨간 거북이의 속도가 15를 초과할 시 강제로 15로 맞춰준다.

그리고 플레이어와 빨간 거북이 사이의 거리가 12 미만이면

게임을 종료한다. 이 때 단순 종료하는게 아니고

'현재 스코어'와 "Game Over"이라는 메세지를 출력한다.

 

 

DAY 17
DAY 18

이번엔 플레이어와 먹이 사이의 상호작용에

관련된 명령어들이다.

 

먼저 수정된 사항으로는 첫 번째 if문 내에

점수에 관련된 'score = score + 1'가 추가되었고

't.write(score)'명령어를 통하여 화면에 표시한다.

또 게임이 플레이중이면 '타이머'를 작동시켜서

계속 진행되게 한다.

 

추가된 명령어

"Score"과 "Game Over"를 표시해줄

'message'함수이다.

2개의 문자를 표시해줄것 이므로 

인자는 'm1, m2'로 지정해준다.

't.write'는 DAY16에서도 사용했었다.

다시 한번 보면

 

m1 = 문자열

False = 제자리에

center = 가운데정렬

("", 15)) = 글자 크기 15

 

이다.

 

마지막

마지막 부분을 보면

"Turtle Run", "[Space}" 

메세지를 출력시키기 위해

'message' 함수를 출력한것을

확인할 수 있다.

 

결과

 

플레이 영상

 

개인적으로 이번 구조를 완벽히 이해하지 

못한 관계로 포스팅에 적은 설명이 부실하다는

생각이 든다. 다음에 복습할 때 다시 빼먹은 부분이나

틀린 부분이 있으면 수정하도록 해야겠다.

728x90
반응형

댓글


#네이버 애널리틱스 ▼