使用螺纹和/或多处理立即移动多个海龟



嗨,我是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)?否则,您会立即调用该函数,而不是传递要通过线程调用的函数。

最新更新