-
Notifications
You must be signed in to change notification settings - Fork 0
Description
SPRINT GOAL ♦️
- Apply lenses to Data.matrix Feature/matrix lenses #28
- Use actual randomSeed (either via user input or generated) Allow user to choose random seed incl. fallback in backend #29
- Add ServerSideEvents [Tfoo, Chan] to update UI instantly 🗼 Add ServerSideEvents #31
- Human Readable unique GameID generieren (like HarmfulExpectationsCeaseParticularly) @timunkulus
- Generate games of predefined sizes / difficulty ⚡️
- Rework user interface (minimal and clean design language, remove boilerplate) Facelift /games #30 @ndrsllwngr @timunkulus
- Render digits using Attributes to remove flickering
- Add game instructions (controls)
- Go Back & Pause Button is just one
- Completed game history in colors
- BUG: It should be possible to put only as many flags as totally available @griase94
- BUG: Show elapsed time of finished games @timunkulus
- BUG: Pause a game that has no move yet will cause timeElapsed to be already counted @timunkulus
- On reset finished game: leave game in DB and create new gameID @griase94
- Update
README.md(incl. usage, topics and short description) and align with lecture topics 🔺 Further ToDos #17 (comment) - Refactor project, cleanup code, align routes, give variables suitable names [86bae6f]
- Format files with linter (e.g.
stylish-haskell -r -i src/*), be careful that{-# LANGUAGEare preserved - Test project
- game logic
- moves
- interactions & routing
- warnings
BACKEND
- Don't allow flagging of already revealed cells
- Error Handling in Requests und Logik (z.b. outOfBound) ❓
FRONTEND
- Landing page: Show total time of each game which is in final state (lost/won)
OPTIONAL
BUGS
- Performance Issues ❓
NOT DOING
- host project on heroku (https://github.com/mfine/heroku-buildpack-stack)
- UI - implement right-click instead of alt+left-click to flag a cell
- UI - add pressed state to unrevealed cell & face status
- Leaderboard (sorted by time, grouped by size+difficulty) would be possible, if we would allow players to enter username (similar to retro game machines)
- Add unit-tests
- Error handling on route responses (e.g. show not found page)
- Make use of advanced monads
- Game page: Show move history on
/game/#idpage (🤔 not sure if useful at all. any information gain?)
DONE
- View updated sich nach Move 32febbe
- Bomben durchstreichen wenn angeklickt und danach Spiel abschließen d0b3c7d
- Reveal All wenn alle Bomben geflaggt wurden d0b3c7d
- Spiel vorzeitig abschließbar machen können (Related Modify game logic to only set state to succeed if user has flagged all bombs and pushed button to end game #15)
- Zeit reinbringen und anzeigen
- Reset Route and action in front end
- Add reveal all button (makeMove)
- Stop timer if final state of game 10f2a25
- add face button in the middle with different emotions
- Pause Game Funktion (führt zu Startseite zurück)
- Reveal all button
- Anzahl an übrigen Flags anzeigen bc8684e
- Spiel in Datenbank als nur ein Eintrag abspeichern ed7b3d2
- Game Logik anpassen: Spiel ist erst gewonnen, wenn alle Flags verteilt wurden!
-
localhostis hardcoded at the moment, better solution? b2ac90b - Landing page: List all paused/ongoing games which are in the DB 2ee7cc3
- Lift state and only save paused or finished games in db In-memory mutable state for ongoing games #27
- Make use of lenses Feature/lenses #25
- Make use of TVars In-memory mutable state for ongoing games #27
- Warnings Fixen [cb3c361, Fix some warnings, add meaningful errors #26 ]
REQUIREMENTS (Uni2Work)
- Webapplikation mit
yesod - Monaden
Fortgeschrittenere Themen, welche sich zu Monaden anrechnen lassen sind z.B. Monad-Transformer, Lifting, fortgeschrittene Verwendungen von Zustandsmonaden, etc.
Beachten Sie bitte, dass zu einer zufriedenstellenden Anrechnung des Themas Monaden mehr als einfacher monadischer Code (z.B. nicht nur do-Notation) vorhanden sein muss.
- Datenbankanbindung (
Persistent)
zusätzlich eine Datenbankanbindung implementieren (z.B. mit Persistent), beispielsweise um Spielstände persistent zu speichern, um zu einem späteren Zeitpunkt mit dem Spiel fortfahren zu können.
- Tests (?)
AI/Automated Problem Solving
Das Thema KI / Automated Problem Solving ist des Weiteren nicht direkt ein Thema der funktionalen Programmierung.
UPDATED REQUIREMENTS
- TVars (nebenläufigkeit)
TVars decken ja eigentlich sogar auch Nebenläufiges Programmieren
- Lenses
Sie könnten noch ein paar Lenses für irgendwelche Datentypen (die sie ja wahrscheinlich sowieso haben) definieren und deren Verwendung demonstrieren.
- Unlösbare Probleme (State monade)
Die unlösbaren Probleme sind sicherlich auch ein guter Punkt, den Sie in der Abgabe ja kurz dokumentieren und begründen könnten (was geht da, warum nicht).