Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
263e9e1
chore: add clang-format and cmake
nicholaswisee Apr 11, 2026
9f6b0c2
docs: add nimonspoli class design
parkuskus Apr 13, 2026
d997d16
chore: adjust repo structure
nicholaswisee Apr 14, 2026
2aec43d
chore: this is staging branch alias dev
nicholaswisee Apr 14, 2026
b649715
docs: add small description for branching
nicholaswisee Apr 14, 2026
2190da9
chore: change git ignore
parkuskus Apr 14, 2026
ee5ceb3
chore : gitignore configure
parkuskus Apr 14, 2026
652c54b
docs: add exception to class-design
parkuskus Apr 14, 2026
510f678
chore: this is staging branch alias dev
nicholaswisee Apr 14, 2026
7ec3e6b
docs: add small description for branching
nicholaswisee Apr 14, 2026
d800d59
Merge branch 'dev' of https://github.com/Labpro-22/tugas-besar-1-nul …
parkuskus Apr 14, 2026
2abbd84
feat: add exception class to handle error for every layers
parkuskus Apr 14, 2026
c9eec50
Feat: base class card
Kurt-Mikhael Apr 14, 2026
86a7003
Feat: chance card
Kurt-Mikhael Apr 14, 2026
3f31511
Feat: deck card
Kurt-Mikhael Apr 14, 2026
7be06d4
Feat: skill card
Kurt-Mikhael Apr 14, 2026
aaa98a9
Feat: inheritance demolition card
Kurt-Mikhael Apr 14, 2026
947ab15
Feat: inheritance discount card
Kurt-Mikhael Apr 14, 2026
74411f9
Feat: inheritance lasso card
Kurt-Mikhael Apr 14, 2026
4756035
Feat: inheritance move card
Kurt-Mikhael Apr 14, 2026
a9f1ee7
Feat: inheritance shield card
Kurt-Mikhael Apr 14, 2026
eaca47b
Feat: inheritance teleport card
Kurt-Mikhael Apr 14, 2026
6eb0963
Move: card header folder
Kurt-Mikhael Apr 14, 2026
40018ec
chore: add pertinent .hpp folders for each layers in "include" folders
parkuskus Apr 14, 2026
7c31c46
chore: change readme.md
parkuskus Apr 14, 2026
387399f
feat: added doable player contract
Vixrlie Apr 14, 2026
3e6a58c
Merge branch 'card' into player
Vixrlie Apr 14, 2026
33a2f76
feat: add Property modules base on class design
parkuskus Apr 15, 2026
04b72c9
chore: add testing folder to dev
parkuskus Apr 15, 2026
bef04eb
chore: remove unnecessary folders in include
parkuskus Apr 15, 2026
c0fbb2b
feat: add Property modules base on class design
parkuskus Apr 15, 2026
2cee8e5
Merge branch 'feat/property' of https://github.com/Labpro-22/tugas-be…
parkuskus Apr 15, 2026
89341b4
feat: add unit test to verify functions in property's module, configu…
parkuskus Apr 15, 2026
fd115e1
chore: add comment in .cpp
parkuskus Apr 15, 2026
7beee16
docs: change readme to make clang-format appliable for test folder
parkuskus Apr 15, 2026
b4ef832
Merge branch 'feat/property' into player
Vixrlie Apr 15, 2026
0f8cbf5
Refactor: template types for card deck to only card types
Kurt-Mikhael Apr 15, 2026
2ae6a1c
Merge pull request #2 from Labpro-22/feat/property
parkuskus Apr 15, 2026
76cf1c0
Merge branch 'dev' of https://github.com/Labpro-22/tugas-besar-1-nul …
Kurt-Mikhael Apr 15, 2026
c5d32df
Merge pull request #3 from Labpro-22/card
Kurt-Mikhael Apr 15, 2026
a2e1696
Merge branch 'dev' into player
Vixrlie Apr 15, 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
36 changes: 36 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
# Base style to inherit from
BasedOnStyle: LLVM

# Language-specific settings
Language: Cpp
Standard: Latest


# indentation
IndentWidth: 4
TabWidth: 4
UseTab: Never

BreakBeforeBraces: Attach


AllowShortFunctionsOnASingleLine: Inline
BinPackArguments: false
BinPackParameters: false

BreakStringLiterals: true

# pointer
DerivePointerAlignment: false
PointerAlignment: Left


# tidy includes
SortIncludes: CaseSensitive
SpaceAfterCStyleCast: true
SpaceBeforeParens: ControlStatements

AlignTrailingComments: true

...
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ build/
obj/
bin/


# Precompiled Headers
*.gch
*.pch
Expand Down Expand Up @@ -42,3 +43,17 @@ bin/

# debug information files
*.dwo

# CMake build artifacts
cmake-build*/
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
compile_commands.json
CTestTestfile.cmake
Testing/


# class-design
class-design/NIMONSPOLI_SPEC.md
class-design/NIMONSPOLI_GROUND_TRUTH.md
69 changes: 69 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
cmake_minimum_required(VERSION 3.16)

project(game LANGUAGES CXX)

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

set(SRC_DIR "${CMAKE_SOURCE_DIR}/src")
set(TEST_DIR "${CMAKE_SOURCE_DIR}/test")

file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS
"${SRC_DIR}/*.cpp"
)

file(GLOB_RECURSE TEST_SOURCES CONFIGURE_DEPENDS
"${TEST_DIR}/*_test.cpp"
)

if(PROJECT_SOURCES STREQUAL "")
message(FATAL_ERROR "No source files found in ${SRC_DIR}")
endif()

set(MAIN_SOURCE "${SRC_DIR}/main.cpp")
set(CORE_SOURCES ${PROJECT_SOURCES})
list(REMOVE_ITEM CORE_SOURCES "${MAIN_SOURCE}")

add_executable(${PROJECT_NAME} ${PROJECT_SOURCES})

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

target_compile_options(${PROJECT_NAME}
PRIVATE
-Wall
-Wextra
)

if(TEST_SOURCES)
set(ALL_TEST_TARGETS "")

foreach(TEST_FILE ${TEST_SOURCES})
file(RELATIVE_PATH TEST_FILE_REL "${TEST_DIR}" "${TEST_FILE}")
get_filename_component(TEST_TARGET "${TEST_FILE}" NAME_WE)

add_executable(${TEST_TARGET}
"${TEST_FILE}"
${CORE_SOURCES}
)

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

target_compile_options(${TEST_TARGET}
PRIVATE
-Wall
-Wextra
)

list(APPEND ALL_TEST_TARGETS ${TEST_TARGET})
message(STATUS "Registered test target: ${TEST_TARGET} (${TEST_FILE_REL})")
endforeach()

add_custom_target(all_tests DEPENDS ${ALL_TEST_TARGETS})
endif()
72 changes: 71 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,74 @@
[![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

Project Structure ini hanyalah referensi, Anda dapat menyesuaikannya dengan kebutuhan tim Anda
Nimonspoliiiiiii

(clone, checkout dev, and branch from dev yes)

## Build and Formatting

We use CMake + clang-format biar accecee

- Gunakan konfigurasi CMake yang sudah ada untuk kompilasi:

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

- Format kode sebelum push!!!

```bash
clang-format -i src/**/*.cpp include/**/*.hpp test/**/*.cpp
```

Jika shell tidak mendukung glob `**`, gunakan pendekatan `find`:

## Unit Test

Semua file test dengan pola `test/**/*_test.cpp` akan otomatis didaftarkan sebagai target CMake saat configure.

- Configure project:

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

- Lihat daftar target test yang tersedia:

```bash
cmake --build cmake-build --target help
```

- Build satu target test (contoh: `property_test`):

```bash
cmake --build cmake-build --target property_test
```

- Build semua target test sekaligus:

```bash
cmake --build cmake-build --target all_tests
```

- Jalankan executable test:

```bash
./cmake-build/property_test
```

Jika build generator yang dipakai membuat binary di subfolder konfigurasi, jalankan `property_test.exe` dari folder seperti `cmake-build/Debug` atau `cmake-build/Release`.

Contoh PowerShell (Windows):

```powershell
.\cmake-build\property_test.exe
```

Contoh WSL/Linux shell:

```bash
./cmake-build/property_test
```
Loading