Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
830b1c2
chore: mac configuration
ethj0r Apr 16, 2026
e967aae
feat: add custom exception
ethj0r Apr 16, 2026
fa6df21
feat: add foundation enums and structs
ethj0r Apr 16, 2026
8f8184c
feat: update readme
ethj0r Apr 16, 2026
84e6a99
feats: base board and tile
MAJIIDMN Apr 20, 2026
89046da
feats: create base core, manager, and models/event
MAJIIDMN Apr 21, 2026
7779d0d
Add SFML3 scaffolding and build
ethj0r Apr 21, 2026
b812c81
Merge branch 'main' of github.com:Labpro-22/tugas-besar-1-bcc
ethj0r Apr 21, 2026
de04ad2
Move headers to include
ethj0r Apr 21, 2026
0b976dc
Feat: Initialize folder
BryannPPH Apr 21, 2026
c359ff7
feat: add headers
jsndwrd Apr 21, 2026
310d3d9
feat: implement header
jsndwrd Apr 21, 2026
b35b4aa
Merge pull request #1 from Labpro-22/feat/effects
jsndwrd Apr 21, 2026
0b053a7
feat: bank header
jsndwrd Apr 21, 2026
872207c
feat: money header
jsndwrd Apr 21, 2026
8cfb1f2
feat: player header
jsndwrd Apr 21, 2026
35f22cd
feat: implement bank
jsndwrd Apr 21, 2026
bdd719e
feat: implement player class
jsndwrd Apr 21, 2026
3c5e02d
Merge pull request #2 from Labpro-22/feat/money-player-bank
jsndwrd Apr 21, 2026
806a0c3
Feat: Card class
BryannPPH Apr 21, 2026
652feb2
Feat: Action Card class
BryannPPH Apr 21, 2026
c309968
Feat: Result Card class
BryannPPH Apr 21, 2026
82f0338
Feat: Card System class
BryannPPH Apr 21, 2026
78179ee
Feat: Chance Card class
BryannPPH Apr 21, 2026
82ff496
Feat: Community Chest Card class
BryannPPH Apr 21, 2026
282e8cd
Feat: Effect class
BryannPPH Apr 21, 2026
53d2087
Feat: Skill card class
BryannPPH Apr 21, 2026
677b9b6
Feat: Add Chance card type 1 class
BryannPPH Apr 21, 2026
1182b0c
Feat: Add Chance card type 2 class
BryannPPH Apr 21, 2026
3b1e9c6
Feat: Add Chance card type 3 class
BryannPPH Apr 21, 2026
5fbf637
Feat: Add Card deck template
BryannPPH Apr 21, 2026
7ed3b70
Feat: Add Community Chest card type 1 class
BryannPPH Apr 21, 2026
a597007
Feat: Add Community Chest card type 2 class
BryannPPH Apr 21, 2026
b8ab3b9
Feat: Add Community Chest card type 3 class
BryannPPH Apr 21, 2026
d985098
Feat: Add Demolition skill class
BryannPPH Apr 21, 2026
1c43f60
Feat: Add Discount skill class
BryannPPH Apr 21, 2026
307c0a1
Feat: Add Lasso skill class
BryannPPH Apr 21, 2026
87a39c0
Feat: Add Move skill class
BryannPPH Apr 21, 2026
8146aaa
Feat: Add Shield skill class
BryannPPH Apr 21, 2026
d6f11a4
Feat: Add Teleport skill class
BryannPPH Apr 21, 2026
1c93139
Merge pull request #3 from Labpro-22/feat/card
BryannPPH Apr 21, 2026
b5b93bd
refactor: converts structs into classes
jsndwrd Apr 22, 2026
6057fb0
refactor: converts festival related struct into class
jsndwrd Apr 22, 2026
9cc82e5
refactor: converts struct to classes
jsndwrd Apr 22, 2026
37f1aa1
refactor: structs to classes (if attr private then have to create pub…
jsndwrd Apr 22, 2026
7a2826f
Merge pull request #4 from Labpro-22/refactor/classes
jsndwrd Apr 22, 2026
774201c
feats: model (dice dan game event)
MAJIIDMN Apr 22, 2026
e3979b3
feat : command fitur
MAJIIDMN Apr 22, 2026
87688ff
feat: create config load
MAJIIDMN Apr 22, 2026
a1c8939
feats: game engine
MAJIIDMN Apr 22, 2026
3ffe6bf
feat: create logger file
MAJIIDMN Apr 22, 2026
15884bb
feats: game state file
MAJIIDMN Apr 22, 2026
abda08f
feats: create manager fitur
MAJIIDMN Apr 22, 2026
9a563ce
docs : update gitignore
MAJIIDMN Apr 22, 2026
1fcaecb
Merge branch 'main' of https://github.com/Labpro-22/tugas-besar-1-bcc…
MAJIIDMN Apr 22, 2026
6b9a59b
chore: remove duplicated Effect.hpp
jsndwrd Apr 22, 2026
62b149f
Merge branch 'main' of https://github.com/Labpro-22/tugas-besar-1-bcc…
MAJIIDMN Apr 22, 2026
60dd8ab
Remove struct usage and duplicate Effect
ethj0r Apr 22, 2026
8c82e80
Merge branch 'main' of github.com:Labpro-22/tugas-besar-1-bcc into fe…
ethj0r Apr 22, 2026
4453f4f
Feat: add some stuff to player class
BryannPPH Apr 22, 2026
a48d9f1
Feat: add card system class
BryannPPH Apr 22, 2026
d6e73eb
Fix: class
BryannPPH Apr 22, 2026
dafef69
Feat: add implementation to shield card
BryannPPH Apr 22, 2026
914a669
Fix: adjust bank conditions
BryannPPH Apr 22, 2026
be5e57a
Feat: add dtor and cctor
BryannPPH Apr 22, 2026
0ca06e0
Feat: combine shield card and shield effect
BryannPPH Apr 22, 2026
9de30f3
Merge pull request #5 from Labpro-22/feat/card
BryannPPH Apr 22, 2026
b674285
feat: tile base class
AthillaZaidan Apr 22, 2026
db08e39
feat: property tile class
AthillaZaidan Apr 22, 2026
34be70f
feat: street tile with buildings
AthillaZaidan Apr 22, 2026
7ebb268
feat: railroad tile rent
AthillaZaidan Apr 22, 2026
29c528f
feat: utility tile rent
AthillaZaidan Apr 22, 2026
c4e69cd
feat: special tiles family
AthillaZaidan Apr 22, 2026
652b739
feat: action tiles family
AthillaZaidan Apr 22, 2026
20bcb1c
feat: tax and festival tiles
AthillaZaidan Apr 22, 2026
aadcf20
feat: color group monopoly
AthillaZaidan Apr 22, 2026
c31187e
feat: board model
AthillaZaidan Apr 22, 2026
d22d61e
TIle, Board, itulah intinya bang
AthillaZaidan Apr 22, 2026
e6a6304
feat: implement game state with turn tracking and snapshots
MAJIIDMN Apr 22, 2026
b850d93
feat: implement dual dice rolling logic
MAJIIDMN Apr 22, 2026
56adb32
feat: add game configurations for taxes and turn limits
MAJIIDMN Apr 22, 2026
4cfeeac
feat: implement type-safe event bus and typed events
MAJIIDMN Apr 22, 2026
ddd5808
feat: implement transaction logger that observes game events
MAJIIDMN Apr 22, 2026
a9f49f6
feat: implement command parser registry and polymorphic interface
MAJIIDMN Apr 22, 2026
186ab46
feat: add standard roll_dice and end_turn concrete commands
MAJIIDMN Apr 22, 2026
c99b299
feat: complete game engine orchestration and game loop logic
MAJIIDMN Apr 22, 2026
44dc98f
chore: bersih bersih
AthillaZaidan Apr 22, 2026
d6b6a4f
chore: update gitignore for build output configuration
MAJIIDMN Apr 22, 2026
1bcd195
Merge pull request #6 from Labpro-22/feat/tile
BryannPPH Apr 22, 2026
1b4ecb7
Merge branch 'main' of https://github.com/Labpro-22/tugas-besar-1-bcc…
MAJIIDMN Apr 22, 2026
87b2946
Fix: Wrong number for max cards
BryannPPH Apr 22, 2026
19df280
Feat: add return card to deck and shuffle
BryannPPH Apr 22, 2026
1ebe37f
Feat: add card system implementation
BryannPPH Apr 22, 2026
037f17b
Merge pull request #7 from Labpro-22/feat/card
BryannPPH Apr 22, 2026
c9c4ca7
Feat: add config
BryannPPH Apr 22, 2026
fd64f8e
Feat: add clear function to board
BryannPPH Apr 22, 2026
2deca45
Feat: console input class
BryannPPH Apr 22, 2026
699e551
Feat: add get wealth function
BryannPPH Apr 22, 2026
e99563c
Feat: main.cpp dummy runner
BryannPPH Apr 22, 2026
0f3f271
Feat: main.cpp dummy runner
BryannPPH Apr 22, 2026
c22d2a4
Feat: game config load function
BryannPPH Apr 22, 2026
3f9ad94
Feat: game engine addition
BryannPPH Apr 22, 2026
af58efe
feat: add AssetManager with font/texture cache and tile assets
ethj0r Apr 22, 2026
6f3d8a9
feat: tile texture rendering with rotation and color strips
ethj0r Apr 22, 2026
390cd35
feat: landing page and setup screen state machine
ethj0r Apr 22, 2026
294f929
feat: in-game HUD panels (left, right, bottom strip)
ethj0r Apr 22, 2026
896583a
feat: integrate Figma asset PNGs into GUI panels
ethj0r Apr 23, 2026
43454ed
Refactor GUI menus and globe background styling
ethj0r Apr 23, 2026
254cf66
Feat: game logic player
jsndwrd Apr 23, 2026
7437cca
Feat: Add festival effect snapshot implementation and festival manager
jsndwrd Apr 23, 2026
7d0e383
Feat: Add some turn manager for player availability
jsndwrd Apr 23, 2026
613e307
Feat: Add bancrupcy logic and exception for game engine
jsndwrd Apr 23, 2026
efd14c0
Feat: Add repository for parsing stuff from config
jsndwrd Apr 23, 2026
116aab6
Feat: Add repository for parsing stuff from config 2
jsndwrd Apr 23, 2026
cb28c80
add include to player
jsndwrd Apr 23, 2026
523d4b8
fix: forgot to save
jsndwrd Apr 23, 2026
d4eab9a
Merge pull request #8 from Labpro-22/dev
jsndwrd Apr 23, 2026
58f1836
Merge branch 'dev' into feat/gui and fix AuctionDecision type mismatch
ethj0r Apr 23, 2026
0225551
chore: fix lil bugs
ethj0r Apr 23, 2026
fd8ac17
Merge branch 'feat/gui' into main
BryannPPH Apr 23, 2026
7dee353
Merge pull request #9 from Labpro-22/main
BryannPPH Apr 23, 2026
15adb39
Feat: Add computer controller
BryannPPH Apr 23, 2026
9aeec8a
Fix: explicit type at human controller
BryannPPH Apr 23, 2026
2c4a441
Feat: add logics to console
BryannPPH Apr 23, 2026
c18b178
feat(gui): in-game layout, text wrapping, prompt overlay, and engine …
ethj0r Apr 23, 2026
d8a1e94
feat(gui): sync dice state, game over screen, prompt overlay
ethj0r Apr 23, 2026
d470d7e
Merge pull request #10 from Labpro-22/feat/gui
ethj0r Apr 23, 2026
7128425
fix: remove unused variables causing build warnings
ethj0r Apr 23, 2026
29693eb
fix(game-loop): remove 2-frame command delay, clean state checks
ethj0r Apr 23, 2026
ec70f0c
feat(gui): dice roll animation with 1.2s cycle
ethj0r Apr 23, 2026
621c1bb
feat(gui): property buy prompt card overlay
ethj0r Apr 23, 2026
3033e2c
feat(gui): save/load buttons, end turn, and status toast
ethj0r Apr 23, 2026
c1301bc
fix(gui): populate GameStateView tiles from Board so textures load
ethj0r Apr 23, 2026
81190ac
feat(gui): maximize board size, reduce tile texture padding, larger t…
ethj0r Apr 23, 2026
152324b
fix(gui): pixel-perfect tile rendering
ethj0r Apr 23, 2026
b1fc11c
docs: update README with SFML build steps and feature list
ethj0r Apr 23, 2026
1c935d8
revert README to original version
ethj0r Apr 23, 2026
35c4200
fix: minor window bugs
ethj0r Apr 24, 2026
84f2bd0
Merge branch 'main' into feat/comp
BryannPPH Apr 24, 2026
0c0b164
Merge pull request #11 from Labpro-22/feat/comp
BryannPPH Apr 24, 2026
3baebd3
REFACTOR: change to raylib
BryannPPH Apr 24, 2026
e9559a3
Feat: add board
BryannPPH Apr 24, 2026
1919a42
Feat: gui implementation
BryannPPH Apr 24, 2026
0c2a129
Feat: change background
BryannPPH Apr 24, 2026
229c309
Feat: add stopwatch
BryannPPH Apr 24, 2026
ca387f7
feat: board configs 20-28
AthillaZaidan Apr 24, 2026
a20d104
feat: board configs 32-40
AthillaZaidan Apr 24, 2026
39bc294
feat: board configs 44-52
AthillaZaidan Apr 24, 2026
2fd0066
feat: board configs 56-60
AthillaZaidan Apr 24, 2026
55cbcbf
feat: dynamic board builder
AthillaZaidan Apr 24, 2026
88b2881
refactor: remove board size const
AthillaZaidan Apr 24, 2026
de6cc82
feat: wire board size selector
AthillaZaidan Apr 24, 2026
fe8e077
feat: save board size
AthillaZaidan Apr 24, 2026
c656c24
test: verify dynamic board
AthillaZaidan Apr 24, 2026
4ea2331
fix: correct corners for board 20
AthillaZaidan Apr 24, 2026
d1f1bae
fix: correct corners for board 24
AthillaZaidan Apr 24, 2026
caa3c61
fix: correct corners for board 28
AthillaZaidan Apr 24, 2026
ea317bb
fix: correct corners for board 32
AthillaZaidan Apr 24, 2026
6a9eb9a
fix: correct corners for board 36
AthillaZaidan Apr 24, 2026
33c7cc2
fix: correct corners for boards 52, 56, 60
AthillaZaidan Apr 24, 2026
a6fcf11
fix: regenerate board configs for 20, 24, 28 with unique tiles and co…
AthillaZaidan Apr 24, 2026
54d0fd9
fix: regenerate board configs for 32, 36, 40 with unique tiles and co…
AthillaZaidan Apr 24, 2026
041da29
fix: regenerate board configs for 44, 48, 52 with unique tiles and co…
AthillaZaidan Apr 24, 2026
4608f2f
fix: regenerate board configs for 56, 60 with unique tiles and correc…
AthillaZaidan Apr 24, 2026
297b00a
fix: correct aksi kinds for corner tiles in boards 20, 24, 28
AthillaZaidan Apr 24, 2026
b449c1f
fix: correct aksi kinds for corner tiles in boards 32, 36, 40
AthillaZaidan Apr 24, 2026
445f013
fix: correct aksi kinds for corner tiles in boards 44, 48, 52
AthillaZaidan Apr 24, 2026
e684e45
fix: correct aksi kinds for corner tiles in boards 56, 60
AthillaZaidan Apr 24, 2026
6e8b972
fix: balance color groups for boards 20, 24, 28
AthillaZaidan Apr 24, 2026
0116655
fix: balance color groups for boards 32, 36, 40
AthillaZaidan Apr 24, 2026
eb40c78
merge branch
BryannPPH Apr 24, 2026
9ffb446
Fix: fix bug implementation
BryannPPH Apr 25, 2026
18e8db9
feat : game app orchestration
MAJIIDMN Apr 26, 2026
75f517d
feat : basic command delegation
MAJIIDMN Apr 26, 2026
0d394c3
feat : aturan giliran dan kartu engine
MAJIIDMN Apr 26, 2026
f96a542
feat : snapshot state properti festival
MAJIIDMN Apr 26, 2026
96b0059
feat : prompt kartu detail interaktif
MAJIIDMN Apr 26, 2026
b28c988
feat : popup scroll dan inspeksi properti pemain
MAJIIDMN Apr 26, 2026
faf6169
Revise README with project details and remove comments
BryannPPH Apr 26, 2026
26b1d49
Update README
BryannPPH Apr 26, 2026
47f7b81
Add key features section to README
BryannPPH Apr 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
*.o
*.obj
build/
build-*/
cmake/
obj/
bin/

Expand Down Expand Up @@ -42,3 +44,16 @@ bin/

# debug information files
*.dwo

# mac type shi
*.DS_Store

#other files
*.log
*.tmp
*.bak
*.pdf

# Docs / Specs (should not be committed)
*.pdf
OOPClassDesign.md
49 changes: 49 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
cmake_minimum_required(VERSION 3.16)

project(NIMONSPOLY VERSION 0.1.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# Output to ./bin (kept consistent across platforms)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")

# Multiconfig generators (Visual Studio/Xcode) use per-config output dirs.
if(CMAKE_CONFIGURATION_TYPES)
foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${cfg}" cfg_upper)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${cfg_upper} "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${cfg_upper} "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${cfg_upper} "${CMAKE_SOURCE_DIR}/bin")
endforeach()
endif()

# Sources
file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/src/*.cpp"
)

add_executable(game ${PROJECT_SOURCES})

target_include_directories(game PRIVATE "${CMAKE_SOURCE_DIR}/include")

if(MSVC)
target_compile_options(game PRIVATE /W4)
else()
target_compile_options(game PRIVATE -Wall -Wextra)
endif()

find_package(PkgConfig REQUIRED)
pkg_check_modules(RAYLIB REQUIRED IMPORTED_TARGET raylib)
target_link_libraries(game PRIVATE PkgConfig::RAYLIB)
target_compile_definitions(game PRIVATE NIMONSPOLY_ENABLE_RAYLIB=1)

add_custom_target(run
COMMAND $<TARGET_FILE:game>
DEPENDS game
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
)
Binary file added Layout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Layout2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.PHONY: all build configure run clean

BUILD_DIR := build
GAME_BIN := bin/game

all: build

configure:
cmake -S . -B $(BUILD_DIR)

build: configure
cmake --build $(BUILD_DIR)

run: build
./$(GAME_BIN)

clean:
rm -rf $(BUILD_DIR) $(GAME_BIN)
138 changes: 135 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,136 @@
[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/b842RB8g)
# Tugas Besar 1 IF2010 Pemrograman Berorientasi Objek
# NIMONSPOLY

Project Structure ini hanyalah referensi, Anda dapat menyesuaikannya dengan kebutuhan tim Anda
<p align="center">
<img src="assets/bg/GameView.png" width="500"/>
</p>

## IF2010 Object Oriented Programming
NIMONSPOLY is a C++ Monopoly-inspired board game project developed with a strong Object-Oriented Programming approach to model the game’s core components in a modular and maintainable way, including players, boards, tiles, properties, cards, transactions, turn management, configuration handling, and save/load functionality. The game supports interactive gameplay through features such as property purchasing and auctions, rent payments, taxes, jail mechanics, Chance and Community Chest cards, skill cards, festival effects, bankruptcy handling, and winner calculation based on the final game state. In addition to the command-line interface, NIMONSPOLY includes a Raylib-based graphical user interface that visualizes the game board, player status, real-time action logs, integrated input prompts, dice animations, and direct interactions with tiles and owned properties. The project is designed for extensibility through clear class responsibility separation, inheritance and polymorphism in the tile and card systems, external configuration files, and support for flexible board layouts.

## Key Features
- **Monopoly-style gameplay**
NIMONSPOLY provides a Monopoly-inspired gameplay system with property tiles, tax tiles, card tiles, jail mechanics, festivals, special events, and player-to-player economic interactions.

- **Human and bot players**
The game supports both human players and computer-controlled bot players, allowing matches to be played with different combinations of participants.

- **Dynamic board configuration**
Players can choose different board sizes before starting the game. The board can be configured from 20 to 60 tiles, with each size using its own layout and property configuration.

- **External game configuration**
Game data is loaded from external configuration files, including board layout, property data, railroad data, utility data, tax rules, and other game settings. This makes the gameplay easier to modify without changing the source code.

- **Property and economy system**
NIMONSPOLY includes a complete property ownership system, including buying properties, paying rent, mortgaging, unmortgaging, building houses, upgrading to hotels, auctions, asset liquidation, and bankruptcy handling.

- **Tax and payment mechanics**
The game includes several economic mechanics such as PPH tax, PBM tax, GO salary, rent calculation, rent multipliers, and player balance management.

- **Card system**
The card system consists of Chance Cards, Community Chest Cards, and Skill Cards. Each card type provides different effects that can influence player movement, money, property ownership, or game strategy.

- **Skill card interactions**
Skill Cards introduce special actions such as teleportation, discount effects, shield protection, demolition, lasso effects, and movement manipulation. These cards add more strategic choices during gameplay.

- **Festival mechanic**
The Festival mechanic allows selected properties to receive temporary rent multipliers. This creates additional strategy around property ownership and timing.

- **Save and load system**
NIMONSPOLY supports saving and loading the full game state, allowing players to continue a previous game session.

- **Transaction and action log**
The game records important transactions and actions during gameplay, such as property purchases, rent payments, tax payments, auctions, card effects, and bankruptcy events.

- **Raylib-based graphical interface**
The game includes a graphical user interface built with Raylib. The interface displays the board, player information, property cards, prompts, action logs, dice results, and other gameplay information in a visual layout.

- **Interactive board and tile details**
Tiles on the board can be clicked directly to show detailed information, including tile name, code, type, price, owner, mortgage status, rent table, building costs, and active festival effects.

- **Dice animation and integrated prompts**
Dice rolls are shown with an animation overlay, while player decisions such as buying property, joining auctions, selecting cards, and confirming actions are handled through an integrated prompt panel.

- **Player and asset panels**
The interface provides player information, owned property cards, asset indicators, active effects, and real-time status updates. Players can inspect their own assets or view other players’ properties during the game.

- **Responsive in-game layout**
The GUI layout adjusts based on the current window size, keeping the board, panels, logs, and controls readable across different screen dimensions.

## Meet the developers – [BCC] BurntCheesecake

Made Branenda Jordhy<br>
13524026<br>
[GitHub Account](https://github.com/ethj0r)<br>

Muhammad Nur Majiid<br>
13524028<br>
[GitHub Account](https://github.com/MAJIIDMN)<br>

Jason Edward Salim<br>
13524034<br>
[GitHub Account](https://github.com/jsndwrd)<br>

Bryan Pratama Putra Hendra<br>
13524067<br>
[GitHub Account](https://github.com/Bryannpph)<br>

Athilla Zaidan Zidna Fann<br>
13524068<br>
[GitHub Account](https://github.com/AthillaZaidan)<br>

## Directory

1. `config/`: game configuration files.
2. `data/`: runtime data (if needed).
3. `include/`: header files (`.hpp`).
4. `src/`: source files (`.cpp`).
5. `build/`: CMake build directory (generated).
6. `bin/`: executable output directory (generated).
7. `CMakeLists.txt`: CMake build configuration.
8. `README.md`: project overview.

## Requirements

- CMake (>= 3.16 recommended).
- A C++17 compiler (`clang++`, `g++`, or MSVC).
- Raylib.

## Instructions

### Installation

Make sure you have a C++17 compiler and CMake installed.

Install Raylib:
- macOS (Homebrew): `brew install raylib`

### Configure & Build

```bash
cmake -S . -B build
cmake --build build
```

Output:
- Linux/macOS: `bin/game`
- Windows: `bin/game.exe`

### Run

```bash
./bin/game
```

(Alternative)

```bash
cmake --build build --target run
```

### Clean

Delete the build output directories:
- `build/`
- `bin/`

GUI is always enabled. There is no CLI runtime mode.
Binary file added assets/bg/Globe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/bg/GlobeWShadow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/bg/Title.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/btn/ChevronBack.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/btn/EmptyRectBtn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/btn/EmptySquareBtn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/card/GameLogCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/card/GameSummaryCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/card/PlayerCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/card/RectCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/card/RectEmptyCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/card/SquareCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/card/YourPropertyCard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/cruiser_blue.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/cruiser_gray.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/cruiser_green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/cruiser_red.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/cruiser_yellow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/rocket_blue.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/rocket_gray.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/rocket_green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/rocket_red.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/rocket_yellow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/components/characters/shuttle_blue.png
Binary file added assets/components/characters/shuttle_gray.png
Binary file added assets/components/characters/shuttle_green.png
Binary file added assets/components/characters/shuttle_red.png
Binary file added assets/components/characters/shuttle_yellow.png
Binary file added assets/components/characters/ufo_blue.png
Binary file added assets/components/characters/ufo_gray.png
Binary file added assets/components/characters/ufo_green.png
Binary file added assets/components/characters/ufo_red.png
Binary file added assets/components/characters/ufo_yellow.png
Binary file added assets/components/houses/hotel_blue.png
Binary file added assets/components/houses/hotel_green.png
Binary file added assets/components/houses/hotel_red.png
Binary file added assets/components/houses/hotel_yellow.png
Binary file added assets/components/houses/house_blue.png
Binary file added assets/components/houses/house_green.png
Binary file added assets/components/houses/house_red.png
Binary file added assets/components/houses/house_yellow.png
Binary file added assets/components/tile/chance.png
Binary file added assets/components/tile/community_chest.png
Binary file added assets/components/tile/electricity.png
Binary file added assets/components/tile/festival.png
Binary file added assets/components/tile/free_parking.png
Binary file added assets/components/tile/go.png
Binary file added assets/components/tile/go_to_jail.png
Binary file added assets/components/tile/jail_just_visiting.png
Binary file added assets/components/tile/railroad.png
Binary file added assets/components/tile/tax.png
Binary file added assets/components/tile/water_works.png
Binary file added assets/fonts/GemunuLibre/GemunuLibre-Bold.ttf
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added assets/fonts/GemunuLibre/GemunuLibre-Light.ttf
Binary file not shown.
Binary file added assets/fonts/GemunuLibre/GemunuLibre-Medium.ttf
Binary file not shown.
Binary file added assets/fonts/GemunuLibre/GemunuLibre-Regular.ttf
Binary file not shown.
Binary file not shown.
Binary file added assets/fonts/Hahmlet/hahmlet-bold.ttf
Binary file not shown.
Binary file added assets/tiles/DNU.png
Binary file added assets/tiles/FES.png
Binary file added assets/tiles/KSP.png
Binary file added assets/tiles/PBM.png
Binary file added assets/tiles/PPH.png
Binary file added assets/tiles/railroad/GBR.png
Binary file added assets/tiles/railroad/GUB.png
Binary file added assets/tiles/railroad/STB.png
Binary file added assets/tiles/railroad/TGU.png
Binary file added assets/tiles/special/BBP.png
Binary file added assets/tiles/special/GO.png
Binary file added assets/tiles/special/PEN.png
Binary file added assets/tiles/special/PPJ.png
Binary file added assets/tiles/utility/PAM.png
Binary file added assets/tiles/utility/PLN.png
10 changes: 10 additions & 0 deletions config/20/aksi.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
ID KODE NAMA JENIS_PETAK WARNA
1 GO Petak_Mulai go DEFAULT
2 DNU1 Dana_Umum COMMUNITY DEFAULT
3 PPH1 Pajak_Penghasilan PAJAK DEFAULT
4 PEN Penjara jail DEFAULT
5 FES1 Festival FESTIVAL DEFAULT
6 BBP Bebas_Parkir free_parking DEFAULT
7 DNU2 Dana_Umum COMMUNITY DEFAULT
8 PPJ Petak_Pergi_ke_Penjara go_to_jail DEFAULT
9 KSP1 Kesempatan CHANCE DEFAULT
20 changes: 20 additions & 0 deletions config/20/board.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
GO
GRT
DNU1
TSK
PPH1
PEN
GBR
BGR
FES1
BKS
BBP
MGL
SOL
DNU2
MAL
PPJ
SBY
PLB
PKB
KSP1
12 changes: 12 additions & 0 deletions config/20/property.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
ID KODE NAMA JENIS WARNA HARGA_LAHAN NILAI_GADAI UPG_RUMAH UPG_HT RENT_L0 RENT_L1 RENT_L2 RENT_L3 RENT_L4 RENT_L5
1 GRT GARUT STREET COKLAT 60 40 20 50 2 10 30 90 160 250
2 TSK TASIKMALAYA STREET COKLAT 60 40 50 50 4 20 60 180 320 450
3 GBR STASIUN_GAMBIR RAILROAD DEFAULT 200 100
4 BGR BOGOR STREET BIRU_MUDA 100 80 20 50 6 30 90 270 400 550
5 BKS BEKASI STREET BIRU_MUDA 120 90 20 50 8 40 100 300 450 600
6 MGL MAGELANG STREET MERAH_MUDA 140 100 100 100 10 50 150 450 625 750
7 SOL SOLO STREET MERAH_MUDA 140 100 100 100 10 50 150 450 625 750
8 MAL MALANG STREET ORANGE 180 135 100 100 14 70 200 550 750 950
9 SBY SURABAYA STREET ORANGE 200 150 100 100 16 80 220 600 800 1000
10 PLB PALEMBANG STREET KUNING 260 200 150 150 22 110 330 800 975 1150
11 PKB PEKANBARU STREET KUNING 260 210 150 150 22 110 330 800 975 1150
11 changes: 11 additions & 0 deletions config/24/aksi.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
ID KODE NAMA JENIS_PETAK WARNA
1 GO Petak_Mulai go DEFAULT
2 DNU1 Dana_Umum COMMUNITY DEFAULT
3 PPH1 Pajak_Penghasilan PAJAK DEFAULT
4 PEN Penjara jail DEFAULT
5 FES1 Festival FESTIVAL DEFAULT
6 BBP Bebas_Parkir free_parking DEFAULT
7 DNU2 Dana_Umum COMMUNITY DEFAULT
8 PPJ Petak_Pergi_ke_Penjara go_to_jail DEFAULT
9 KSP1 Kesempatan CHANCE DEFAULT
10 KSP2 Kesempatan CHANCE DEFAULT
24 changes: 24 additions & 0 deletions config/24/board.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
GO
GRT
DNU1
TSK
PPH1
GBR
PEN
BGR
FES1
DPK
BKS
MGL
BBP
SOL
MAL
DNU2
SMG
SBY
PPJ
MKS
KSP1
BLP
STB
KSP2
15 changes: 15 additions & 0 deletions config/24/property.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
ID KODE NAMA JENIS WARNA HARGA_LAHAN NILAI_GADAI UPG_RUMAH UPG_HT RENT_L0 RENT_L1 RENT_L2 RENT_L3 RENT_L4 RENT_L5
1 GRT GARUT STREET COKLAT 60 40 20 50 2 10 30 90 160 250
2 TSK TASIKMALAYA STREET COKLAT 60 40 50 50 4 20 60 180 320 450
3 GBR STASIUN_GAMBIR RAILROAD DEFAULT 200 100
4 BGR BOGOR STREET BIRU_MUDA 100 80 20 50 6 30 90 270 400 550
5 DPK DEPOK STREET BIRU_MUDA 100 80 20 50 6 30 90 270 400 550
6 BKS BEKASI STREET BIRU_MUDA 120 90 20 50 8 40 100 300 450 600
7 MGL MAGELANG STREET MERAH_MUDA 140 100 100 100 10 50 150 450 625 750
8 SOL SOLO STREET MERAH_MUDA 140 100 100 100 10 50 150 450 625 750
9 MAL MALANG STREET ORANGE 180 135 100 100 14 70 200 550 750 950
10 SMG SEMARANG STREET ORANGE 180 140 100 100 14 70 200 550 750 950
11 SBY SURABAYA STREET ORANGE 200 150 100 100 16 80 220 600 800 1000
12 MKS MAKASSAR STREET MERAH 220 175 150 150 18 90 250 700 875 1050
13 BLP BALIKPAPAN STREET MERAH 220 175 150 150 18 90 250 700 875 1050
14 STB STASIUN_BANDUNG RAILROAD DEFAULT 200 100
12 changes: 12 additions & 0 deletions config/28/aksi.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
ID KODE NAMA JENIS_PETAK WARNA
1 GO Petak_Mulai go DEFAULT
2 DNU1 Dana_Umum COMMUNITY DEFAULT
3 PPH1 Pajak_Penghasilan PAJAK DEFAULT
4 PEN Penjara jail DEFAULT
5 FES1 Festival FESTIVAL DEFAULT
6 BBP Bebas_Parkir free_parking DEFAULT
7 DNU2 Dana_Umum COMMUNITY DEFAULT
8 FES2 Festival FESTIVAL DEFAULT
9 PPJ Petak_Pergi_ke_Penjara go_to_jail DEFAULT
10 KSP1 Kesempatan CHANCE DEFAULT
11 KSP2 Kesempatan CHANCE DEFAULT
28 changes: 28 additions & 0 deletions config/28/board.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
GO
GRT
DNU1
TSK
PPH1
GBR
BGR
PEN
FES1
DPK
BKS
MGL
SOL
YOG
BBP
MAL
DNU2
SMG
SBY
FES2
MKS
PPJ
KSP1
BLP
STB
PLB
PKB
KSP2
18 changes: 18 additions & 0 deletions config/28/property.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
ID KODE NAMA JENIS WARNA HARGA_LAHAN NILAI_GADAI UPG_RUMAH UPG_HT RENT_L0 RENT_L1 RENT_L2 RENT_L3 RENT_L4 RENT_L5
1 GRT GARUT STREET COKLAT 60 40 20 50 2 10 30 90 160 250
2 TSK TASIKMALAYA STREET COKLAT 60 40 50 50 4 20 60 180 320 450
3 GBR STASIUN_GAMBIR RAILROAD DEFAULT 200 100
4 BGR BOGOR STREET BIRU_MUDA 100 80 20 50 6 30 90 270 400 550
5 DPK DEPOK STREET BIRU_MUDA 100 80 20 50 6 30 90 270 400 550
6 BKS BEKASI STREET BIRU_MUDA 120 90 20 50 8 40 100 300 450 600
7 MGL MAGELANG STREET MERAH_MUDA 140 100 100 100 10 50 150 450 625 750
8 SOL SOLO STREET MERAH_MUDA 140 100 100 100 10 50 150 450 625 750
9 YOG YOGYAKARTA STREET MERAH_MUDA 160 120 100 100 12 60 180 500 700 900
10 MAL MALANG STREET ORANGE 180 135 100 100 14 70 200 550 750 950
11 SMG SEMARANG STREET ORANGE 180 140 100 100 14 70 200 550 750 950
12 SBY SURABAYA STREET ORANGE 200 150 100 100 16 80 220 600 800 1000
13 MKS MAKASSAR STREET MERAH 220 175 150 150 18 90 250 700 875 1050
14 BLP BALIKPAPAN STREET MERAH 220 175 150 150 18 90 250 700 875 1050
15 STB STASIUN_BANDUNG RAILROAD DEFAULT 200 100
16 PLB PALEMBANG STREET KUNING 260 200 150 150 22 110 330 800 975 1150
17 PKB PEKANBARU STREET KUNING 260 210 150 150 22 110 330 800 975 1150
Loading