initial monopoly test

This commit is contained in:
Adolfo Reyna
2026-01-31 09:45:40 -05:00
parent 3a1e278c4c
commit cad1aad2c8
15 changed files with 1152 additions and 4 deletions

56
games/monopoly/chance.h Normal file
View File

@@ -0,0 +1,56 @@
#ifndef CHANCE_H
#define CHANCE_H
typedef enum {
CHANCE_ADVANCE, // Move to a specific index or category
CHANCE_EARN, // Add money
CHANCE_SPEND, // Subtract money
CHANCE_SPEND_EACH_PLAYER, // Pay every other player
CHANCE_BACK, // Move back X spaces
CHANCE_JAIL, // Go to jail
CHANCE_JAIL_FREE, // Keep a get out of jail free card
CHANCE_REPAIRS // Pay per house/hotel
} ChanceType;
// Sentinel values for "nearest" targets
#define TARGET_NEAREST_UTILITY -1
#define TARGET_NEAREST_RAILROAD -2
typedef struct {
const char* description;
ChanceType type;
int value; // Used for index, amount, or spaces back
int value2; // Specifically for repairs (Hotel cost)
} ChanceCard;
#define CHANCE_DECK_SIZE 16
static const ChanceCard CHANCE_DECK[CHANCE_DECK_SIZE] = {
{"Advance to Go", CHANCE_ADVANCE, 0, 0},
{"Advance to Illinois Ave", CHANCE_ADVANCE, 24, 0},
{"Advance to nearest Utility. If unowned, buy it. If owned, pay 10x dice.", CHANCE_ADVANCE, TARGET_NEAREST_UTILITY, 0},
{"Advance to nearest Railroad. If unowned, buy it. If owned, pay twice rental.", CHANCE_ADVANCE, TARGET_NEAREST_RAILROAD, 0},
{"Advance to St. Charles Place if you pass Go, collect $200", CHANCE_ADVANCE, 11, 0},
{"Bank pays you dividend of $50", CHANCE_EARN, 50, 0},
{"Get out of Jail free", CHANCE_JAIL_FREE, 0, 0},
{"Go back 3 spaces", CHANCE_BACK, 3, 0},
{"Go directly to Jail", CHANCE_JAIL, 0, 0},
{"Make general repairs - $25 per house, $100 per hotel", CHANCE_REPAIRS, 25, 100},
{"Pay poor tax of $15", CHANCE_SPEND, 15, 0},
{"Take a trip to Reading Railroad", CHANCE_ADVANCE, 5, 0},
{"Take a walk on the Boardwalk", CHANCE_ADVANCE, 39, 0},
{"Elected chairman of the board pay each player $50", CHANCE_SPEND_EACH_PLAYER, 50, 0},
{"Your building loan matures collect $150", CHANCE_EARN, 150, 0},
{"You have won a crossword competition - collect $100", CHANCE_EARN, 100, 0}
};
#endif
/*
Implementation Tips for your main.c:
Handling "Nearest": When you draw a card with TARGET_NEAREST_UTILITY, use a loop starting from the player's current position to find the next index where MONOPOLY_BOARD[i].type == TILE_UTILITY.
The Repair Card: When the type is CHANCE_REPAIRS, you'll need to look at the player's owned properties and count how many houses/hotels they have (once you implement the building logic), then multiply by value (25) and value2 (100).
Shuffling: In C, you can shuffle the deck at the start of the game using a Fisher-Yates shuffle algorithm on an array of indices [0...15].
*/