Show the DDD driven modeling and what are the best practices and benefits of this approach. Strong OOP and SOLID guiddience in practice. How to fight with complexities and what is a change locallity.
- What is a model?
- What are the differences between a real-life model and a software model?
- What does the model mean?
- What is its place within the system?
- Does the model have behavior?
- Is primitive obsession always bad idea?
- ...
The game supports two-player duels. Players can fight across different spheras (each sphere defines the duel’s complexity and difficulty). Every player starts with Health and Damage Power.
To make fights more exciting, players can bring a deck of magical cards. Each player’s deck can be empty or filled with cards of different abilities:
- Health card — heals its owner.
- Fighting card — boosts the owner’s potential attack.
- Thorn card — damages its owner.
- Cursed card — places a curse on the opponent. The curse lasts for the entire fight (unless removed by a special card).
- Stealing card — allows a player to steal any card from the opponent.
The entire combat and turn system is driven by randomness and probability.
- Double knock-out — both players die.
- One player wins — the other is defeated.
- Tie — the duel ends in a draw.
For simplicity just one at the start of the project but ...
- Testing public API, not internal behavior (overspecification)
- Looks like production code
- Treated as production code
https://github.com/BenMorris/NetArchTest
https://stryker-mutator.io/docs/stryker-net/introduction/