A fully functional command-line implementation of the classic card game UNO, written in modern C++.
This project simulates a turn-based UNO game for 2 or more players, featuring full game rules, deck shuffling, card logic, and turn rotation โ all with an emphasis on clean code structure and good memory management practices.
โ ๏ธ Full UNO rule implementation (skip, reverse, draw two, wild, wild draw four)- ๐ง Smart AI and player interactions
- ๐ฒ Randomized deck shuffle at each game start
- ๐ Robust turn management and card validation logic
- ๐ซ Rule enforcement (e.g., must say UNO before last card, penalties, etc.)
- ๐ฆ Clean and decoupled object-oriented design
- ๐งน Safe memory management using modern C++ features (smart pointers, RAII, deep x shallow copy)
- C++17 or later
- CMake (optional, if using a build system)
- An IDE like
Visual StudioorRider, or a C++ compiler likeg++orclang++
- Using IDE:
- Open the solution(.sln) file
- Run the project (F5) inside with the IDE Compiler
Using terminal:
g++ -std=c++17 -Wall -Wextra -o unoGame main.cpp
./unoGame-
Follow terminal prompts to choose players and draw cards.
-
Play continues clockwise unless reversed.
-
First player to empty their hand wins.
-
Special cards behave as per UNO rules.
-
You must yell UNO! befor throwing your penultimate card.

