我试着用Python龟画多米尼加国旗(不要和多米尼加国旗混淆)。我目前在代码中除了鸟(我也不知道如何做)之外的所有东西。我似乎也不知道如何让10颗星星正确地出现在红色圆圈内,而星星内部没有线条。如果我能得到一些关于如何在圆圈内排列恒星的技巧,以及如何在中间画鸟的话,那就太棒了。谢谢!在
下面是它的图像:
以下是我目前掌握的代码:
import turtle
wn = turtle.Screen()
alex = turtle.Turtle()
def drawRect():
alex.speed(0)
alex.up()
alex.fillcolor("green")
alex.begin_fill()
alex.setpos(-250, -100)
alex.down()
for i in range(2):
alex.forward(500)
alex.left(90)
alex.forward(300)
alex.left(90)
alex.end_fill()
drawRect()
def drawLines():
alex.speed(0)
alex.fillcolor("yellow")
alex.begin_fill()
alex.penup()
alex.setpos(-250, 70)
alex.pendown()
for i in range(2):
alex.forward(500)
alex.left(90)
alex.forward(30)
alex.left(90)
alex.end_fill()
alex.fillcolor("black")
alex.begin_fill()
alex.penup()
alex.setpos(-250, 40)
alex.pendown()
for i in range(2):
alex.forward(500)
alex.left(90)
alex.forward(30)
alex.left(90)
alex.end_fill()
alex.pencolor("white")
alex.fillcolor("white")
alex.begin_fill()
alex.penup()
alex.setpos(-250, 10)
alex.pendown()
for i in range(2):
alex.forward(500)
alex.left(90)
alex.forward(30)
alex.left(90)
alex.end_fill()
alex.speed(0)
alex.fillcolor("yellow")
alex.begin_fill()
alex.penup()
alex.setpos(-40, -100)
alex.pendown()
for i in range(2):
alex.forward(30)
alex.left(90)
alex.forward(300)
alex.left(90)
alex.end_fill()
alex.speed(0)
alex.fillcolor("black")
alex.begin_fill()
alex.penup()
alex.setpos(-10, -100)
alex.pendown()
for i in range(2):
alex.forward(30)
alex.left(90)
alex.forward(300)
alex.left(90)
alex.end_fill()
alex.speed(0)
alex.pencolor("white")
alex.fillcolor("white")
alex.begin_fill()
alex.penup()
alex.setpos(20, -100)
alex.pendown()
for i in range(2):
alex.forward(30)
alex.left(90)
alex.forward(300)
alex.left(90)
alex.end_fill()
drawLines()
def drawCircle():
alex.speed(0)
alex.up()
alex.setpos(10, -50)
alex.down()
alex.fillcolor("red")
alex.begin_fill()
alex.circle(100)
alex.end_fill()
drawCircle()
def drawStars():
alex.speed(0)
alex.pencolor("green")
alex.fillcolor("green")
alex.begin_fill()
for i in range(5):
alex.forward(20)
alex.right(144)
def makeStars():
alex.penup()
alex.setpos(25, -10)
alex.pendown()
for i in range(11):
drawStars()
alex.left(35)
alex.penup()
alex.forward(45)
alex.pendown()
makeStars()
这是家庭作业,还是你自己自学的?不管怎样,画那只鹦鹉都不容易!TwoTwo-Two链接的SVG使用了40多个扭曲的椭圆和大约30条线性路径;我猜它是在一个矢量绘图程序(如Inkscape)中创建的。在
即使您不熟悉SVG,该文件可能仍然对您有用。因为它来自维基百科,我认为它很好地代表了多米尼加当前的官方旗帜,所以元素的大小、位置和颜色应该相当准确。在
以下是该文件中的一些颜色:
海龟模块理解这种格式的颜色。在
。。。在
现在,谈谈你目前的问题。在
我已经很多年没有使用turtle图形了,但是你启发我安装了tkinter,这样我就可以修改你的代码了。我注意到的第一个问题是
alex.left(35)
,应该是36,因为360°/10=36°。在我尝试了各种各样的方法来使星圈正确地居中,星星也正确地排列在一起,但是在一个小时左右的挫折之后,我放弃了简单的绘图命令。我相信这对海龟专家来说是件轻而易举的事,但我决定采用一种略为三角法的方法。在
由于海龟模块的填充方式,没有简单的方法来绘制填充的星星。一些矢量绘图系统有其他填充模式来解决这个问题,但turtle似乎没有这样做。所以你要么用五角大楼来填充恒星的中心,要么把它画成一个10边的多边形。在
我已经写了一些代码来绘制填充的星星正确的居中和对齐。我的代码中的大小与SVG中的大小不完全相同,但它们非常接近。如果这是为了你自己的自学练习,我很乐意在这里发布我的代码。奥托,如果这是做作业的话,我不应该把整件事都发出去。。。在
如果您先定义所有函数,然后在程序的底部调用它们(最好是在
main()
函数中),那么阅读代码会更容易。将函数调用与函数定义分散在一起有点混乱。在相关问题 更多 >
编程相关推荐