Python龟速度

时间:2016-05-12 15:14:22

标签: python turtle-graphics

我的朋友和我正在使用海龟进行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()

4 个答案:

答案 0 :(得分:4)

你想在这里发生什么?

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

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

据我所知,你可以暂时加快海龟的活动速度,例如: left()但要让海龟以的速度离开,以便从中受益的操作,例如: motion()

我建议您撤出所有speed()来电并重新考虑,最好使用字符串参数&#34;最慢&#34;,&#34;慢&#34;,&#34 ;正常&#34;,&#34;快速&#34; &安培; &#34;最快&#34;帮助记录您正在做的事情并避免超出范围。

答案 1 :(得分:0)

如果它像改变海龟速度一样简单:

turtle.speed(number)

龟是海龟的名字,例如。 TestTurtle

号码可以是110,也必须是整数。您不能将4.7作为数字。

将其设置为10以上将导致速度无效。

答案 2 :(得分:0)

将乌龟速度设置为10以上没有任何意义。 如果不使用动画,则将速度设置为0:speed(0)。否则请使用speed(10)。

答案 3 :(得分:0)

问题是—— t1.forward(1) t2.forward(1) 这是瓶颈。如果你增加这些值,那么它会加速,但你会错过碰撞检查。