図形を色で塗りつぶそうとしていますが、実行しても表示されません。これにクラスを使用することは想定されていませんか?私はPython-3に習熟しておらず、クラスの使用方法をまだ学んでいます
import turtle
t=turtle.Turtle()
t.speed(0)
class Star(turtle.Turtle):
def __init__(self, x=0, y=0):
turtle.Turtle.__init__(self)
self.shape("")
self.color("")
#Creates the star shape
def shape(self, x=0, y=0):
self.fillcolor("red")
for i in range(9):
self.begin_fill()
self.left(90)
self.forward(90)
self.right(130)
self.forward(90)
self.end_fill()
#I was hoping this would fill the inside
def octagon(self, x=0.0, y=0.0):
turtle.Turtle.__init__(self)
def octa(self):
self.fillcolor("green")
self.begin_fill()
self.left(25)
for x in range(9):
self.forward(77)
self.right(40)
#doesn't run with out this
a=Star()
プログラムの問題:実際には使用しないカメの速度を作成して設定します。 turtle.pyにはすでにshape()
メソッドがあるので、それをオーバーライドして別の意味にするのではなく、新しい名前を選択してください。 begin_fill()
とend_fill()
をループ内に配置するのではなく、ループを囲むようにします。無効な引数を使用して独自のshape()
メソッドを呼び出します。
コードを次のように修正すると、上記の問題に対処できます。
from turtle import Turtle, Screen
class Star(Turtle):
def __init__(self, x=0, y=0):
super().__init__(visible=False)
self.speed('fastest')
self.draw_star(x, y)
def draw_star(self, x=0, y=0):
""" Creates the star shape """
self.penup()
self.setposition(x, y)
self.pendown()
self.fillcolor("red")
self.begin_fill()
for _ in range(9):
self.left(90)
self.forward(90)
self.right(130)
self.forward(90)
self.end_fill()
t = Star()
screen = Screen()
screen.exitonclick()