Bildschirmschoner: Tetris

  • Hallo Leute :)

    In der letzten Nacht hatte ich nicht besonders viel Schlaf. Nach einigen Stunden, in denen ich mich im Bett herumgewälzt habe, bin ich dann an den Computer gegangen und habe ein Codefragment vervollständigt, das schon länger hier herumgelegen hat: Mein Tetris-Bildschirmschoner :)


    Hier erstmal die Vorschau. Bitte lest auch die Anmerkungen unten. Wer aber nur den Download haben will, findet den ganz unten am Beitrag.



    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.



    (1) Natürlich sind wieder einige Abweichungen vom originalen Tetris in der Screensaver-Variante. Die vollständig ausgefüllten Zeilen werden nicht entfernt und die Tetrominos regnen nicht aus der Mitte des oberen Bildschirmrandes nach unten. Das ist aber kein Bug sondern ein Feature, denn:


    (1.1) Wenn die vollständigen Zeilen gelöscht würden, wäre der größte Teil des Bildschirms dauerhaft mit der Hintergrundfarbe Schwarz und das ist mindestens optisch unspektakulär.


    (1.2) Dass die Tetrominos aus dem horizontalen Bildschirmmitte nach unten fallen geht aus einem ähnlichen Grund wie bei (1.1) nicht: die Ecken oben rechts und oben links wären dauerhaft schwarz und das Bild eines komplett bunt ausgefüllten Bildschirms würde sich nie ergeben.


    Ähnlich wie mit dem Pacman-Bildschirmschoner beißen sich da die Spielregeln mit der Aufgabe des Bildschirmschoners und ich musste mit etwas "künstlerischer Freiheit" vom Original abweichen.


    (2) Das Feld bietet horizontal Platz für 50 Spalten Tetrominos (also 50 hochkant fallende I-Tetrominos). Die Kantenlänge der Rechtecke wird an die Auflösung des Computers angepasst. Meist ist Die Auflösung aber nicht durch 50 teilbar und ein Rand von 1, 2, 3, ... oder 49 Pixeln ist möglich. Damit ein Teil des Bildschirms nicht dauerhaft schwarz bleibt, ändert sich im Falle eines Randes das Alignment des Feldes am Bildschirms periodis bei jedem neubeginn der Simulation wie folgt: links+oben, rechts+oben, links+unten, rechts+unten. Es bleibt also kein Pixel des Bildschirms dauerhaft in der Hintergrundfarbe.



    (3) Mein Code ist sehr schmal. Ich habe in dieser Version nicht einmal 550 Zeilen gebraucht. Ein Konfigurations-Menü würde das Programm zwar unnötig aufplustern, wäre hier aber angemessen. Es gibt wirklich einige Dinge, die man in den Einstellungen dem Nutzer überlassen könnte. Meine ersten Ideen waren folgendes:


    (3.1) Farbe der Tetrominos

    (3.2) Geschwindigkeit

    (3.3) Hintergrundfarbe

    (3.4) Textur der Rechtecke, aus denen die Tetrominos bestehen


    Habe ich etwas vergessen?


    (4) Noch eine Frage zur Textur: Findet ihr die Rechtecke zu "flach"? Sollte ich noch etwas mehr 3D einbauen? Ich muss gestehen, ich mag die Optik so wie es gerade ist: Sieht aus wie ein Spiel aus den Frühen 90ern. Deswegen sind die Farben auch so schrill :)


    (5) Der Algorithmus, der die optimale Position für jedes neue Tetromino berechnet, ist zwar trivial aber trotzdem effizient. Es entstehen eigentlich nur Hohlräume, wenn eines der ersten Tetromino ein S- oder Z-Tetromino ist. Deswegen findet man diese Hohlräume meinst unten links am Bildschirm. Sollte ich in den Algorithmus ein "Schummeln" einbauen, sodass S/Z dort vermieden wird, wo es einen Hohlraum entstehen ließe? Also rein wegen der Optik wäre das vllt. ansprechender.



    Kritik, Vorschläge und Anregungen sind gern gesehen.


    Achja, nicht vergessen: .SCR-Datei und Code findet ihr hier:

    GitHub - sector0x1337/tetromino-screensaver
    Contribute to sector0x1337/tetromino-screensaver development by creating an account on GitHub.
    github.com

  • Eine Option dass es Lücken geben kann und sich Zeilen auflösen fände ich sogar noch authentischer.

    Meine Vintagerechner: XT (NEC V20) & Book8088 (v2, VGA) #-# Epson XT portable #-# HighScreen 286@16MHz #-# L&P 286-20MHz #-# Cyrix 386DRx²-33/66 #-# ESCOM Black Slim Am386DX@40MHz #-# SCT Proline Cyrix486DX2@66 #-# Cyrix 5x86@100 VIP #-# Libretto 50CT #-# && 1x Sockel 8 & 3x Sockel4 (60MHz + 66MHz)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!