Skip to content

Further ToDos #17

@tmrdlt

Description

@tmrdlt
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 {-# LANGUAGE are 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/#id page (🤔 not sure if useful at all. any information gain?)

DONE

REQUIREMENTS (Uni2Work)
  1. Webapplikation mit yesod
  2. 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.

  1. 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.

  1. Tests (?)
  2. AI/Automated Problem Solving

Das Thema KI / Automated Problem Solving ist des Weiteren nicht direkt ein Thema der funktionalen Programmierung.

UPDATED REQUIREMENTS
  1. TVars (nebenläufigkeit)

TVars decken ja eigentlich sogar auch Nebenläufiges Programmieren

  1. Lenses

Sie könnten noch ein paar Lenses für irgendwelche Datentypen (die sie ja wahrscheinlich sowieso haben) definieren und deren Verwendung demonstrieren.

  1. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions