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.
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.
| Package: | Command: | ||||
|---|---|---|---|---|---|
| git | 
  | 
||||
| make | 
  | 
||||
| gcc | 
  | 
||||
| json-c | 
  | 
Notice for Windows users! You only need to install CMake and Visual Studio with C/C++ development extension!
| 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 | 
| 5 | Enter the client directory | 
cd ../client | 
| 6 | Compile and run the client | gcc client_posix.c -o client_posix && ./client_posix <ip> <port> | 
Notice for Windows users! Install x64 static version of json-c from vcpkg and run CMake with the following argument: -DVCPKG_ROOT="path_to_vcpkg".
Notice for Windows users! Enter Developer Command Prompt and run the following command to compile and run the client: cl client_windows.c && ./client_windows <ip> <port>.
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
	"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 }