Python龟赛跑

2024-05-21 04:10:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个任务,我必须和海龟模块进行一场“海龟赛跑”。我需要实现一个winner和winner的输出以及一个重启函数

我的代码:

import turtle
import random

turtles = []

def setup():
    global turtles
    startline = -480 
    turtle1 = turtle.Turtle()
    turtle1.color("red")
    turtle1.shape("turtle")
    turtle1.penup()
    turtle1.setpos(startline,-40)
    turtle1.pendown()
    turtles.append(turtle1)

    turtle2 = turtle.Turtle()
    turtle2.color("green")
    turtle2.shape("turtle")
    turtle2.penup()
    turtle2.setpos(startline,-20)
    turtle2.pendown()
    turtles.append(turtle2)

    turtle3 = turtle.Turtle()
    turtle3.color("green")
    turtle3.shape("turtle")
    turtle3.penup()
    turtle3.setpos(startline,-20)
    turtle3.pendown()
    turtles.append(turtle3)

    turtle4 = turtle.Turtle()
    turtle4.color("green")
    turtle4.shape("turtle")
    turtle4.penup()
    turtle4.setpos(startline,-20)
    turtle4.pendown()
    turtles.append(turtle4)

def race():
    global turtles
    winner = False
    while not winner:
        for singleTurtle in turtles:
            singleTurtle.forward(random.randint(0,4))
            print(singleTurtle.fillcolor(),singleTurtle._position)

finishline = 200
stampsize = 20
squaresize = 15

for i in range(10):
    turtles.setpos(finishline, (150 - (i * squaresize * 2)))
    turtles.stamp()

for j in range(10):
    turtles.setpos(finishline + squaresize, ((150 - squaresize) - (j * squaresize * 2)))

turtles.hideturtle()

setup()
race()

turtles.mainloop()

现在,我正挣扎在终点线上,请你们中的一位给我一些支持,我错过了什么或者我做错了什么


Tags: colorshapeturtlewinnersetposturtle2pendownpenup
1条回答
网友
1楼 · 发布于 2024-05-21 04:10:19

即使列表仅包含Turtle对象,也不能对list对象调用Turtle对象方法

相反,使用for循环在turtles列表上循环,并分别对列表的每个元素执行命令

因此,改变这一部分:

for i in range(10):
    turtles.setpos(finishline, (150 - (i * squaresize * 2)))
    turtles.stamp()

for j in range(10):
    turtles.setpos(finishline + squaresize, ((150 - squaresize) - (j * squaresize * 2)))

turtles.hideturtle()

为此:

for i in range(10):
    for turtle in turtles:
        turt.setpos(finishline, (150 - (i * squaresize * 2)))
        turt.stamp()

for j in range(10):
    for turt in turtles:
        turt.setpos(finishline + squaresize, ((150 - squaresize) - (j * squaresize * 2)))

for turt in turtles:
    turt.hideturtle()

总之:

import turtle
import random

turtles = []

def setup():
    global turtles
    startline = -480 
    turtle1 = turtle.Turtle()
    turtle1.color("red")
    turtle1.shape("turtle")
    turtle1.penup()
    turtle1.setpos(startline,-40)
    turtle1.pendown()
    turtles.append(turtle1)

    turtle2 = turtle.Turtle()
    turtle2.color("green")
    turtle2.shape("turtle")
    turtle2.penup()
    turtle2.setpos(startline,-20)
    turtle2.pendown()
    turtles.append(turtle2)

    turtle3 = turtle.Turtle()
    turtle3.color("green")
    turtle3.shape("turtle")
    turtle3.penup()
    turtle3.setpos(startline,-20)
    turtle3.pendown()
    turtles.append(turtle3)

    turtle4 = turtle.Turtle()
    turtle4.color("green")
    turtle4.shape("turtle")
    turtle4.penup()
    turtle4.setpos(startline,-20)
    turtle4.pendown()
    turtles.append(turtle4)

def race():
    global turtles
    winner = False
    while not winner:
        for singleTurtle in turtles:
            singleTurtle.forward(random.randint(0,4))
            print(singleTurtle.fillcolor(),singleTurtle._position)

finishline = 200
stampsize = 20
squaresize = 15

for i in range(10):
    for turtle in turtles:
        turt.setpos(finishline, (150 - (i * squaresize * 2)))
        turt.stamp()

for j in range(10):
    for turt in turtles:
        turt.setpos(finishline + squaresize, ((150 - squaresize) - (j * squaresize * 2)))

for turt in turtles:
    turt.hideturtle()

setup()
race()

turtle.mainloop()

相关问题 更多 >