Ciel étoilé romantique Python

9e051e0d91474da09e6686bafa22c45c.gif

Série d'articles 

numéro de série Annuaire d'articles lien direct
1 Code de confession romantique 520 https://want595.blog.csdn.net/article/details/130666881
2 Code de confession en plein écran https://want595.blog.csdn.net/article/details/129794518
3 cœur battant https://want595.blog.csdn.net/article/details/129503123
4 coeurs flottants https://want595.blog.csdn.net/article/details/128808630
5 onde lumineuse d'amour https://want595.blog.csdn.net/article/details/132311588
6 pluie de météorites https://want595.blog.csdn.net/article/details/129395465
7 Gypsophile https://want595.blog.csdn.net/article/details/129572082
8 Spectacle de feux d'artifice https://want595.blog.csdn.net/article/details/128746664
9 Sapin de Noël https://want595.blog.csdn.net/article/details/128213770
dix code flocon de neige https://want595.blog.csdn.net/article/details/129038108
11 simuler un ciel étoilé https://want595.blog.csdn.net/article/details/129948882
12 Gâteau d'anniversaire https://want595.blog.csdn.net/article/details/129694998
13 cerisier https://want595.blog.csdn.net/article/details/130350743
14 ballons colorés https://want595.blog.csdn.net/article/details/130950744
15 fleurs colorées https://want595.blog.csdn.net/article/details/130897838
16 code frauduleux https://want595.blog.csdn.net/article/details/131274862
17 code pluie https://want595.blog.csdn.net/article/details/132574687

Préface

La Fête de la Mi-Automne approche, et le blogueur présente ici un magnifique ciel nocturne et souhaite à tous une joyeuse Fête de la Mi-Automne ! 

Bases du dessin Python

Débuter avec Turtle

Python's Turtle est une bibliothèque graphique Python basée sur tkinter qui peut aider les débutants à comprendre et à dessiner facilement des graphiques. Il imite une tortue, interagit avec la fenêtre de dessin et le pinceau se déplace à mesure que la tortue se déplace pour effectuer des tâches de dessin spécifiques.

La bibliothèque Turtle fait partie de la bibliothèque standard Python, il n'est donc pas nécessaire de l'installer ou de la télécharger avant utilisation. En introduisant la bibliothèque Turtle via l'instruction import Turtle, vous pouvez utiliser certaines des fonctions et méthodes qu'elle fournit.

Les fonctions les plus basiques de la bibliothèque Turtle incluent :

  • Turtle.forward (distance) : déplace les pixels de distance vers la direction actuelle
  • Turtle.backward(distance) : Déplace les pixels de distance dans la direction opposée
  • Turtle.right (angle) : faire pivoter l'angle vers la droite
  • Turtle.left(angle) : Rotation de l'angle vers la gauche
  • Turtle.penup() : Soulevez le pinceau
  • Turtle.pendown() : Posez le pinceau
  • Turtle.color(color) : Définir la couleur du pinceau
  • Turtle.pensize(size) : Définir la taille du pinceau
  • Turtle.speed(speed) : définir la vitesse du pinceau

Lorsque vous utilisez la bibliothèque Turtle pour dessiner des graphiques, vous devez faire attention aux points suivants :

  1. Le point de départ du dessin est au centre de l'écran, c'est-à-dire aux coordonnées (0,0) ;
  2. L'unité de distance déplacée par les fonctions Turtle.forward() et Turtle.backward() est le pixel ;
  3. L’unité d’angle de rotation des fonctions Turtle.right() et Turtle.left() est le degré ;
  4. La fonction Turtle.color() peut recevoir des noms de couleurs ou des valeurs RVB en tant que paramètres, tels que "red", "#FF0000" ;
  5. La fonction tortue.speed() peut définir la vitesse du pinceau. Plus la vitesse est rapide, plus elle est proche du temps réel ;
  6. Lorsque vous devez dessiner plusieurs graphiques, vous pouvez utiliser la fonction tortue.done() pour arrêter le travail de la tortue.

Bref, la bibliothèque tortue de Python est une très bonne bibliothèque graphique qui peut aider les débutants à comprendre et à maîtriser les bases du dessin graphique. Commencez par dessiner des figures géométriques simples, maîtrisez progressivement l'utilisation des fonctions, et enfin soyez capable de dessiner des figures complexes. Parce que la bibliothèque Turtle est facile à apprendre et à utiliser, elle est également devenue une variété d'entrée de gamme parmi les bibliothèques de dessins Python.

Dessin de tortue

Voici quelques exemples simples de la bibliothèque Turtle. Vous pouvez apprendre à utiliser la bibliothèque Turtle en exécutant ces codes :

1. Dessinez un carré

import turtle

for i in range(4):
    turtle.forward(100)
    turtle.right(90)

turtle.done()

2. Dessinez une étoile à cinq branches

import turtle

turtle.left(72)

for i in range(5):
    turtle.forward(100)
    turtle.right(144)
    turtle.forward(100)
    turtle.left(72)

turtle.done()

3. Dessinez un arc-en-ciel

import turtle

colors = ["red", "orange", "yellow", "green", "blue", "purple"]

turtle.pensize(10)

for i in range(6):
    turtle.pencolor(colors[i])
    turtle.circle(50)
    turtle.right(60)

turtle.done()

4. Dessinez une spirale

import turtle

turtle.pensize(2)

for i in range(100):
    turtle.forward(i*2)
    turtle.right(90)

turtle.done()

Ces exemples ne représentent qu'une petite partie de la bibliothèque Turtle. En étudiant ces exemples, vous pourrez vous familiariser avec l'utilisation de la bibliothèque Turtle et créer vos propres graphiques en modifiant le code.

Ciel étoilé romantique Python

la programmation

import math
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()  # 隐藏画笔
colors2 = ['yellow', 'gold', 'orange']    # 星星的颜色列表
colors3 = ['skyblue', 'white', 'cyan', 'aqua']  # 流星的颜色列表

class Star():  # 流星类
    def __init__(self):
        self.x1 = -850
        self.y1 = 300
        self.x2 = ra.randint(-1500, 1000)  # 星星的横坐标
        self.y2 = ra.randint(-500, 500)  # 星星的纵坐标
        self.r2 = ra.randint(1, 5)
        self.x3 = ra.randint(-1500, 1000)  # 流星的横坐标
        self.y3 = ra.randint(-500, 500)  # 流星的纵坐标
        self.r3 = ra.randint(50, 100)  # 流星的半径
        self.t = ra.randint(1, 3)
        self.speed2 = ra.randint(1, 3)  # 星星流星移动速度
        self.speed3 = ra.randint(10, 15)  # 流星的移动速度
        self.color2 = ra.choice(colors2)  # 星星的颜色
        self.color3 = ra.choice(colors3)  # 流星的颜色

    def moon(self):   # 画月亮
        t.penup()
        t.goto(self.x1, self.y1)
        t.pendown()
        t.pencolor("yellow")
        t.begin_fill()
        t.fillcolor("gold")
        t.circle(66)
        t.end_fill()

    def star1(self):  # 画星星的函数
        t.pensize(1)  # 设置画笔大小
        t.penup()  # 提笔
        t.goto(self.x2, self.y2)  # 设置星星在画布中的初始坐标
        t.pendown()  # 落笔
        t.speed(0)  # 画星星的速度,范围为0~10(0最快)
        t.color(self.color2)  # 设置星星的外框颜色
        t.begin_fill()  # 开始填色
        t.fillcolor(self.color2)  # 星星的内部颜色
        for i in range(5):  # 循环画星星
            t.forward(self.r2)
            t.right(144)
            t.forward(self.r2)
            t.left(72)
        t.end_fill()  # 结束填充颜色

    def star2(self):  # 画流星函数
        t.pensize(1)  # 流星的大小
        t.penup()  # 提笔
        t.goto(self.x3, self.y3)  # 随机位置
        t.pendown()  # 落笔
        t.color(self.color3)
        t.begin_fill()
        t.fillcolor(self.color3)
        t.setheading(-30)
        t.right(self.t)
        t.forward(self.r3)
        t.left(self.t)
        t.circle(self.r3 * math.sin(math.radians(self.t)), 180)
        t.left(self.t)
        t.forward(self.r3)
        t.end_fill()

    def move(self):  # 移动函数
        if self.x1 <= 850:  # 当月亮还在画布中时
            self.x1 += 1  # 设置左右移动速度
        else:
            self.x1 = -850

        if self.x2 <= 1000:  # 当星星还在画布中时
            self.x2 += 2 * self.speed2  # 设置左右移动速度
        else:
            self.r2 = ra.randint(1, 5)
            self.x2 = ra.randint(-1500, -1000)
            self.speed2 = ra.randint(1, 3)
            self.color2 = ra.choice(colors2)

        if self.y3 >= -500:  # 当流星还在画布中时
            self.y3 -= self.speed3  # 设置上下移动速度
            self.x3 += 2 * self.speed3  # 设置左右移动速度
        else:
            self.r3 = ra.randint(50, 100)
            self.t = ra.randint(1, 3)
            self.x3 = ra.randint(-1500, -750)
            self.y3 = ra.randint(-500,1000)
            self.speed3 = ra.randint(10, 15)
            self.color3 = ra.choice(colors3)


……完整代码见文末公众号喔

analyse du programme

Ce code implémente l'effet d'animation d'une scène nocturne de ciel étoilé, comprenant la lune, les étoiles et les étoiles filantes. L'ensemble du code est divisé en quatre parties : initialisation, définition de la classe Star, création d'objets étoiles et météores et dessin d'animation.

Tout d'abord, dans la partie d'initialisation, les bibliothèques et modules nécessaires sont introduits, la taille du canevas et la couleur d'arrière-plan sont définies et l'objet pinceau t est créé. Ensuite, deux listes de couleurs sont définies, colours2 stocke les couleurs des étoiles et colours3 stocke les couleurs des météores.

Dans la définition de la classe Star, diverses variables sont d'abord initialisées, notamment les coordonnées, le rayon et la couleur des étoiles et des météores. Les coordonnées, le rayon, la vitesse et la couleur sont tous générés aléatoirement. Ensuite, trois fonctions sont définies pour dessiner respectivement la lune, les étoiles et les étoiles filantes. Pour dessiner la lune, start_fill() et end_fill() sont utilisés pour remplir le jaune et l'or. Pour dessiner les étoiles, une boucle for est utilisée pour dessiner l'étoile à cinq branches. Pour dessiner le météore, le circle() et setheading () les méthodes sont utilisées pour dessiner des arcs et des virages. Enfin, la fonction move() est définie pour contrôler le mouvement de chaque étoile et météore. Lorsqu'ils sortent du canevas, des paramètres tels que les coordonnées et la vitesse sont réaffectés afin qu'ils puissent continuer à se déplacer.

Lors de la création d'objets Star, une liste vide d'étoiles est d'abord créée, puis une boucle for est utilisée pour créer 100 objets Star, et ils sont ajoutés à la liste des étoiles dans l'ordre.

Enfin, dans la partie animation du dessin, une boucle while est utilisée pour mettre à jour en permanence le canevas, et tu.tracer(0) y est utilisé pour désactiver l'effet de retard lors du dessin de graphiques, rendant ainsi le dessin fluide. Dans chaque boucle, le canevas est d'abord effacé, puis la lune et toutes les étoiles sont dessinées, enfin toutes les étoiles filantes sont dessinées, et enfin le canevas est mis à jour à l'aide de la méthode tu.update().

En général, ce code implémente l'effet d'animation d'une scène de nuit étoilée. Il diversifie la position, la vitesse et la couleur des étoiles et des météores en générant des paramètres aléatoires, rendant l'animation plus réelle et plus vivante. Dans le même temps, grâce à l'encapsulation de classes et à la définition de fonctions, la structure du code est rendue plus modulaire et plus facile à maintenir.

fin

Joyeux Festival de la Mi-Automne!

 

Guess you like

Origin blog.csdn.net/m0_68111267/article/details/132910075