Simple game inspired by Uno with extra tweaks.
Written using C programming language and uses around 230 kilobytes of RAM.
The name UNO is a registered trademark of its respective owner. All rights to the name, logo, and related branding are fully reserved and protected under applicable trademark laws.
Latest release - v6.0.0
Uno rules
In short, this game uses official Uno rules with additional house rules.
Most notable differences are those that you don't have to say word uno when you have only one card left; and when +2 and +4 cards are played, next player is not skipped.
- Git
- Visual Studio with C/C++ development extension
- CMake
- json-c (x64 static version from vcpkg)
| Package: |
Command: |
| git |
| Debian | Arch Linux |
|---|
apt-get install git | pacman -S git |
|
| make |
| Debian | Arch Linux |
|---|
apt-get install make | pacman -S make |
|
| gcc |
| Debian | Arch Linux |
|---|
apt-get install gcc | pacman -S gcc |
|
| json-c |
| Debian | Arch Linux |
|---|
apt-get install libjson-c-dev | pacman -S json-c |
|
CMake
| Number: |
Step: |
Command: |
| 1 |
Clone a repository |
git clone https://github.com/Andrej123456789/uno_pp |
| 2 |
Enter the src folder |
cd uno_pp\src |
| 3 |
Create the build folder |
mkdir build |
| 4 |
Enter the build folder |
cd build |
| 5 |
Run CMake |
cmake .. -DVCPKG_ROOT="path_to_vcpkg" |
| 6 |
Open Visual Studio and build the solution |
|
| 7 |
Run the program located inside the Debug or Release folder |
.\Debug\uno_pp.exe or .\Release\uno_pp.exe |
| Number: |
Step: |
Command: |
| 8 |
Enter the client folder |
cd ..\..\client |
| 9 |
Create the build folder |
mkdir build |
| 10 |
Enter the build folder |
cd build |
| 11 |
Run CMake |
cmake .. |
| 12 |
Open Visual Studio and build the solution |
|
| 13 |
Run the program located inside the Debug or Release folder |
.\Debug\client_windows.exe or .\Release\client_windows.exe |
CMake without Visual Studio
Notice! You still need to have Visual Studio with C/C++ development extension installed. Run following commands inside Developer Command Prompt or Developer Powershell.
| Number: |
Step: |
Command: |
| 1 |
Clone a repository |
git clone https://github.com/Andrej123456789/uno_pp |
| 2 |
Enter the src folder |
cd uno_pp\src |
| 3 |
Create the build folder |
mkdir build |
| 4 |
Enter the build folder |
cd build |
| 5 |
Run CMake |
cmake -G "NMake Makefiles" -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DVCPKG_ROOT="path_to_vcpkg" .. |
| 6 |
Compile |
nmake |
| 7 |
Run the program |
.\uno_pp.exe |
| Number: |
Step: |
Command: |
| 8 |
Enter the client folder |
cd ..\..\client |
| 9 |
Create the build folder |
mkdir build |
| 10 |
Enter the build folder |
cd build |
| 11 |
Run CMake |
cmake -G "NMake Makefiles" -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl .. |
| 12 |
Compile |
nmake |
| 13 |
Run the program |
.\client_windows.exe |
Make
| Number: |
Step: |
Command: |
| 1 |
Clone a repository |
git clone https://github.com/Andrej123456789/uno_pp |
| 2 |
Enter the src directory |
cd uno_pp/src |
| 3 |
Compile |
make |
| 4 |
Run the program |
make run |
| Number: |
Step: |
Command: |
| 5 |
Enter the client directory |
cd ../client |
| 6 |
Compile |
make |
| 7 |
Run the program |
make run |
CMake
| Number: |
Step: |
Command: |
| 1 |
Clone a repository |
git clone https://github.com/Andrej123456789/uno_pp |
| 2 |
Enter the src directory |
cd uno_pp/src |
| 3 |
Create the build directory |
mkdir build |
| 4 |
Enter the build directory |
cd build |
| 5 |
Run CMake |
cmake .. |
| 6 |
Compile |
make |
| 7 |
Run the program |
./uno_pp |
| Number: |
Step: |
Command: |
| 8 |
Enter the client directory |
cd ..\..\client |
| 9 |
Create the build directory |
mkdir build |
| 10 |
Enter the build directory |
cd build |
| 11 |
Run CMake |
cmake .. |
| 12 |
Compile |
make |
| 13 |
Run the program |
./client_posix |
default.json:
{
"match_points": 250, // number of points required to win a match
"points_path": "settings/points.json", // path to the JSON file storing points
// from the current working directory
"players": 2, // number of players in the game [2, INT32_MAX>
"tweaks": [
{
"colors": true, // are colors enabled
"stacking": true, // is stacking allowed
"swap_card": true, // is swap card present
"seven_o": false // is SevenO house rule enabled
}
],
"network": [
{
"enabled": true, // is multiplayer enabled
"port": 5555 // port number
}
]
}
points.json:
// reset manually after finishing a match
// otherwise, don't change these values manually
{ "Player 0": 0, "Player 1": 0 }