如何在 python 乌龟中获得不同的颜色
How to get different colors in python turtle
你好,我正在写一个 python 乌龟文件,其中一个函数将 return 一种随机颜色(我可以选择任意三种),然后一个函数将在屏幕上的任意位置绘制一张脸.它调用函数绘制人脸 5 次,每次选择不同的颜色。我什么都有,它打印了一张脸,但它只会以一种颜色打印,我不确定如何让它每次都打印不同的颜色。
这是我的代码:
import turtle
import random
window = turtle.Screen()
sam = turtle.Turtle()
sam.pensize(3)
def getColor():
color = random.randint(1,3)
if color == 1:
sam.fillcolor("pink")
return "Color: Pink"
elif color == 2:
sam.fillcolor("lightblue")
return "Color: Light Blue"
else:
sam.fillcolor("purple")
return "Color: Purple"
def drawFace(x,y):
move = random.randint(1,2)
if move == 1:
sam.penup()
sam.left(x)
sam.forward(y)
sam.pendown()
else:
sam.penup()
sam.right(x)
sam.forward(y)
sam.pendown()
sam.begin_fill()
sam.right(90)
sam.forward(10)
sam.left(40)
sam.forward(30)
sam.left(50)
sam.forward(90)
sam.left(60)
sam.forward(20)
sam.left(30)
sam.forward(10)
sam.left(90)
sam.forward(118)
sam.end_fill()
sam.penup()
sam.right(90)
sam.forward(50)
sam.right(90)
sam.forward(40)
sam.pendown()
sam.begin_fill()
sides = 4
while sides > 0:
sam.forward(20)
sam.right(90)
sides = sides - 1
sam.end_fill()
sam.penup()
sam.forward(60)
sam.right(90)
sam.pendown()
sam.begin_fill()
sides = 4
while sides > 0:
sam.forward(20)
sam.right(90)
sides = sides - 1
sam.end_fill()
print(getColor())
drawFace(40,50)
drawFace(90,100)
drawFace(30,200)
drawFace(280,50)
drawFace(90,100)
谢谢
getColor()
仅在程序开始时被调用一次。在绘制每张脸之前,您需要调用 getColor()
,如下所示:
print(getColor())
drawFace(40,50)
print(getColor())
drawFace(90,100)
print(getColor())
drawFace(30,200)
print(getColor())
drawFace(280,50)
print(getColor())
drawFace(90,100)
如果您在循环中编写代码,您的代码会更简洁一些:
points = [(40,50), (90,100), (30,200), (280,50), (90,100)]
for x,y in points:
print(getColor())
drawFace(x, y)
或者您可以从您的 drawFace()
拨打电话 getColor()
。
我所知道的最简单的方法是执行起始代码:
import turtle
draw = turtle.Turtle()
draw.speed(1)
然后是颜色
draw.pencolor("blue")
你好,我正在写一个 python 乌龟文件,其中一个函数将 return 一种随机颜色(我可以选择任意三种),然后一个函数将在屏幕上的任意位置绘制一张脸.它调用函数绘制人脸 5 次,每次选择不同的颜色。我什么都有,它打印了一张脸,但它只会以一种颜色打印,我不确定如何让它每次都打印不同的颜色。
这是我的代码:
import turtle
import random
window = turtle.Screen()
sam = turtle.Turtle()
sam.pensize(3)
def getColor():
color = random.randint(1,3)
if color == 1:
sam.fillcolor("pink")
return "Color: Pink"
elif color == 2:
sam.fillcolor("lightblue")
return "Color: Light Blue"
else:
sam.fillcolor("purple")
return "Color: Purple"
def drawFace(x,y):
move = random.randint(1,2)
if move == 1:
sam.penup()
sam.left(x)
sam.forward(y)
sam.pendown()
else:
sam.penup()
sam.right(x)
sam.forward(y)
sam.pendown()
sam.begin_fill()
sam.right(90)
sam.forward(10)
sam.left(40)
sam.forward(30)
sam.left(50)
sam.forward(90)
sam.left(60)
sam.forward(20)
sam.left(30)
sam.forward(10)
sam.left(90)
sam.forward(118)
sam.end_fill()
sam.penup()
sam.right(90)
sam.forward(50)
sam.right(90)
sam.forward(40)
sam.pendown()
sam.begin_fill()
sides = 4
while sides > 0:
sam.forward(20)
sam.right(90)
sides = sides - 1
sam.end_fill()
sam.penup()
sam.forward(60)
sam.right(90)
sam.pendown()
sam.begin_fill()
sides = 4
while sides > 0:
sam.forward(20)
sam.right(90)
sides = sides - 1
sam.end_fill()
print(getColor())
drawFace(40,50)
drawFace(90,100)
drawFace(30,200)
drawFace(280,50)
drawFace(90,100)
谢谢
getColor()
仅在程序开始时被调用一次。在绘制每张脸之前,您需要调用 getColor()
,如下所示:
print(getColor())
drawFace(40,50)
print(getColor())
drawFace(90,100)
print(getColor())
drawFace(30,200)
print(getColor())
drawFace(280,50)
print(getColor())
drawFace(90,100)
如果您在循环中编写代码,您的代码会更简洁一些:
points = [(40,50), (90,100), (30,200), (280,50), (90,100)]
for x,y in points:
print(getColor())
drawFace(x, y)
或者您可以从您的 drawFace()
拨打电话 getColor()
。
我所知道的最简单的方法是执行起始代码:
import turtle
draw = turtle.Turtle()
draw.speed(1)
然后是颜色
draw.pencolor("blue")