모두의 파이썬 '18번 째' 시간!
오늘은 저번 시간에 이어
'터틀런 만들기2'이다.
개요
오늘은 저번 시간에 이어 조금 더 게임답게
완성을 해보려고 한다.
스크린샷에 보이는 것 처럼
타이틀도 넣고 스페이스바를 눌러서
게임을 시작할 수 있도록 하고
화면에 점수도 표시되게 할 것이다.
그리고 먹이를 먹을 때 마다 빨간 거북이의
이동속도가 더욱 빨라지는 것 까지가
오늘 18일차의 과제다.
본론
오늘 내용은 저번 파일을 보완해서 만든 것이다.
책에서는 수정하다가 헷갈려서 오히려 망칠 수 있으므로
그냥 새로 하라고 했지만 귀찮아서 그렇게 안 했다.
그래서 오늘 내용과 17일차 내용을 구별하기 위해
주석 말머리에 DAY18을 'D-18'이라고 적어놨다.
먼저 점수를 만들기 위해 'score = 0'라는 변수를 선언한다.
그리고 'playing= False'라는 변수도 만든다.
위 변수는 현재 게임이 플레이 중인지 확인하는 변수이다.
'start'함수가 이번 회차에 추가된다.
게임을 시작할 때 쓰는 함수이다.
잠시 'global'에 대해서 짚고 가려고 한다.
먼저 위와 같이 'f'라는 함수 안에
'a = 5'라는 값을 짚어넣고 f 함수를 호출한 후
a를 출력시키면
'a'가 정의되지 않았다는 오류가 뜬다.
그떄 '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 함수 안에
있다는 점인데... 흠 지금은 생각해도 모르겠다.
DAY17과 DAY18에 있는 'play'함수인데 바뀐점을 보면
play함수 안에 'score'와 'playing' 변수가 글로벌 지정되어있다.
그리고 빨간 거북이의 이동에 관련한 명령어가 좀 바뀌었는데
20%의 확률로 빨간 거북이의 방향을 플레이어가 아닌 다른곳으로
바뀌게 하는것이다. 왜냐하면 밑에 명령어를 보면 알겠지만
'spped = score + 5' 명령어 때문에 빨간 거북이의 속도는
득점을 할수록 높아지기 때문이다.
그래서 난이도 조절겸 플레이어를 쫒아오다가도
갑자기 따른곳으로 새게 만드는것이다.
물론 샛길로 갔다가 다시 돌아온다.
아직 play 함수 들여쓰기 안쪽에 있다.
빨간 거북이의 속도가 15를 초과할 시 강제로 15로 맞춰준다.
그리고 플레이어와 빨간 거북이 사이의 거리가 12 미만이면
게임을 종료한다. 이 때 단순 종료하는게 아니고
'현재 스코어'와 "Game Over"이라는 메세지를 출력한다.
이번엔 플레이어와 먹이 사이의 상호작용에
관련된 명령어들이다.
먼저 수정된 사항으로는 첫 번째 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' 함수를 출력한것을
확인할 수 있다.
결과
개인적으로 이번 구조를 완벽히 이해하지
못한 관계로 포스팅에 적은 설명이 부실하다는
생각이 든다. 다음에 복습할 때 다시 빼먹은 부분이나
틀린 부분이 있으면 수정하도록 해야겠다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
모두의 파이썬 - DAY 20[完] (파이썬으로 수학 문제 풀기 2) (8) | 2021.12.17 |
---|---|
모두의 파이썬 - DAY 19 ( 파이썬으로 수학 문제 풀기 1) (2) | 2021.12.15 |
모두의 파이썬 - DAY 17 (터틀런 만들기1) (4) | 2021.12.11 |
모두의 파이썬 - DAY 16 (거북이 대포 게임 만들기) (6) | 2021.12.02 |
모두의 파이썬 - DAY 15 (타자 게임 만들기) (0) | 2021.11.27 |
댓글