"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Semana de construcción de juegos interactivos

Semana de construcción de juegos interactivos

Publicado el 2024-11-07
Navegar:221

Week Building Interactive Games

Semana 2: Creación de juegos interactivos


Clase 3: Física y Movimiento del Juego

3.1 Comprender la física del juego

La física del juego implica simular la física del mundo real para hacer que los juegos sean más realistas y atractivos. Los principios básicos de la física, como la velocidad, la aceleración y la gravedad, pueden hacer que los movimientos y las interacciones en un juego parezcan naturales.

3.1.1 Velocidad y aceleración
  • Velocidad es la tasa de cambio de la posición de un objeto.
  • Aceleración es la tasa de cambio de velocidad.

Ejemplo: movimiento básico con velocidad

import pygame

# Initialize Pygame
pygame.init()

# Screen setup
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Basic Movement with Velocity")

# Colors
white = (255, 255, 255)
black = (0, 0, 0)

# Player setup
player = pygame.Rect(375, 275, 50, 50)
velocity = pygame.Vector2(0, 0)

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Keyboard input for movement
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        velocity.x = -5
    elif keys[pygame.K_RIGHT]:
        velocity.x = 5
    else:
        velocity.x = 0

    if keys[pygame.K_UP]:
        velocity.y = -5
    elif keys[pygame.K_DOWN]:
        velocity.y = 5
    else:
        velocity.y = 0

    # Update player position
    player.move_ip(velocity)

    # Clear screen
    screen.fill(white)

    # Draw player
    pygame.draw.rect(screen, black, player)

    # Update display
    pygame.display.flip()

pygame.quit()
3.1.2 Simulación de gravedad

La gravedad añade realismo a los juegos al tirar de los objetos hacia abajo, simulando el efecto de la gravedad en la Tierra.

Ejemplo: agregar gravedad a un objeto que cae

import pygame

# Initialize Pygame
pygame.init()

# Screen setup
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Gravity Simulation")

# Colors
white = (255, 255, 255)
black = (0, 0, 0)

# Object setup
object = pygame.Rect(375, 50, 50, 50)
gravity = 0.5
velocity_y = 0

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Apply gravity
    velocity_y  = gravity
    object.y  = velocity_y

    # Reset object position if it falls off-screen
    if object.y > 600:
        object.y = 50
        velocity_y = 0

    # Clear screen
    screen.fill(white)

    # Draw object
    pygame.draw.rect(screen, black, object)

    # Update display
    pygame.display.flip()

pygame.quit()

3.2 Objetos que rebotan y reflejan

Para crear juegos dinámicos, a menudo es necesario simular objetos que rebotan, como una pelota que rebota en las paredes.

Ejemplo: simulación de pelota que rebota

import pygame

# Initialize Pygame
pygame.init()

# Screen setup
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Bouncing Ball")

# Colors
white = (255, 255, 255)
black = (0, 0, 0)

# Ball setup
ball = pygame.Rect(375, 275, 50, 50)
velocity = pygame.Vector2(4, 4)

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Move ball
    ball.move_ip(velocity)

    # Bounce off walls
    if ball.left = 800:
        velocity.x = -velocity.x
    if ball.top = 600:
        velocity.y = -velocity.y

    # Clear screen
    screen.fill(white)

    # Draw ball
    pygame.draw.ellipse(screen, black, ball)

    # Update display
    pygame.display.flip()

pygame.quit()

3.3 Mini proyecto: Juego de pelota que rebota

Objetivo: Crear un juego en el que una pelota rebote por la pantalla y cambie de dirección cuando golpee las paredes.

3.3.1 Ejemplo de código

import pygame

# Initialize Pygame
pygame.init()

# Screen setup
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Bouncing Ball Game")

# Colors
white = (255, 255, 255)
black = (0, 0, 0)

# Ball setup
ball = pygame.Rect(375, 275, 50, 50)
velocity = pygame.Vector2(3, 3)

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Move ball
    ball.move_ip(velocity)

    # Bounce off walls
    if ball.left = 800:
        velocity.x = -velocity.x
    if ball.top = 600:
        velocity.y = -velocity.y

    # Clear screen
    screen.fill(white)

    # Draw ball
    pygame.draw.ellipse(screen, black, ball)

    # Update display
    pygame.display.flip()

pygame.quit()

3.4 Ejercicios

  1. Agregar obstáculos:
    • Introduzca obstáculos estacionarios en los que la pelota pueda rebotar.
  2. Cambiar color de bola:
    • Haz que la pelota cambie de color cada vez que rebote en una pared.

Clase 4: Trabajar con sonidos y música

4.1 Agregar efectos de sonido y música

Los efectos de sonido y la música son cruciales para crear una experiencia de juego inmersiva. Pygame te permite agregar sonido a tus juegos fácilmente.

4.1.1 Cargando y Reproduciendo Sonidos
  • Para usar sonido en Pygame, primero debes cargar el archivo de sonido y luego reproducirlo.

Ejemplo: agregar un efecto de sonido

import pygame

# Initialize Pygame and Mixer
pygame.init()
pygame.mixer.init()

# Load sound effect
bounce_sound = pygame.mixer.Sound("bounce.wav")

# Screen setup
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Sound Effects")

# Colors
white = (255, 255, 255)
black = (0, 0, 0)

# Ball setup
ball = pygame.Rect(375, 275, 50, 50)
velocity = pygame.Vector2(3, 3)

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Move ball
    ball.move_ip(velocity)

    # Bounce off walls and play sound
    if ball.left = 800:
        velocity.x = -velocity.x
        bounce_sound.play()  # Play sound on bounce
    if ball.top = 600:
        velocity.y = -velocity.y
        bounce_sound.play()

    # Clear screen
    screen.fill(white)

    # Draw ball
    pygame.draw.ellipse(screen, black, ball)

    # Update display
    pygame.display.flip()

pygame.quit()
4.1.2 Música de fondo
  • También puedes agregar música de fondo que se reproduce continuamente durante el juego.

Ejemplo: agregar música de fondo

import pygame

# Initialize Pygame and Mixer
pygame.init()
pygame.mixer.init()

# Load and play background music
pygame.mixer.music.load("background_music.mp3")
pygame.mixer.music.play(-1)  # Loop indefinitely

# Screen setup
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Background Music")

# Colors
white = (255, 255, 255)
black = (0, 0, 0)

# Main game loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Clear screen
    screen.fill(white)

    # Update display
    pygame.display.flip()

pygame.quit()

4.2 Activación de sonidos basados ​​en eventos

Los efectos de sonido se pueden activar en función de eventos específicos del juego, como colisiones o acciones de los jugadores.

Ejemplo: Juego de memoria sonora

python
import pygame
import random

# Initialize Pygame and Mixer
pygame.init()
pygame.mixer.init()

# Load sounds
sounds = [pygame.mixer.Sound(f"sound{i}.wav") for i in range(4)]

# Screen setup
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Sound Memory Game")

# Colors
white = (255, 255, 255)
black = (0, 0, 0)

# Generate random sequence of sounds
sequence = [random.choice(sounds) for _ in range(5)]
current_step = 0

# Main game loop
running = True
while running:

Declaración de liberación Este artículo se reproduce en: https://dev.to/igbojionu/week-2-building-interactive-games-41ok?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3