1. ホーム
  2. パイソン

Python描画タートルライブラリ解説

2022-02-25 02:31:25

        Turtleライブラリは、Python言語で画像を描画するためのライブラリとして人気があります。横軸をx、縦軸をyとする座標系の原点(0,0)からスタートした小さな亀が、関数命令群の制御によりこの平面座標系を移動し、這うようにグラフを描くと想像してください。

<スパン カメの描き方の基本。

<スパン 1.キャンバス

<スパン         キャンバスは、タートルが描画のために広げてくれる領域で、その大きさや初期位置を設定することができます。

<スパン         キャンバスサイズの設定

         turtle.screensize(canvwidth=None, canvheight=None, bg=None) に、それぞれキャンバスの幅(ピクセル単位)、高さ、背景色をパラメータとして指定します。

        例:turtle.screensize(800,600, "green")。

               turtle.screensize() # デフォルトサイズ(400, 300)を返す。

turtle.setup(width=0.5, height=0.75, startx=None, starty=None), parameters: width, height: 幅と高さを整数(ピクセル)で入力、小数はコンピュータ画面の比率、(startx, starty): この座標は(startx, starty)を表します。この座標は、長方形のウィンドウの左上隅の位置、または空の場合はウィンドウの中心を表す。

        例)turtle.setup(width=0.6,height=0.6)

               turtle.setup(width=800,height=800, startx=100, starty=100)


<スパン 2. ブラシ

<スパン 2.1 ブラシの状態

<スパン         キャンバス上には、デフォルトでキャンバスの中心を原点とする軸があり、原点で正のX軸を向いているタートルがあります。ここでは、原点(位置)と x 軸に対して正の面(方向)という 2 つの単語でカメを表現し、カメの描画では位置と方向を使ってカメの状態(ブラシ)を表現しています。

<スパン 2.2 ブラシの特性

<スパン         ブラシ(ブラシのプロパティ、色、線の太さなど)

        1) turtle.pensize():ブラシの幅を設定します。

        2) turtle.pencolor():引数なし、現在のブラシ色を返す、ブラシ色を設定するには、"green", "red" といった文字列、または RGB 3 タプルとして、引数を渡します。

        3) turtle.speed(speed):ブラシの速度を設定します。ブラシの描画速度は [0,10] の整数値で、数値が大きいほど速くなります。

2.3 描画コマンド

         タートル図法を操作するためのコマンドは多数あり、モーションコマンド、ブラシコントロールコマンド、グローバルコントロールコマンドの3種類に分けられる。

<スパン (1)ブラシモーションコマンド

<テーブル

コマンド

説明

turtle.forward(距離)

現在のブラシの方向に距離ピクセル長を移動する

turtle.backward(距離)

現在のブラシと反対方向に距離ピクセル分移動する

turtle.right(度)

時計回りに度数を移動

turtle.left(度)

移動角度:反時計回り

turtle.pendown()

グラフを移動しながら描画し、デフォルトではさらに

亀.goto(x,y)

ブラシをx,y座標に移動させる

亀.penup()

<スパン 図を描くのではなく、別の場所を描くために、ペンを持ち上げて移動する

タートル.サークル()

円の中心がブラシの左(右)にあることを示す、正の(負の)半径を持つ円を描画します。

setx( )

現在のX軸を指定された位置に移動する

sety( )

現在のY軸を指定された位置に移動する

setheading(角度)

現在の向きを角度∠に設定

ホーム()

現在のブラシの位置を原点に設定し、東向きにします。

<スパン ドット(r)

指定された直径と色でドットを描画する

(2) ブラシコントロールコマンド

<テーブル

コマンド

説明

turtle.fillcolor(カラーストリング)

グラフの塗りつぶし色を描画します

turtle.color(色1, 色2)

また、pencolor=color1, fillcolor=color2 を設定します。

タートル.フィリング()

現在の状態が充填中であるか否かを返す

turtle.begin_fill()

グラフの塗りつぶしを開始する準備ができている

turtle.end_fill()

塗りつぶし完了

turtle.hideturtle()

<スパン ブラシのタートルシェイプを隠す

turtle.showturtle()

ブラシのタートルシェイプを表示する

(3) グローバル制御コマンド

<テーブル

コマンド

説明

タートル.クリア()

タートルウィンドウをクリアしても、タートルの位置と状態は変わりません

タートル.リセット()

ウィンドウをクリアして、タートル状態をスタート状態に戻す

タートル.アンドゥ()

直前のタートルアクションを元に戻す

turtle.isvisible()

現在のタートルが表示されているかどうかを返します

スタンプ

現在のグラフをコピーする

turtle.write(s [,font=("font-name",font_size,"font_type")])

テキストを書く、sはテキストの内容、fontはフォントのパラメータ、それぞれ、フォント名、サイズ、タイプ; fontはオプション、fontパラメータもオプションです

(4) その他のコマンド

<テーブル

コマンド

説明

turtle.mainloop()またはturtle.done()

イベントループの開始 - 呼び出し Tkinter メインループ 関数を使用します。

タートルグラフィックスプログラムの最後のステートメントでなければなりません。

turtle.mode(mode=None)です。

<スパン タートルモードを設定する( スタンダード&クォート は、その "ロゴ" または "world"。 ) を行い、リセットを実行します。パターンが与えられない場合、現在のパターンが返されます。

<テーブル

<スパン パターン

<スパン 初期タートルタイトル

<スパン 正角度

<スパン 標準

<スパン 右(東)へ

<スパン 反時計回り

<スパン ロゴ

<スパン 上(北)

<スパン 時計回り

turtle.delay(delay=None)です。

描画遅延をミリ秒単位で設定または返します。

turtle.begin_poly()

<スパン ポリゴンの頂点の記録を開始します。カメの現在位置は、ポリゴンの最初の頂点である。

turtle.end_poly()

<スパン ポリゴンの頂点の記録を停止します。現在のカメの位置は、ポリゴンの最後の頂点です。最初の頂点に接続されます。

turtle.get_poly()

最後に記録されたポリゴンを返します。

3. コマンドの詳細

        3.1 turtle.circle(radius, extent=None, steps=None)

        説明 指定された半径の円を描画します。

<スパン         パラメータ

        radius(半径):円の中心がブラシの左(右)に描かれることを示す正の(負の)半径です。

        extent (半径) (オプション)。

        steps (オプション) (半径radiusの円の内接正方形多角形を作り、多角形の辺の数はsteps)。

circle(50) # 円形です。

circle(50,steps=3) # 三角形になります。

circle(120, 180) # 半円

1. ひまわり

<スパン

# coding=utf-8
import turtle
import time

# Also set pencolor=color1, fillcolor=color2
turtle.color("red", "yellow")

turtle.begin_fill()
for _ in range(50):
turtle.forward(200)
turtle.left(170)
turtle.end_fill()

turtle.mainloop()




<スパン 2. 五芒星

# coding=utf-8
import turtle
import time

turtle.pensize(5)
turtle.pencolor("yellow")
turtle.fillcolor("red")

turtle.begin_fill()
for _ in range(5):
  turtle.forward(200)
  turtle.right(144)
turtle.end_fill()
time.sleep(2)
 
turtle.penup()
turtle.goto(-150,-120)
turtle.color("violet")
turtle.write("Done", font=('Arial', 40, 'normal'))

turtle.mainloop()




<スパン 3. 時計プログラム

# coding=utf-8
 
import turtle
from datetime import *
 
# Lift the brush, move it forward a distance and drop it
def Skip(step):
    turtle.penup()
    turtle.forward(step)
    turtle.pendown()
 
def mkHand(name, length):
    # Register the Turtle shape and create the table pin Turtle
    turtle.reset()
    Skip(-length * 0.1)
    # Start recording the vertices of the polygon. The current turtle position is the first vertex of the polygon.
    turtle.begin_poly()
    turtle.forward(length * 1.1)
    # Stop recording the vertices of the polygon. The current turtle position is the last vertex of the polygon. It will be connected to the first vertex.
    turtle.end_poly()
    # Return the last polygon recorded.
    handForm = turtle.get_poly()
    turtle.register_shape(name, handForm)
 
def Init():
    global secHand, minHand, hurHand, printer
    # Reset Turtle to point north
    turtle.mode("logo")
    # Create three table pin Turtle and initialize
    mkHand("secHand", 135)
    mkHand("minHand", 125)
    mkHand("hurHand", 90)
    secHand = turtle.
    secHand.shape("secHand")
    minHand = turtle.
    minHand.shape("minHand")
    hurHand = turtle.
    hurHand.shape("hurHand")
   
    for hand in secHand, minHand, hurHand:
        hand.shapesize(1, 1, 3)
        hand.speed(0)
   
    # Create output text Turtle
    printer = turtle.
    # Hide the turtle shape of the brush
    printer.hideturtle()
    printer.penup()
    
def SetupClock(radius):
    # Create the outer frame of the table
    turtle.reset()
    turtle.pensize(7)
    for i in range(60):
        Skip(radius)
        if i % 5 == 0:
            turtle.forward(20)
            Skip(-radius - 20)
           
            Skip(radius + 20)
            if i == 0:
                turtle.write(int(12), align="center", font=("Courier", 14, "bold"))
            elif i == 30:
                Skip(25)
                turtle.write(int(i/5), align="center", fon


<イグ