공을 원점으로 이동시키고 반복문 횟수를 5번으로 제한걸고 싶습니다
조회수 737회
import turtle
screen=turtle.Screen()
image1="D:\\ball.gif"
screen.addshape(image1)
ball=turtle.Turtle()
ball.shape(image1)
ball.pensize(0)
ball.penup()
ball.goto(0, 0)
ball.left(90)
def go_left():
b1 = 0
ball.left(45)
ball.forward(220)
def go_up():
b1= 1
ball.forward(190)
def go_right():
b1 = 2
ball.right(45)
ball.forward(220)
screen.onkeypress(go_left,"Left")
screen.onkeypress(go_right,"Right")
screen.onkeypress(go_up,"Up")
screen.listen()
실행시키면 공이 이동한 다음 다시 원점으로 돌아오지 않고 이동한 그 위치에서 움직이는데 어떡하면 원점에서 다시 시작할 수 있을까요? 그리고 게임 횟수가 5번이 되면 멈추고 싶은데 반복문 조건을 어떻게 걸어야 할지 모르겠습니다 도와주세요!
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
현 시점에서 공은 당연히 원점으로 안 돌아옵니다. 소스에서 "원점으로 돌아간다"에 해당하는 정의가 없거든요.
일단 원하시는 것을 하자면 아마 대충 이런 함수를 추가로 정의를 하신 다음에:
def return_to_origin() : ball.goto(0, 0)
이걸
go_left()
,go_up()
등의 함수 정의에서 적당히 이용하시면 될겁니다. 예를 들어 사용자가 공을 움직이고 나서 5초 안에 다시 또 움직여야 한다고 생각해 보자면:# 테스트 안해봤습니다. 아이디어만 참고하세요. import time # "사용자가 마지막으로 공을 움직인 순간". 기본값으로 프로그램 실행 시점을 찍어둔다. last_time_user_moved = time.time() # 공을 왼쪽으로 움직이고 싶다면... def go_left(): # '사용자가 마지막으로 공을 움직인 순간'으로부터 5초가 지나지 않아야 하고 now = time.time() if now - last_time_user_moved < 5 : b1 = 0 ball.left(45) ball.forward(220) last_time_user_moved = now # 공의 움직임을 끝낸 뒤에 '사용자가 공을 마지막으로 움직인 순간'을 고쳐주는 것 잊지말기 # 5초가 지났다면 얄짤없이 원점으로 돌려보낸다. else : return_to_origin()
실행 횟수가 뭔지는 모르겠지만 그것도 대충 이런 플래그 변수 아이디어로 처리하실 수 있을 겁니다. 행운을 빕니다.
댓글 입력