An object-oriented combat simulation system built as part of an Intro to Computer Science course at Ben-Gurion University.
Implements a multi-layered class hierarchy using abstract base classes, inheritance, and polymorphism. Models entity attributes, type-effectiveness logic, state transitions, evolution chains, and two-agent battle orchestration across 13 interdependent classes.
Pokemon (Abstract Base Class)
├── Fire (Abstract)
│ ├── Charmander
│ ├── Charmeleon
│ └── Charizard
├── Water (Abstract)
│ ├── Squirtle
│ ├── Wartortle
│ └── Blastoise
└── Electric (Abstract)
└── Pikachu
Trainer
Battle
- Abstract base classes (
ABC,@abstractmethod) - Multi-level inheritance and method overriding
- Encapsulation with private/protected attributes
- Polymorphism via type-effectiveness system
- Evolution logic with object transformation
- Operator overloading (
__eq__,__gt__,__add__, etc.) - Deep/shallow copy management
| Attacker | Strong Against | Weak Against |
|---|---|---|
| Fire | — | Water |
| Water | Fire | Electric |
| Electric | Water | — |
Python 3