Turtle Game 8 - 다양한 액션 추가하기
페이지정보
글쓴이 관리자 조회 42,117 조회 날짜 19-06-21 16:40 / U:19-06-22 03:43내용
Turtle Game 8 - 다양한 액션 추가하기
앞선 강좌를 통해 거북이가 벌레를 잡아먹고, 점수를 올리는 간단한 게임을 만들었었다.
추가적으로 벌레를 먹은 뒤에 다른 기능들을 구현해보도록 하자.
1. 점수에 따라 거북이의 크기와 색상 변경하기
현재 거북이의 크기는 2로 고정되어 있다. 점수에 따라 거북이의 크기를 변하게 할 수 있고, 거북이의 색상을 변하게 할 수 있다.
거북이의 크기에 따라 색상을 다르게 해주기 위해 색상 리스트를 만든다.
tcolors = ['#95B9D3', '#77ADD3', '#4497D2', '#2A84C5', '#1A5D8E', '#CE8F91','#CB4E53','#B4252A','#8B1317','#780409'] |
점수에 따라 거북이의 크기를 크게하기 위해 크기와 색상을 변수로 설정한다.
#거북이 크기 값 turtlesize = 1 #거북이의 크기 p.turtlesize(turtlesize,turtlesize)
#거북이의 초기 색상 p.color(tcolors[0]) |
점수에 따라 거북이의 크기를 변경해주고, 색상을 변경하는 코드를 작성한다.
1) 점수를 10으로 나누어서 나머지가 0일때, 즉 10의 배수일 때마다 거북이의 크기를 1 증가시킨다.
2) 거북이의 크기가 무한대로 커지는 것을 방지하기 위해 크기가 30을 초과하면 30으로 고정시킨다.
3) 거북이의 색상을 10단계로 나누어 두었다. 점수를 나누어서 그 몫이 10보다 작으면, 몫에 해당하는 값을 색상 리스트의 인덱스로 사용하여 색상을 변경해준다.
score += 1
if(score % 10 == 0): k = score // 10 |
거북이의 크기가 점점 커지면 벌레를 그 만큼 잘 잡을 수 있어야 한다. 따라서 거북이와 벌레의 충돌 거리 부분을 거북이의 크기에 비례해서 거리도 커지게 만든다.
충돌 확인 함수에 거리값을 변경해주는 코드를 추가한다.
#충돌 확인 함수 def isCollision(t1, t2): #수학식에서 두 점 사이의 거리 d = math.sqrt( math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor() - t2.ycor(), 2)) coll = turtlesize * 10 if d < coll: return True else: return False |
위의 코드를 적용한 전체코드는 아래와 같다.
import turtle as t
#스크린 객체 생성
#울타리 그리기
for x in range(4):
for count in range(maxBugs):
#거북이의 움직임 속도 #거북이 점수
def turnright():
def increasespeed():
def decreasespeed():
#점수 입력 함수
if isCollision(p, bugs[count]): |
실행 결과
# 점수에 따라 거북이의 색상과 크기가 변경되는 것을 확인할 수 있다.
# p.penup() 주석처리한 것을 해제한다.
2. 충돌시 소리나게 하기
파이썬에서 소리를 재생하는 모듈은 다양하다. 우리는 playsound 모듈을 사용한다.
1) playsound 설치
명령프롬프트(command prompt)를 실행하여 playsound를 설치한다.
2) 사운드 재생 함수 생성
playsound()의 두번째 인자는 백그라운드로 실행할 것인가 여부를 결정한다. False가 백그라운드.
사운드 파일은 소유하고 있는 어떤 것도 가능하며, 마땅한 사운드 파일이 없으면 다운 받아서 사용해도 된다.
사운드의 위치를 "./sound/bubble003.wav"로 했기 때문에 프로젝트 폴더의 하위에 sound 폴더를 만들어서 그 곳에 사운드 파일을 넣으면 된다.
def soundCollision(): playsound("./sound/bubble003.wav", False) |
3) 충돌시 사운드 함수 실행
if isCollision(p, bugs[count]): soundCollision() #벌레가 먹히면 색상, 모양 변경후 다른 곳으로 이동 bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300)) bugs[count].right(random.randint(0,360)) s = random.randint(0,5) c = random.randint(0,6) bugs[count].shape(shapes[s]) bugs[count].color(colors[c]) #벌레를 먹었을 때, 점수 1 추가 score += 1 #점수에 따라 거북이 크기 커지게 하기 if(score % 10 == 0): turtlesize += 1 if turtlesize > 30: turtlesize = 30 p.turtlesize(turtlesize,turtlesize) k = score // 10 if k < 10: p.color(tcolors[k]) #점수를 표시 setScore(score) |
사운드 기능 추가한 전체 코드
import turtle as t
#스크린 객체 생성
#울타리 그리기
for x in range(4):
for count in range(maxBugs):
#거북이의 움직임 속도 #거북이 점수
def turnright():
def increasespeed():
def decreasespeed():
#점수 입력 함수
if isCollision(p, bugs[count]): |
각자 아이디어를 내어서 다른 기능들로 추가하면서 게임을 즐겨보자~~~~
Turtle Game 8 - 다양한 액션 추가하기 끝
첨부파일
- bubble003.wav (48.0K) 53 다운로드 | DATE : 1561159411
댓글목록
댓글이 없습니다