蟒龟速度 [英] Python Turtle Speed
问题描述
我和我的朋友正在使用海龟开发 Python 游戏.我们的问题在于它定义海龟的部分.我们试图加快每只海龟的速度,但是当我们这样做时,默认速度会运行.为什么会出现这个问题?
My friend and I are working on a Python Game using turtles. Our issue is in the section where it defines the turtles. We are trying to speed each turtle up, but when we do, the default speed runs. Why is this issue occurring?
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()
推荐答案
您希望在这里发生什么?
What do you want to happen here?
def left():
t1.speed(500)
t1.left(45)
t1.speed(3)
将速度设置为 10(快)以上将其设置为 0(最快).并且您在操作完成后立即将其设置为 3(慢).
Setting the speed above 10 (fast) sets it to 0 (fastest). And you're setting it to 3 (slow) as soon as the operation is done.
据我所知,您暂时加快了海龟在没有得到太多收益的操作上的速度,例如left()
但让海龟以慢速度进行应该从中受益的操作,例如motion()
As far as I can tell, you temporarily speed up the turtles on operations that don't get much out of it, e.g. left()
but leave the turtles in slow speed for operations that should benefit from it, e.g. motion()
我建议您取出所有 speed()
调用并重新考虑它们,最好使用字符串参数slowest"、slow"、normal"、fast" &最快"有助于记录您正在做的事情并避免超出范围.
I'd suggest you pull out all your speed()
calls and rethink them, preferably using the string arguments "slowest", "slow", "normal", "fast" & "fastest" to help document what you're doing and avoid going out of range.
这篇关于蟒龟速度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!