嗨,我是Python的新手,而新手是堆栈交换。我正在尝试使用Turtle创建一个太空入侵者游戏,但是在所有外星人入侵之前,我的枪无法射击。我认为我遇到了这个问题,因为入侵功能和射击功能不是同时运行的,或者乌龟不允许一次乌龟一次移动。
我试图使用螺纹并行运行两个功能,但是它无法解决问题,直到入侵完成后,枪才能开火。任何帮助将不胜感激!(我是Python的新手,所以我为代码的混乱而无意
import turtle
import random
import threading
from threading import Thread
screen = turtle.Screen()
screen.setup(400, 500)
screen.bgpic("/Users/benmartinez/Desktop/Space_Invaders_BG.gif")
turtle.right(90)
turtle.pu()
turtle.forward(200)
turtle.pd()
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(500)
turtle.right(90)
turtle.forward(400)
turtle.right(90)
turtle.forward(500)
turtle.right(90)
turtle.forward(200)
turtle.right(180)
turtle.forward(20)
turtle.left(90)
turtle.circle(20, 180)
turtle.left(90)
turtle.forward(20)
turtle.left(90)
homex = turtle.xcor()
homey = turtle.ycor()
def shoot():
turtle.color('red')
turtle.showturtle()
turtle.pu()
turtle.onscreenclick(turtle.goto)
turtle.goto(homex, homey)
turtle.onclick(shoot())
def invaders():
invader_initial_position = random.randint(-200, 200)
i = turtle.Turtle()
i.shape('triangle')
i.color('green')
i.pu()
i.hideturtle()
i.goto(invader_initial_position, 300)
i.showturtle()
i.right(90)
i.speed(1)
i.forward(500)
def invasion():
x = 0
while x < 10:
invaders()
x += 1
#if __name__ == '__main__':
Thread(target = invasion()).start()
Thread(target = shoot()).start()
Thread(target = invasion())
应该是 Thread(target = invasion)
?否则,您会立即调用该函数,而不是传递要通过线程调用的函数。