All Projects → tk-codes → uno

tk-codes / uno

Licence: MIT License
UNO - Card Game with Java

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to uno

eventsourcing-java-example
A simplified (in memory) example of Event Sourcing implementation for banking domain.
Stars: ✭ 83 (+18.57%)
Mutual labels:  ddd
triple-triad-godot
Re-implementation of Triple Triad from Final Fantasy VIII. Made with Godot 3
Stars: ✭ 61 (-12.86%)
Mutual labels:  card-game
slaytheweb
Slay the Web is a singleplayer, deck builder, roguelike card crawl game for the web based on Slay the Spire
Stars: ✭ 57 (-18.57%)
Mutual labels:  card-game
go-todo-app
Go + Angular Todo App
Stars: ✭ 21 (-70%)
Mutual labels:  ddd
hollywood
Hollywood-js is a Framework for building very modular and high scalable server side applications following CQRS (Command Query Responsibility Segregation) and enforcing IoC.
Stars: ✭ 20 (-71.43%)
Mutual labels:  ddd
Plastic
This project provides encapsulation of things like Domain, Application Rules, Business Rules or Business Logic in Application.
Stars: ✭ 30 (-57.14%)
Mutual labels:  ddd
order-taking
Idris version of Domain Modeling Made Functional Book.
Stars: ✭ 113 (+61.43%)
Mutual labels:  ddd
ftgogo
FTGOGO - event-driven architecture demonstration application using edat
Stars: ✭ 82 (+17.14%)
Mutual labels:  ddd
DDDToolbox
A set of Roslyn refactorings supporting DDD design
Stars: ✭ 31 (-55.71%)
Mutual labels:  ddd
PasswordSafe
Cross platform password manager.
Stars: ✭ 14 (-80%)
Mutual labels:  swing
Java-Swing-Examples
Java Swing code examples
Stars: ✭ 26 (-62.86%)
Mutual labels:  swing
spring-data-ldap
Repository abstraction for Spring LDAP
Stars: ✭ 53 (-24.29%)
Mutual labels:  ddd
NStore
Opinionated eventsourcing library
Stars: ✭ 81 (+15.71%)
Mutual labels:  ddd
rolling stock
A web app for the board game Rolling Stock
Stars: ✭ 14 (-80%)
Mutual labels:  card-game
Cart
No description or website provided.
Stars: ✭ 22 (-68.57%)
Mutual labels:  ddd
Wilson
ERP / CRM system for small to medium construction companies.
Stars: ✭ 84 (+20%)
Mutual labels:  ddd
teamo-ddd-example
Implementing Domain Driven Design in PHP using Laravel
Stars: ✭ 46 (-34.29%)
Mutual labels:  ddd
Sort-Algorithm-Visualiser
A sort algorithm visualisation GUI, created using Java and the Swing framework.
Stars: ✭ 58 (-17.14%)
Mutual labels:  swing
CQELight
CQELight is an entreprise grade extensible and customisable framework for creating software with CQRS, DDD & Event Sourcing patterns
Stars: ✭ 21 (-70%)
Mutual labels:  ddd
dddinaction
PHP implementation of the DDD in Practice Pluralsight course
Stars: ✭ 49 (-30%)
Mutual labels:  ddd

UNO - Card Game

Coverage Maintainability Rating

v2.0: Rebuilt the core game logic in domain-driven-design.

uno-ui Note: GUI is built merely to try out the core domain logic. It is not suitable for serious game. :)

Instructions

Run Application

Run the main method in the UnoApp class or use the following command in the terminal:

./gradlew run

Run Unit Tests

./gradlew test

Event Storming

event-storming.

Core Domain

The core game logic is built according to official uno rules.

Uno Card

Cards are value objects, i.e. immutable. The following card types are available in Uno:

  • Number Card
  • Skip Action Card
  • Reverse Action Card
  • Draw Two Action Card
  • Wild Color Card
  • Wild Draw Four Card

Initially wild cards don't have a color. When drawn, a new value object is created with the chosen color.

card-uml

Player

Player is an entity which contains a list of hand cards to play.

PlayerRoundIterator manages the players and switches turn as if the players are in a round table.

player-uml

Game

Game is the aggregate which maintains the state of players, draw pile and discard pile as the cards are played.

game-uml

Domain Events

Game aggregate produces domain events using DomainEventPublisher.

Subscribers can register for these events and handle them accordingly.

events-uml

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].