我一直在用turtle制作一个游戏,并用ture.speed(0(将速度设置为0,虽然这还不够快,但我已经做了一些研究,但我找不到任何用于python 3.9的命令来停用动画或提高龟速。有人能帮我加快比赛速度吗?(我只有python 3.9,所以我不能使用tracer(下面是一个代码示例:
import math
import turtle
char = turtle.Turtle()
char.hideturtle()
char.speed(0)
debug = True
def left():
update(50)
def right():
update(-50)
def update_prep():
update(0)
def update(x_adjust):
char.clear()
char.penup()
char.setx(char.xcor() - x_adjust)
char.pendown()
char_1()
def char_1():
char_start_pos = char.pos()
char.setheading(0)
char.left(180)
char.fillcolor('grey')
char.begin_fill()
char.forward(10)
char.right(90)
char.forward(50)
char.right(90)
char.forward(20)
char.right(90)
char.forward(50)
char.right(90)
char.end_fill()
char_pos = char.pos()
char_head = char.heading()
char.right(180)
tangent(-25, 15, True)
char.setheading(0)
char.left(180)
char.forward(0)
for _ in range(36):
char.forward(1)
char.left(10)
char.setheading(char_head)
char.goto(char_pos)
char.forward(20)
char_pos = char.pos()
char_head = char.heading()
char.left(90)
tangent(15, -25, True)
char.setheading(0)
char.left(180)
char.forward(0)
for _ in range(36):
char.forward(1)
char.left(10)
char.setheading(char_head)
char.goto(char_pos)
char.right(90)
char.forward(50)
char.left(90)
char_pos = char.pos()
char_head = char.heading()
tangent(-25, 15, True)
char.setheading(0)
char.left(0)
char.forward(0)
for _ in range(36):
char.forward(1)
char.left(10)
char.setheading(char_head)
char.goto(char_pos)
char.right(180)
char.forward(20)
char.left(90)
char.right(0)
tangent(15, -25, True)
char.setheading(0)
char.left(0)
char.forward(0)
for _ in range(36):
char.forward(1)
char.left(10)
char.penup()
char.goto(char_start_pos)
char.pendown()
def tangent(tangent_height, tangent_width, custom_heading):
if not custom_heading:
char.setheading(270)
angle = math.atan(tangent_width / tangent_height)
angle = angle * 57.295779513082321578272654463367
char.left(angle)
if debug:
print(angle)
length = tangent_height*tangent_height + tangent_width*tangent_width
length = math.sqrt(length)
char.forward(length)
char_1()
turtle.onkey(left, 'a')
turtle.onkey(right, 'd')
turtle.onkey(update_prep, 'w')
turtle.listen()
turtle.mainloop()
如果/当您发现您确实有tracer
时,它应该会解决您的性能问题:
from math import pi, atan, sqrt, degrees
from turtle import Screen, Turtle
from functools import partial
RADIAN = 180 / pi
def update(x_adjust=0):
char.clear()
char.penup()
char.setx(char.xcor() - x_adjust)
char.pendown()
char_1()
screen.update()
def char_1():
char_start_pos = char.pos()
char.setheading(180)
char.fillcolor('grey')
char.begin_fill()
char.forward(10)
char.right(90)
char.forward(50)
char.right(90)
char.forward(20)
char.right(90)
char.forward(50)
char.right(90)
char.end_fill()
char_pos = char.pos()
char_head = char.heading()
char.right(180)
tangent(-25, 15, True)
char.setheading(180)
char.circle(RADIAN / 10)
char.setheading(char_head)
char.goto(char_pos)
char.forward(20)
char_pos = char.pos()
char.left(90)
tangent(15, -25, True)
char.setheading(180)
char.circle(RADIAN / 10)
char.setheading(char_head)
char.goto(char_pos)
char.right(90)
char.forward(50)
char.left(90)
char_pos = char.pos()
tangent(-25, 15, True)
char.setheading(0)
char.circle(RADIAN / 10)
char.setheading(char_head)
char.goto(char_pos)
char.right(180)
char.forward(20)
char.left(90)
char.right(0)
tangent(15, -25, True)
char.setheading(0)
char.circle(RADIAN / 10)
char.penup()
char.goto(char_start_pos)
char.pendown()
def tangent(tangent_height, tangent_width, custom_heading):
if not custom_heading:
char.setheading(270)
angle = atan(tangent_width / tangent_height)
char.left(degrees(angle))
length = sqrt(tangent_height * tangent_height + tangent_width * tangent_width)
char.forward(length)
screen = Screen()
screen.tracer(False)
char = Turtle()
char.hideturtle()
update()
screen.onkey(partial(update, 50), 'a')
screen.onkey(partial(update, -50), 'd')
screen.listen()
screen.mainloop()