Skip to content
Snippets Groups Projects
Commit 260c2f18 authored by Kevin Hardt's avatar Kevin Hardt
Browse files

add report

parent 92fb1c25
No related merge requests found
# Projektbericht
## Übersicht
Dieses Projekt implementiert ein Tetris-Spiel in Haskell und nutzt die Graphics.Gloss-Bibliothek zum Rendern und Verarbeiten von Benutzereingaben. Das Spiel simuliert das klassische Tetris-Gameplay, einschließlich Tetromino-Manipulation, Rasterverwaltung und Punktevergabe.
## Funktionen
1. Zufällige Tetromino-Generierung: Das Spiel wird mit einem zufälligen Tetromino initialisiert und verwendet Haskells System.Random zur Generierung von Zufälligkeit. Die Funktion initTetromino wählt zufällig eine Tetromino-Art und -Rotation aus und weist ihm eine Anfangsposition zu. Der Tetromino-Typ unterstützt sieben Formen (I, O, T, J, L, S, Z), jede mit einer eigenen Basiskonfiguration. Die Funktion initWorld sät das Spiel mit diesem anfänglichen Tetromino und einem neuen Zufallszahlengenerator und sorgt so bei jeder neuen Spielsitzung für ein abwechslungsreiches Spielerlebnis.
2. Tetromino-Rotation: Die Tetromino-Rotation wird über den Rotationsdatentyp verwaltet und unterstützt vier Zustände: Null, Neunzig, Einhundertachtzig und Zweihundertsiebzig. Die Aufwärtspfeiltaste dreht die Tetrominos im Uhrzeigersinn. Die Funktion applyRotation passt die Tetromino-Positionen entsprechend ihrer aktuellen Rotation an. Rotationsänderungen werden in rotateTetromino behandelt, wo die Funktion nextRotation die Rotationszustände durchläuft. Dieses Rotationssystem ermöglicht die Manipulation der Tetrominos in verschiedenen Ausrichtungen, was für ein strategisches Gameplay unerlässlich ist.
3. Punktelogik: Das Punktesystem ist integraler Bestandteil des Gameplays und spiegelt die Leistung des Spielers wider. Punkte werden basierend auf der Anzahl der pro Aktualisierungszyklus gelöschten Linien vergeben. Die Funktion scoreForLines vergibt Punkte basierend auf der Anzahl der entfernten Linien, wobei die Belohnungen für das gleichzeitige Löschen mehrerer Linien steigen. Die Funktion clearCompletedLines entfernt vollständige Linien aus dem Raster und countCompletedLines berechnet die Anzahl der gelöschten Linien. Der Punktestand wird in der Funktion updateWorld aktualisiert und trägt zur Gesamtpunktzahl des Spielers bei, die während des Spiels angezeigt wird.
## Fazit
Diese Haskell-Tetris-Implementierung bietet ein grundlegendes Beispiel für die Spieleentwicklung in der funktionalen Programmierung. Es bietet zufällige Tetromino-Generierung, Rotationsmechanik und Punktevergabe und bietet so ein komplettes Spielerlebnis. Zukünftige Erweiterungen könnten erweiterte Funktionen wie Mehrspielermodi oder verbesserte Grafiken umfassen, die auf dieser robusten Kernimplementierung aufbauen.
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment