Muestre Snowfall usando la biblioteca arcade en Python

En este artículo, vamos a mostrar las nevadas usando el paquete arcade de Python. La biblioteca Arcade es un módulo de Python moderno que se usa ampliamente para desarrollar videojuegos en 2D con gráficos y sonido atractivos. Es una biblioteca orientada a objetos y se puede instalar como cualquier otro paquete de Python.

Enfoque paso a paso:

  • El primer y más importante paso en esta serie es importar la biblioteca arcade en su IDE de Python. También importe módulos aleatorios y matemáticos , ya que muestra nevadas en lugares aleatorios en la pantalla.

Python3

# Import required modules
import random
import math
import arcade
  • Especifique los valores de ancho, alto y título de la pantalla de salida.

Python3

# Adjust window attributes
Width = 800
Height = 600
Title = "SnowFall"
  • Defina una clase snow_fall que consta del método __init__ y una función para restablecer la nevada a una posición aleatoria sobre la pantalla.

Python3

class snow_fall:
    def __init__(self):
        self.x = 0
        self.y = 0
  
    def reset_snow(self):
  
        # Reset flake to random position above screen
        self.y = random.randrange(Height, Height + 100)
        self.x = random.randrange(Width)
  • Ahora, defina otra clase nevada() y funcione para colocar nevadas aleatoriamente.

Python3

class snowfall(arcade.Window):
    def __init__(self, width, height, title):
        
        # Calls "__init__" of parent class 
        # (arcade.Window) to setup screen
        super().__init__(width, height, title)
  
    def start_snowfall(self):
        
        # Set up snowfall and initialize variables.
        self.snowfall_list = []
  
        for i in range(50):
              
            # Create snowfall instance
            snowfall = snow_fall()
  
            # Randomly position snowfall
            snowfall.x = random.randrange(Width)
            snowfall.y = random.randrange(Height + 200)
  
            # Set other variables for the snowfall
            snowfall.size = random.randrange(8)
            snowfall.speed = random.randrange(20, 40)
            snowfall.angle = random.uniform(math.pi, math.pi * 2)
  
            # Add snowflake to snowfall list
            self.snowfall_list.append(snowfall)
  • Establezca el color de fondo.

Python3

# Set the background color
arcade.set_background_color(arcade.color.BLUE)
  • Ahora, defina la función para animar nevadas y mostrar la posición actual de cada nevada.

Python3

def on_draw(self):
  
        # This command is necessary before drawing
        arcade.start_render()
  
        # Draw the current position of each snowfall
        for snowfall in self.snowfall_list:
            arcade.draw_circle_filled(snowfall.x, snowfall.y,
                                      snowfall.size, arcade.color.WHITE)
  
    def on_update(self, delta_time):
          
        # Animate all the snowfall falling
        for snowfall in self.snowfall_list:
            snowfall.y -= snowfall.speed * delta_time
  
            # Check if snowfall has fallen below screen
            if snowfall.y < 0:
                snowfall.reset_snow()
  
            # Some math to make the snowfall move side to side
            snowfall.x += snowfall.speed * \
                math.cos(snowfall.angle) * delta_time
            snowfall.angle += 1 * delta_time
  • El último paso es crear un objeto arcade y llamar a los métodos requeridos.

Python3

# Driver Code
if __name__ == "__main__":
    screen = snowfall(800, 600, "Snow")
    screen.start_snowfall()
    arcade.run()

A continuación se muestra el programa completo basado en el enfoque anterior:

Python3

# Import required modules
import random
import math
import arcade
  
  
  
# Adjust window attributes
Width = 800
Height = 600
Title = "SnowFall"
  
  
  
class snow_fall:
    def __init__(self):
        self.x = 0
        self.y = 0
  
    def reset_snow(self):
          
        # Reset flake to random position above screen
        self.y = random.randrange(Height, Height + 100)
        self.x = random.randrange(Width)
  
  
  
class snowfall(arcade.Window):
    def __init__(self, width, height, title):
        
        # Calls "__init__" of parent class 
        # (arcade.Window) to setup screen
        super().__init__(width, height, title)
  
    def start_snowfall(self):
        
        # Set up snowfall and initialize variables.
        self.snowfall_list = []
  
        for i in range(50):
              
            # Create snowfall instance
            snowfall = snow_fall()
  
            # Randomly position snowfall
            snowfall.x = random.randrange(Width)
            snowfall.y = random.randrange(Height + 200)
  
            # Set other variables for the snowfall
            snowfall.size = random.randrange(8)
            snowfall.speed = random.randrange(20, 40)
            snowfall.angle = random.uniform(math.pi, math.pi * 2)
  
            # Add snowflake to snowfall list
            self.snowfall_list.append(snowfall)
  
        # Set the background color
        arcade.set_background_color(arcade.color.BLUE)
  
    def on_draw(self):
          
        # This command is necessary before drawing
        arcade.start_render()
  
        # Draw the current position of each snowfall
        for snowfall in self.snowfall_list:
            arcade.draw_circle_filled(snowfall.x, snowfall.y,
                                      snowfall.size, arcade.color.WHITE)
  
    def on_update(self, delta_time):
          
        # Animate all the snowfall falling
        for snowfall in self.snowfall_list:
            snowfall.y -= snowfall.speed * delta_time
  
            # Check if snowfall has fallen below screen
            if snowfall.y < 0:
                snowfall.reset_snow()
  
            # Some math to make the snowfall move side to side
            snowfall.x += snowfall.speed * \
                math.cos(snowfall.angle) * delta_time
            snowfall.angle += 1 * delta_time
  
  
  
# Driver Code
if __name__ == "__main__":
    screen = snowfall(800, 600, "Snow")
    screen.start_snowfall()
    arcade.run()

Producción:

Publicación traducida automáticamente

Artículo escrito por anshitaagarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *