거북이를 사용하여 우주 침략자 게임을 만들려고하고 있으며 총알을 화면 위로 이동시키기 위해 매 0.5 초마다 y 좌표를 업데이트하려고합니다. while 루프와 time.sleep() 함수를 사용하여이 작업을 시도했지만 총알을 발사하려고 할 때마다 프로그램이 중단됩니다. 이 일을 막을 수있는 방법이 있습니까? 아니면 작동하지 않는 이유는 무엇입니까? 내 프로그램을 중단시키지 않는 똑같이 효과적인 방법이 있습니까?while 루프 내의 time.sleep 함수가 프로그램, 솔루션 또는 대체 방법을 계속 충돌합니까?
import turtle
import time
userx = 0
x = 0
y = -300
enemies = [(300,50, "left"), (400,50, "left"), (350, -50, "right")]
bullets = []
gameover = False
def frame():
pass
ship = turtle.Turtle()
ship.pu()
ship.ht()
ship.setpos(userx, -300)
ship.pd()
ship.circle(5)
bullet = turtle.Turtle()
bullet.pu()
bullet.ht()
bullet.setpos(x, y)
bullet.pd()
bullet.circle(2)
def key_left():
global userx
pass
userx += -10
print(userx)
def key_right():
global userx
pass
userx += 10
print(userx)
def key_space():
pass # your code here
global x
global y
global bullets
x = userx
while y <= 300:
time.sleep(0.5)
y += 4
else: y = 0
bullets += (x,y)
def physics():
global bullets
global enemies
pass
def ai():
global enemies
global gameover
pass
def reset():
global enemies
global bullets
global userx
global gameover
pass
def main():
turtle.tracer(0,0)
turtle.hideturtle()
turtle.onkey(key_left, "Left")
turtle.onkey(key_right, "Right")
turtle.onkey(key_space, "space")
turtle.listen()
reset()
while not gameover:
turtle.clear()
physics()
ai()
frame()
turtle.update()
time.sleep(0.05)
main()
'통과'로 인해 충돌이 발생하지 않았습니까? –
우리는이 코드 스 니펫만으로는 도움이되지 않습니다. 더 많은 컨텍스트가 필요합니다. 또한'time.sleep'을 사용하지 말고 기본 tkinter 표시 루프를 사용하십시오 (예 : ['after'] (http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.after-method)) . –
@ F.Leone, 지금 막 확인하고 문제가 지속되는 패스가 아닙니다. – Billiam