본문 바로가기

Studying/Python

16. miniProject(7) - 거북이 경주 게임 (feat. turtle)

이번엔 turtle graphics를 이용해서 6개의 거북이를 만들어 경주 게임을 만들어보자. 

 

turtle graphicsScreen을 사욯하여 창을 띄운 후, turtle 거북이 모양으로 색을 각각 다르게 하여 6개를 화면에 띄운다. 

 

그 후 , 어떤 색의 거북이가 우승할 지 입력을 받아 이를 나중 결과와 비교할 것이다. 

 

각각의 거북이들은 랜덤의 속도로 이동할 것이며 화면 기준 왼쪽에서 출발하고 오른쪽으로 달린다. 

 

오른쪽에 도달하면 게임이 끝나고 결과창을 콘솔에 출력하며 마무리 할 것이다. 

 

그렇다면 코드를 작성해보자. 

 


 

먼저 기본세팅부터 해보자. 

 

turtle 기본 세팅

먼저 turtle graphics에서 TurtleScreenimport 한다. 

 

screenScreen을 할당하고 setup 메소드를 사용하여 가로 1000, 세로 500 사이즈의 screen을 만든다. 

 

어떤 거북이가 우승할 지 예측을 입력받을 변수로 user_bet을 설정하고, 색을 입력할 수 있도록 screen.textinputprompt를 사용한다. 

 

거북이의 색으로 사용될 listcolors를 만들고 거북이들의 시작위치를 화면 왼쪽 끝, 그리고 높이는 적당한 간격으로 띄워서 y_positions로 설정한다. 

 

그리고 거북이를 각각 만들어 하나씩 담아둘 빈 listall_turtle를 만든다. 

 

for문을 통해 turtle 생성

 

이제 6마리의 거북이를 만들어보자. 

 

새로 만들 거북이를 new_turtle로, shape은 "turtle"로 설정하여 생성한다. 

 

거북이가 새로 생성되는 위치는 화면의 정중앙인 (0, 0)이다.

 

따라서 이를 y_position의 값으로 penup 상태로 goto메소드를 사용한다.

 

경주 준비 위치로 이동하는 과정까지 끝나면 그 거북이를 빈 list였던 all_turtleappend 한다. 

 

이 과정을 for 문으로 6번 반복한다.

 

그리고 user_bet 변수에 input 되면 경기가 시작될 수 있도록 if 문을 사용하여 is_race_onTrue 값을 준다. 

 

경주 진행 내용

 

그렇다면 while문으로 게임을 시작하자. 

 

all_turtle에 추가된 각가의 turtle은 x 좌표가 480을 초과한다면, 즉 왼쪽 끝에서 출발하여 오른쪽 끝을 넘어갈 경우 is_race_onfalse로 전환한다.

 

가장 먼저 도달한 turtle의 색은 pencolor를 통해 winning_color로 할당하고 이를 위에서 정한 user_bet과 비교한다. 

 

가장 중요한 거북이의 이동속도는 0부터 20까지의 random한 숫자만큼 이동하도록 rand_distance로 받고, forward 시킨다. 

 

user_bet에 color input 화면
6개의 turtle이 random 한 속도로 경주하는 화면