python - 乌龟没有反应
问题描述
我一直在尝试在 3 个海龟光标之间制作一个赛车游戏,并且我为每个光标创建了一个函数,可以向前移动 5 个像素,直到它们到达画布的顶部。然而,跑的时候,乌龟一直闲着,我不知道为什么。
import turtle
import random
Bank_account = 0
class turtle_s:
def __init__(self, color):
self.color = color
self.turt = turtle.Pen()
self.turt.shape('turtle')
self.turt.color(color)
red_turtle = turtle_s('red')
blue_turtle = turtle_s('blue')
yellow_turtle = turtle_s('yellow')
turtle_list = [red_turtle, blue_turtle, yellow_turtle]
## Turtle Game Setup
def turtle_stuff():
turtle.screensize(canvwidth=500, canvheight=500)
turtle.bgcolor('black')
for color_turtle in turtle_list:
if turtle_list.index(color_turtle) % 3 == 0:
color_turtle.turt.penup()
color_turtle.turt.setpos(-300, -250)
color_turtle.turt.left(90)
elif turtle_list.index(color_turtle) % 3 == 1:
color_turtle.turt.penup()
color_turtle.turt.setpos(300, -250)
color_turtle.turt.left(90)
else:
color_turtle.turt.penup()
color_turtle.turt.setpos(0, -250)
color_turtle.turt.left(90)
def turtle_move():
for color_turtle in turtle_list:
color_turtle.turt.speed(random.randint(3, 5))
while color_turtle.turt.ycor() != 250:
color_turtle.turt.forward(5)
turtle_stuff()
turtle_move()
解决方案
当我运行您的代码时,海龟不会像您描述的那样保持空闲状态。但不幸的是,他们所做的是完全轮流进行比赛,而不是同时进行。这与您的嵌套循环的结构有关turtle_move()
。让我们重新编写代码以简化它,修复上述问题,并解决一些样式问题:
from turtle import Screen, Turtle
from random import randint
class racing_turtle:
def __init__(self, color):
self.turtle = Turtle()
self.turtle.shape('turtle')
self.turtle.color(color)
racer_list = [racing_turtle('red'), racing_turtle('blue'), racing_turtle('green')]
def racers_setup():
for offset, racer in enumerate(racer_list, -1):
racer.turtle.penup()
racer.turtle.setheading(90)
racer.turtle.setpos(offset * 300, -250)
def racers_move():
while True:
for racer in racer_list:
distance = randint(2, 6)
racer.turtle.forward(distance)
if racer.turtle.ycor() > 250:
racer.turtle.pencolor('gold')
break
else: # no break
continue
break
screen = Screen()
screen.screensize(canvwidth=500, canvheight=500)
screen.bgcolor('black')
racers_setup()
racers_move()
screen.mainloop()
推荐阅读
- javascript - 使用 innerHTML 将文本框插入绝对定位的 div 会导致 Chrome Mobile 出现奇怪的错误
- angular - 角度存储 jwt 的位置
- python - TypeError:稀疏矩阵长度不明确;使用 getnnz() 或 shape[0]
- php - 有什么方法可以为 wordpress 中的自定义数据库表创建自定义 REST API
- sql - 在 MicroStrategy 中滚动 12 个月的 Salesforce
- angularjs - 为什么我在尝试访问公共 API 时会在 CORS 上被阻止?
- numpy - 读写numpy嵌套数组
- python - 从 0 和 1 的字符串创建一组字符串,其中只有两个字符被更改(python)
- python - 使 pandas df 索引连续
- php - password_verify - 密码与哈希不匹配