„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Interaktive Wochenbauspiele

Interaktive Wochenbauspiele

Veröffentlicht am 07.11.2024
Durchsuche:233

Week Building Interactive Games

Woche 2: Interaktive Spiele erstellen


Klasse 3: Spielphysik und Bewegung

3.1 Spielphysik verstehen

Spielphysik beinhaltet die Simulation realer Physik, um Spiele realistischer und ansprechender zu machen. Grundlegende physikalische Prinzipien wie Geschwindigkeit, Beschleunigung und Schwerkraft können dafür sorgen, dass sich Bewegungen und Interaktionen in einem Spiel natürlich anfühlen.

3.1.1 Geschwindigkeit und Beschleunigung
  • Geschwindigkeit ist die Änderungsrate der Position eines Objekts.
  • Beschleunigung ist die Geschwindigkeitsänderungsrate.

Beispiel: Grundbewegung mit Geschwindigkeit

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 Schwerkraftsimulation

Die Schwerkraft verleiht Spielen Realismus, indem sie Objekte nach unten zieht und so die Wirkung der Schwerkraft auf der Erde simuliert.

Beispiel: Hinzufügen von Schwerkraft zu einem fallenden Objekt

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 Springende und reflektierende Objekte

Um dynamische Spiele zu erstellen, ist es oft notwendig, springende Objekte zu simulieren, beispielsweise einen Ball, der von Wänden abprallt.

Beispiel: Hüpfball-Simulation

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 Miniprojekt: Hüpfballspiel

Ziel: Erstellen Sie ein Spiel, bei dem ein Ball über den Bildschirm springt und die Richtung ändert, wenn er die Wände berührt.

3.3.1 Codebeispiel

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 Übungen

  1. Hindernisse hinzufügen:
    • Führen Sie stationäre Hindernisse ein, von denen der Ball abprallen kann.
  2. Ballfarbe ändern:
    • Lassen Sie den Ball jedes Mal seine Farbe ändern, wenn er von einer Wand abprallt.

Klasse 4: Arbeiten mit Klängen und Musik

4.1 Hinzufügen von Soundeffekten und Musik

Soundeffekte und Musik sind entscheidend für die Schaffung eines immersiven Spielerlebnisses. Mit Pygame können Sie ganz einfach Sound zu Ihren Spielen hinzufügen.

4.1.1 Sounds laden und abspielen
  • Um Sound in Pygame zu verwenden, müssen Sie zuerst die Sounddatei laden und dann abspielen.

Beispiel: Hinzufügen eines Soundeffekts

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 Hintergrundmusik
  • Sie können auch Hintergrundmusik hinzufügen, die während des Spiels kontinuierlich abgespielt wird.

Beispiel: Hintergrundmusik hinzufügen

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 Auslösen von Tönen basierend auf Ereignissen

Soundeffekte können basierend auf bestimmten Spielereignissen ausgelöst werden, wie z. B. Kollisionen oder Spieleraktionen.

Beispiel: Sound-Memory-Spiel

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:

Freigabeerklärung Dieser Artikel ist reproduziert unter: https://dev.to/igbojionu/week-2-building-interactive-games-41OK?1 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3