Hi and welcome to the event sourcing lab of 2023 (don't worry, there will be more in 2024!). Please read the instructions carefully (yes, that includes you Fredrik!).
- Clone this github repo.
- Run
mvn clean install
- Assemble the team
- Decide whether to implement single-round RPS, multi-round RPS or Mastermind.
- Note that the purpose of the lab is to implement an event-sourced domain model, so if you get bogged down with some game-specific details, move on to an easier project instead.
- The lab has two parts, remember? Do you really have enough time for the second part?
- Decide whether to use "functions-as-commands" or "commands-as-commands" (😉) and be prepared to furiously defend your decision.
- Implement and pay close attention to:
- Language
- Code quality
- Code readability
- Code testability (note that this lab is not about testing, but you should at least have an example of how you can play a complete game from start to finish)
- Make illegal states unrepresentable (as always!)
- When you feel you're ready, ping me.
- Bonus task: Implement a computer-simulated, commandline-based, opponent.