Skip to content

NafisMuntasir/InventoMatrix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

112 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InventoMatrix

Custom OOP Turn-Based Combat System (C++)

InventoMatrix is a C++ Object-Oriented Programming (OOP) project that implements a party vs party turn-based combat system. The design emphasizes clean OOP architecture using encapsulation, inheritance, polymorphism, and abstraction, with systems for buffs/nerfs (status effects) and a weight-based inventory that influences combat performance.


Key Features

  • Party vs Party Turn-Based Combat

    • Multiple characters per party
    • Turn order management
    • Action resolution (attack/defend/skills/items)
  • Buff & Nerf System

    • Duration-based effects
    • Stackable / non-stackable effects (depending on design)
    • Stat modification through polymorphic effects
  • Weight-Based Inventory

    • Items with weights
    • Capacity constraints
    • Overweight penalties affecting combat stats/actions

OOP Principles Used (C++)

Encapsulation

  • Class fields are kept private / protected
  • State changes occur through controlled public methods
  • Example: Character::takeDamage(), Inventory::addItem()

Abstraction

  • Abstract base classes or interfaces via pure virtual functions
  • High-level systems depend on base types, not implementations
  • Example: class StatusEffect { virtual void apply(Character&) = 0; }

Inheritance

  • Common logic shared through base classes
  • Derived classes extend behavior without duplicating code
  • Example: Buff and Nerf inherit from StatusEffect

Polymorphism

  • Runtime dispatch through virtual functions
  • Enables flexible effects/actions without if/else chains
  • Example: effect->apply(character); behaves differently per derived effect type

Build & Run (g++)

Linux / macOS / WSL

g++ -std=c++20 -Iinclude https://github.com/NafisMuntasir/InventoMatrix/raw/refs/heads/main/bache/Matrix-Invento-3.3.zip src/combat/*.cpp src/entities/*.cpp src/effects/*.cpp src/inventory/*.cpp -o inventomatrix
./inventomatrix

## Changelog 01 by Sadia Afrin Aurthy

### 2026-02-09
- Added PoisonStatus class
- Added StunStatus class
- Added OverencumberedStatus class

## Changelog 02 by Sadia Afrin Aurthy

### 2026-02-21
- Added AIController class
- Added Action class
- Added AggressiveAI class
- Added BasicAttackAction class
- Added DefendAction class
- Added OpponentCharacter class
- Added PlayerCharacter class
- Added RandomAI class
- Added SkillAction class

## Changelog by Nafis Muntasir
- Added Types class
- Added Effect class
- Added HealEffect class
- Added ApplyStatusEffect class
- Added BattleRules class
- Added TurnManager class
- Added BattleLog class
- Added Battle class
- Added OpponentParty class
- Added SingleEnemyRule class
- Added AllEnemiesRule class
- Added AllyRule class

## Changelog by Sadia Afrin Aurthy
### 2026-03-05
- Added StatType enum class
- Added DamageType enum class
- Added BuffType enum class
- Added TickTiming enum class

## Changelog by Sadia Afrin Aurthy
### 2026-03-24
- Added FileIOPlayerCharacter
- Added FileIOTemplate
- Added main.cpp

## Authors
Nafis Muntasir
Sadia Afrin Aurthy
Hasan bin Mohammad
Noorea Taj Ayshi

About

A turn based combat system simulation made using the basics of Object Oriented Programming and C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages