パイソン ラブ ライト ウェーブ

愛の波

序文

七夕祭りが近づいています。ブロガーは暇なときに愛の光の波を作りました。興味のある友人は、見に来てください!

Turtle の入門

Turtle はシンプルで直感的な描画ツールで、簡単なコマンドでさまざまなグラフィックを作成できます。Turtle はもともと Logo 言語をベースにしたグラフィックス ライブラリであり、Python では標準ライブラリの一部として提供されています。

シンプルなケース

以下は、Turtle の描画を開始するための基本的な例です。

import turtle
  • キャンバスウィンドウを作成する
window = turtle.Screen()
  • ブラシ(カメオブジェクト)を作成する
pen = turtle.Turtle()
  • 正方形を描く
for _ in range(4):
    pen.forward(100)
    pen.right(90)
  • 描画を終了してキャンバスウィンドウを閉じます
turtle.done()

上の例では、最初に Turtle モジュールをインポートし、Canvas ウィンドウ オブジェクトを作成しました。次に、必要な形状を描画するために使用できるブラシ オブジェクトを作成します。
ペンを作成した後、ループを使用して正方形を描き、pen.forward() コマンドによって指定された距離 (ここでは 100) だけ前に移動し、pen.right() によって指定された角度 (ここでは 90) だけ右に曲がります。 ) コマンド度) を使用してブラシの方向を変更します。
最後に、turtle.done() を呼び出して描画を終了し、キャンバス ウィンドウを閉じます。
これは Turtle 描画の単純な例にすぎません。さまざまなコマンドやメソッドを呼び出して、線、円、多角形など、さまざまな形状の画像を描画できます。Turtle は、ブラシの色、太さ、塗りつぶし、その他のプロパティを制御するための他の方法もいくつか提供します。

エントリー機能

Turtle で描画する場合、ブラシを動かしたり、さまざまな形状を描画したりするのに役立つ基本的な機能がいくつかあります。ここでは、Turtle の基本的な機能をいくつか紹介します。

  • forward( distance) : 移動距離 (ピクセル単位) を指定して、ブラシを前方に移動します。
  • 後方(距離) : 移動距離 (ピクセル単位) を指定して、ブラシを後方に移動します。
  • right(angle) : 回転角度 (度単位) を指定して、ブラシを右に回転します。
  • left(angle) : 回転角度 (度単位) を指定して、ブラシを左に回転します。
  • penup() : 線を引かずにブラシを持ち上げて移動します。
  • pendown() : ブラシを置き、移動に合わせて線を描きます。
  • goto(x, y) : 指定した座標位置 (x, y) にブラシを移動します。
  • setx(x) : ブラシの x 座標を指定された値に設定します。
  • sety(y) : ブラシの y 座標を指定された値に設定します。
  • setHeading(angle) : ブラシの方向を設定し、回転角度 (度単位) を指定します。
  • Circle(radius) : 指定した半径の円を描画します。
  • dot(size, color) : サイズと色を指定してドットを描画します。

これらは Turtle モジュールで利用できる基本関数のほんの一部であり、さまざまな多角形の描画、形状の塗りつぶし、ブラシの色、太さの制御などに使用できる関数がさらにたくさんあります。Turtle 描画の詳細な機能と使用法について詳しくは、公式 Python ドキュメントの Turtle モジュール セクション、またはその他の Turtle 関連のチュートリアルとサンプル コードを参照してください。

愛の波

プログラミング

import turtle as tu
import random as ra

tu.setup(1.0, 1.0)  # 设置画板大小(小数表示比例,整数表示大小)
tu.screensize(1.0, 1.0)  # 设置屏幕大小
tu.bgcolor('black')  # 设置画布背景颜色
t = tu.Pen()  # 设置画笔
t.ht()  # 隐藏画笔
colors = ['pink', 'hotpink', 'deeppink', 'lightpink']  # 爱心的颜色列表,可以设置自己喜欢的颜色噢
# colors = ['skyblue', 'lightblue', 'blue', 'royalblue'] # 蓝色系
class Star():  # 星星类
    def __init__(self, r):  # 初始化
        self.r = r  # 爱心的半径
        self.x = 0 # 爱心的横坐标
        self.y = 120  # 爱心的纵坐标
        self.color = ra.choice(colors)  # 爱心的颜色
        self.outline = 2 # 爱心的外框大小(可不要)

    def draw(self):  # 画爱心函数,就是用turtle画爱心
        t.pensize(self.outline)
        t.penup()
        t.color(self.color)
        t.goto(self.x, self.y)
        t.pendown()
        # t.begin_fill()
        # t.fillcolor('pink')
        t.setheading(120)
        t.circle(self.r, 195)
        t.fd(self.r * 2.4)
        t.lt(90)
        t.fd(self.r * 2.4)
        t.circle(self.r, 195)
        # t.end_fill()

    def change(self):  # 改变爱心的大小(爱心不断增大)
        if self.r <= 100:
            self.r += 1
        else:
            self.r = 1
            self.x = 0
            self.y = 120
            self.c = ra.choice(colors)
Stars = []  # 星星列表
for i in range(200):  # 循环增加星星
    Stars.append(Star(i-1))
while True:  # 开始画星星
    tu.tracer(0)
    t.clear()
    for i in range(99):
        Stars[i].draw()
        Stars[i].change()
    tu.update()
tu.mainloop()

プログラム分析

このコードは、Python の Turtle モジュールを使用して、愛の星を描画する効果を実現します。コードの詳細な分析は次のとおりです。

  • import Turtle as tu: Turtle モジュールをインポートし、tu としてエイリアスを付けます。

  • tu.setup(1.0, 1.0): アートボードのサイズを画面サイズの 1.0 倍に設定します。

  • tu.screensize(1.0, 1.0): 画面サイズを画面サイズの 1.0 倍に設定します。

  • tu.bgcolor('black'): キャンバスの背景色を黒に設定します。

  • t = tu.Pen(): ブラシ オブジェクトを作成します。

  • t.ht(): ブラシを非表示にします。

  • Colors = ['pink', 'hotpink', 'deeppink', 'lightpink']: ハートの色のリストを定義します。

  • class Star():: ハートを描画するための Star という名前のクラスを定義します。

  • def init (self, r):: クラスの初期化メソッド。r は心臓の半径です。

  • self.r = r: 受信した半径値をオブジェクトの半径プロパティ self.r に割り当てます。

  • self.x = 0: ハートの横座標を設定します。

  • self.y = 120: ハートの縦座標を設定します。

  • self.color = ra.choice(colors): ハートの色属性に割り当てる色をランダムに選択します。

  • self.outline = 2: ハートの輪郭サイズを設定します。

  • defdraw(self):: ハートを描画するメソッドを定義します。

  • t.pensize(self.outline): ブラシのサイズをハートの輪郭のサイズに設定します。

  • t.penup(): ブラシを持ち上げます。

  • t.color(self.color): ブラシの色をハートの色に設定します。

  • t.goto(self.x, self.y): ハートの開始位置にブラシを移動します。

  • t.pendown(): ブラシを置きます。

  • t.setHeading(120): ブラシの方向を 120 度に設定します。

  • t.circle(self.r, 195): 半径 self.r の円弧を描きます。

  • t.fd(self.r * 2.4): self.r * 2.4 の距離だけ前方に移動します。

  • t.lt(90): 左に 90 度回転します。

  • t.fd(self.r * 2.4): self.r * 2.4 の距離だけ前方に移動します。

  • t.circle(self.r, 195): 半径 self.r の円弧を描きます。

  • def change(self):: ハートのサイズを変更するメソッドを定義します。

  • if self.r <= 100:: 心臓の半径が 100 以下の場合。

  • self.r += 1: 心臓の半径に 1 を加えます。

  • else:: 心臓の半径が 100 より大きい場合。

  • self.r = 1: ハートの半径を 1 に設定します。

  • self.x = 0: ハートの横座標を 0 に設定します。

  • self.y = 120: ハートの縦座標を 120 に設定します。

  • self.c = ra.choice(colors): ハートの色属性に割り当てる色をランダムに選択します。

このコードが実行されると、まず Turtle モジュールがインポートされ、tu にエイリアスされます。次に、tu.setup() 関数と tu.screensize() 関数を呼び出して、アートボードと画面のサイズを設定します。次に、ブラシ オブジェクトを作成し、 t = tu.Pen() を呼び出してペンを非表示にします。次に、4 つの色の値を含むリスト色の定義が定義され、ハートの色をランダムに選択するために使用されます。

次に、ハートを描画するために Star という名前のクラスを定義します。クラス初期化メソッド __init__ は、心臓の半径を表すパラメーター r を受け入れます。初期化メソッドでは、入力された半径値をオブジェクトの半径属性 self.r に代入し、ハートの初期座標、色、フレーム サイズを設定します。このクラスは、ハートを描くためのdrawというメ​​ソッドも定義します。このメソッドでは、ブラシのサイズと色は、オブジェクトのプロパティに従って、一連の t.goto()、t.setHeading()、t.circle()、および t.fd() 関数を通じて設定されます。 、半径、ハートの色。

次に、空のスター リスト Stars がメイン プログラムで作成されます。for ループを 200 回ループし、毎回ハート オブジェクトを作成し、スター リストに追加します。次に、無限ループに入り、アニメーション効果の描画を開始します。

ループの開始時に tu.tracer(0) を呼び出してアニメーションをオフにし、描画プロセスをリアルタイムで表示できるようにします。次に、 t.clear() 関数を呼び出してキャンバスをクリアし、再描画の準備をします。次に、スター リスト内のハート オブジェクトを走査し、オブジェクトの描画メソッドを順番に呼び出して、各ハートを描画します。

このコードの結果は、黒い背景のキャンバス上にさまざまな色とサイズのハートを繰り返し描画することになります。周期中、ハートのサイズは徐々に大きくなり、色はランダムに変化します。

終わり

皆様も幸せな七夕をお過ごしください!

おすすめ

転載: blog.csdn.net/m0_68111267/article/details/132311588