Informatik-Unterricht Hilfe! Wie und Wo programmieren wir einen Bildschirmschoner?

1 Antwort

Mit pygame (Python) ist sowas z.B. möglich.

Das ist aber nur das Kern-Programm des Bildschirmschoners, welches noch vom Betriebssystem nach einer gewissen Zeit der Inaktivität aufgerufen werden muss. Letzteres ist aber sicherlich nicht Teil der Aufgabe, da dies immer vom spezifischen Betriebssystem abhängt, wie so ein Trigger ausgelöst wird. Nach meiner Einschätzung könnt ihr das ignorieren. Ich denke, es geht um den Bildschirmschoner als solches.

ChatGPT gibt folgenden Beispielcode aus:

import pygame
import random

# Bildschirmgröße
screen_width = 800
screen_height = 600

# Farben
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)

pygame.init()

# Erstelle den Bildschirm
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Bildschirmschoner")

# Rechtecke
rect_size = 200
small_rect_size = 50

# Startposition und Geschwindigkeit für die Rechtecke
rect1_x = random.randint(0, screen_width - rect_size)
rect1_y = random.randint(0, screen_height - rect_size)
rect1_speed_x = random.choice([-2, 2])
rect1_speed_y = random.choice([-2, 2])

rect2_x = random.randint(0, screen_width - rect_size)
rect2_y = random.randint(0, screen_height - rect_size)
rect2_speed_x = random.choice([-2, 2])
rect2_speed_y = random.choice([-2, 2])

running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Hintergrund löschen
    screen.fill(black)

    # Bewege die Rechtecke
    rect1_x += rect1_speed_x
    rect1_y += rect1_speed_y

    rect2_x += rect2_speed_x
    rect2_y += rect2_speed_y

    # Kollisionserkennung mit den Bildschirmrändern
    if rect1_x <= 0 or rect1_x >= screen_width - rect_size:
        rect1_speed_x *= -1

    if rect1_y <= 0 or rect1_y >= screen_height - rect_size:
        rect1_speed_y *= -1

    if rect2_x <= 0 or rect2_x >= screen_width - rect_size:
        rect2_speed_x *= -1

    if rect2_y <= 0 or rect2_y >= screen_height - rect_size:
        rect2_speed_y *= -1

    # Zeichne die Rechtecke
    pygame.draw.rect(screen, red, (rect1_x, rect1_y, rect_size, rect_size))
    pygame.draw.rect(screen, blue, (rect2_x, rect2_y, rect_size, rect_size))

    # Zeichne die kleinen Rechtecke in den großen Rechtecken
    pygame.draw.rect(screen, green, (rect1_x + (rect_size - small_rect_size) / 2, rect1_y + (rect_size - small_rect_size) / 2, small_rect_size, small_rect_size))
    pygame.draw.rect(screen, green, (rect2_x + (rect_size - small_rect_size) / 2, rect2_y + (rect_size - small_rect_size) / 2, small_rect_size, small_rect_size))

    # Bildschirm aktualisieren
    pygame.display.flip()

# Pygame beenden
pygame.quit()


Woher ich das weiß:Studium / Ausbildung – Studium (M.Sc., Dr.) und mehrjährige Berufserfahrung