蟒蛇龟速

新手上路,请多包涵

我和我的朋友正在使用海龟开发 Python 游戏。我们的问题在定义海龟的部分。我们正在尝试加快每只乌龟的速度,但当我们这样做时,默认速度运行。为什么会出现这个问题?

 import turtle

turtle.setup(1000,1000)
wn=turtle.Screen()
wn.title("Snake Game!")

#defines first turtle

t1=turtle.Turtle()
t1.pensize(2)
t1.speed(3)
t1.penup()
t1.goto(0,100)
t1.color("blue", "blue")
t1.pendown()

#defines second turtle

t2=turtle.Turtle()
t2.pensize(2)
t2.speed(3)
t2.penup()
t2.goto(0,-100)
t2.color("red", "red")
t2.pendown()

#defines outline

ol=turtle.Turtle()
ol.pensize(2)
ol.speed(7)
ol.penup()
ol.goto(450,0)
ol.color("black", "black")
ol.pendown()

ol.left(90)
ol.forward(300)
ol.left(90)
ol.forward(900)
ol.left(90)
ol.forward(600)
ol.left(90)
ol.forward(900)
ol.left(90)
ol.forward(300)
ol.hideturtle()

#defines score

score1=int(2)
score2=int(2)

def motion():
    global move, score1, score2
    move = True
    path1 = []
    path2 = []

#prints score

    print("Player 1's score is", str(score1)+"!")
    print("Player 2's score is", str(score2)+"!")

#defines motion

    while move == True:
        global pos1x, pos2x

        t1.forward(1)
        t2.forward(1)

        pos1x = int(t1.xcor())
        pos1y = int(t1.ycor())
        t1xy = (pos1x, pos1y)

        pos2x=int(t2.xcor())
        pos2y=int(t2.ycor())
        t2xy=(pos2x,pos2y)

        path1.append(t1xy)
        path2.append(t2xy)

#calculates score1

        if t1xy in path2:
            score1=int(score1-1)
            print("")
            print("Player 1's score is", str(score1)+"!")
            print("Player 2's score is", str(score2)+"!")
            t1.clear()
            path1 = []
            t2.clear()
            path2 = []
            t1.penup()
            t1.goto(0,100)
            t1.pendown()
            t2.penup()
            t2.goto(0,-100)
            t2.pendown()
            move = False

        if score1==0:
            print("Player 2 wins!")
            exit()
        else:
            move==True

#calculates score2

        if t2xy in path1:
            score2=int(score2-1)
            print("")
            print("Player 1's score is", str(score1)+"!")
            print("Player 2's score is", str(score2)+"!")
            t2.clear()
            path2 = []
            t1.clear()
            path1 = []
            t2.penup()
            t2.goto(0,-100)
            t2.pendown()
            t1.penup()
            t1.goto(0,100)
            t1.pendown()
            move = False

        if score2==0:
           print("Player 1 wins!")
           exit()
        else:
            move==True

#borders

        if pos1x > 450:
            t1.left(135)

        if pos2x > 450:
            t2.left(135)

        if pos1x < -450:
            t1.left(135)

        if pos2x < -450:
            t2.left(135)

        if pos1y > 300:
            t1.left(135)

        if pos2y > 300:
            t2.left(135)

        if pos1y < -300:
            t1.left(135)

        if pos2y < -300:
            t2.left(135)

#defines controls

def left():
    t1.speed(500)
    t1.left(45)
    t1.speed(3)

def right():
    t1.speed(500)
    t1.right(45)
    t1.speed(3)

def backwards():
    t1.left(180)

def stop():
    global move
    move = False
    t1.forward(0)
    t2.forward(0)

def left2():
    t2.speed(500)
    t2.left(45)
    t2.speed(3)

def right2():
    t2.speed(500)
    t2.right(45)
    t2.speed(3)

def backwards2():
    t2.left(180)

def motion2():

    move = True
    path1 = []
    path2 = []

#onkeys

wn.onkey(left2, "Left")
wn.onkey(right2, "Right")
wn.onkey(backwards2, "Down")

wn.onkey(left, "a")
wn.onkey(right, "d")
wn.onkey(backwards, "s")

wn.onkey(motion, "t")
wn.onkey(stop, "y")
wn.onkey(motion2, "p")

wn.listen()
wn.mainloop()

原文由 David Bender 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 319
1 个回答

你想在这里发生什么?

 def left():
    t1.speed(500)
    t1.left(45)
    t1.speed(3)

将速度设置为 10(快)以上会将其设置为 0(最快)。一旦操作完成,您就将其设置为 3(慢)。

据我所知,您暂时加快了海龟的速度,而这些操作并没有从中得到太多好处,例如 left() 但是让海龟保持 低速 进行应该从中受益的操作,例如 motion()

我建议您取出所有 speed() 调用并重新考虑它们,最好使用字符串参数“最慢”、“慢”、“正常”、“快速”和“最快”来帮助记录您的内容做并避免超出范围。

原文由 cdlane 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题