Pythonのタートルグラフィックスを用いて、一辺のサイズを指定し、正n角形の星形を描く関数drawStarを定義します「def drawStar(n, size):」。中は塗り潰さず、内部での線の交差がないようにします。4角形の場合は✧、5角形の場合は☆、6角形の場合は✡︎(交差部分はない形で)とします。この関数を用いて3角形から8角形の星を描くプログラムを作成します。
3角形から8角形まで数値を変更して星を描くプログラムはなんとかかけたのですが、これをdrawStar関数を定義して書く段階でつまづいています。アドバイスやヒント等よろしくお願いいたします。
python
1#3角形 2from turtle import * 3size = 100 4for i in range( 6 ): 5 forward( size ) 6 right( 161 if i % 2 == 0 else -42 ) 7 8#4角形 9for i in range( 8 ): 10 forward( size ) 11 right( 162 if i % 2 == 0 else -72 ) 12 13#5角形 14for i in range( 10 ): 15 forward( size ) 16 right( 144 if i % 2 == 0 else -72 ) 17 18#6角形 19for i in range( 12 ): 20 forward( size ) 21 right( 132 if i % 2 == 0 else -72 ) 22 23#7角形 24for i in range( 14 ): 25 forward( size ) 26 right( 123.5 if i % 2 == 0 else -72 ) 27 28#8角形 29for i in range( 16 ): 30 forward( size ) 31 right( 117 if i % 2 == 0 else -72 ) 32done( )
これを踏まえてrange内はn*2で表すのだろうなとは思うのですが、どのようにdrawStar関数を定義して書いていけば良いかでつまづいています。
python
1from turtle import* 2 3n = int(input("何角形?:")) 4 5def drawRegular( n, size ): 6 for _ in range( n*2, 100 ): 7 right( ? if i % 2 == 0 else -72 ) 8done( )
タートルグラフィックスも用いた例として以下が挙げられていたので、参考にできるのではと思うのですが上手くいきません。よろしければアドバイス等願いたいです。
python
1from turtle import * 2 3# タートルで三角形を描画する関数 4def drawTriangle( size ): 5 for _ in range( 3 ): 6 forward( size ) 7 left( 360/3 ) 8 9# penupしてその座標に持っていく関数 10def setPoint( x, y ): 11 penup( ) 12 setposition( x, y ) 13 pendown( ) 14 15# 呼び出して描画 16speed( 0 ) 17tracer( False ) 18for n in range( 90 ): 19 setPoint( 90-n*2, 0 ) 20 drawTriangle( 200 ) 21 right( 4 ) 22 23# 四角形を描く関数 24def drawRectangle( x, y, width, height ): 25 setPoint( x, y ) 26 for n in range( 4 ): 27 forward( width if n % 2 == 0 else height ) 28 right( 90 ) 29 30# 呼び出して描画 31for n in range( 30 ): 32 drawRectangle( -250, 250, 100, 40 ) 33 right( 12 ) 34 35 36done( )

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/10 12:53