GitPedia

Uno

UNO - Card Game with Java

From tk-codes·Updated May 25, 2026·View on GitHub·

**uno** is a UNO - Card Game with Java The project is written primarily in Java, distributed under the MIT License license, first published in 2015. Key topics include: card-game, ddd, game, java, school-project.

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

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from tk-codes/uno via the GitHub API.Last fetched: 6/13/2026