A comprehensive Java-based simulator of the Bleach anime universe, showcasing object-oriented programming principles and design patterns.
- Overview
- Features
- Prerequisites
- Installation & Build
- Usage
- Project Structure
- Architecture & Design
- Key Components
- Contributing
- License
- Acknowledgments
This project is an educational implementation demonstrating object-oriented design principles through the simulation of the Bleach anime universe. It models character hierarchies, ability systems, and world interactions while maintaining clean, extensible code architecture.
The simulator creates a dynamic environment where various character types coexist across different dimensions, each with unique attributes, abilities, and roles within their respective organizations.
-
Multi-Character System: Implement various character types from the Bleach universe
- Shinigami
- Vaizard
- Arrancar
- Human
- Quincy
-
Hierarchical World System: Multiple dimensional spaces with inhabitants
- Soul Society
- Human World
- Hueco Mundo
-
Comprehensive Ability System: Various skill categories
- Kido
- Zanpakuto
- Special abilities
- Healing techniques
- Stat buffs and modifications
-
Character Attributes: Realistic stat system
- Life points, Defense, Reiatsu
- Power Level, Rank, and Specializations
- Dynamic ability lists and equipment
-
Organization Structures: Divisions with captains and ranks
- Division assignments
- Rank system within divisions
- Group management and relationships
- Java Development Kit (JDK) 17 or higher
- Apache Maven 3.6 or higher
Using Maven:
mvn clean installThis will compile the source code, run tests, and package the application.
mvn clean compilemvn exec:java -Dexec.mainClass="br.edu.unifei.ecot12.bleach.Main"Or compile and run directly:
mvn clean compile
java -cp target/classes br.edu.unifei.ecot12.bleach.MainThe application initializes various character types and demonstrates their interactions:
// Create a Vaizard
Vaizard v1 = new Vaizard();
v1.setName("Shinji Hirako");
v1.setPowerLevel(200);
v1.setDefense(100);
// Assign to Soul Society
SoulSociety sou = SoulSociety.getInstance();
sou.getInhabitants().add(v1);
// Equip with Zanpakuto
Zampakuto z1 = new Zampakuto();
z1.setName("Sakanade");
v1.setZampakuto(z1);
// Activate Hollow mask ability
v1.activateHollowMask();Execute the Main class to see a full demonstration:
mvn exec:java -Dexec.mainClass="br.edu.unifei.ecot12.bleach.Main"The output displays:
- Vaizard character stats and transformations
- Normal Shinigami and Division assignments
- Human characters with special abilities
- Quincy character profiles
- Substitute Shinigami capabilities
ecot12-final-bleach/
βββ pom.xml # Maven configuration
βββ README.md
βββ Bleach.dia # UML diagram (Dia format)
β
βββ src/
βββ main/java/
β βββ br/edu/unifei/ecot12/bleach/
β βββ Main.java # Main entry point
β βββ Creature.java # Base creature abstraction
β β
β βββ Character Types:
β βββ Shinigami.java
β βββ NormalShinigami.java
β βββ SubstituteShinigami.java
β βββ Vaizard.java
β βββ Arrancar.java
β βββ Hollow.java
β βββ Human.java
β βββ Quincy.java
β β
β βββ Ability System:
β βββ Ability.java # Abstract ability
β βββ Kido.java
β βββ SkillCategory.java
β βββ Attack.java
β βββ Defense.java
β βββ Healing.java
β βββ Buff.java
β βββ Special.java
β β
β βββ Equipment:
β βββ Zampakuto.java
β βββ ZampakutoState.java
β βββ BankaiForm.java
β βββ BasicForm.java
β βββ TrueForm.java
β βββ Resurreccion.java
β βββ Cero.java
β β
β βββ World System:
β βββ Dimension.java # Base world/dimension
β βββ SoulSociety.java
β βββ HumanWorld.java
β βββ HuecoMundo.java
β β
β βββ Organization:
β βββ Division.java
β βββ Confront.java
β βββ Arrancar.java
The core of this project is the implementation of behavioral and creational design patterns to solve complex domain logic:
- State Pattern: Orchestrates the evolution of Zanpakutos (from
BasicFormtoBankaiorResurreccion). The transition logic is encapsulated within specific state classes, triggered by the character's power level and race. - Strategy Pattern: Utilized via the
SkillCategoryinterface. This allows abilities likeAttack,Defense, andHealingto be swapped or assigned dynamically to anyCreature, decoupling the ability from its specific effect. - Singleton Pattern: Applied to the Dimension classes (
SoulSociety,HuecoMundo,HumanWorld). This ensures that each realm maintains a unique, global instance to manage its respective inhabitants. - Inheritance & Polymorphism: A deep hierarchy starting from
Creatureallows for specialized behaviors inShinigami,Hollow, andQuincywhile maintaining a common interface for combat and ability usage.
Creature (abstract)
βββ Shinigami (abstract)
β βββ NormalShinigami
β βββ Vaizard
β βββ SubstituteShinigami
βββ Hollow
β βββ Arrancar
βββ Human
βββ Quincy
βββ ... [other creature types]
Ability (abstract)
βββ Attack
βββ Defense
βββ Healing
βββ Special (wrapper)
βββ Buff (wrapper)
βββ Kido (extends Attack)
Dimension (abstract)
βββ SoulSociety
βββ HumanWorld
βββ HuecoMundo
Zampakuto (abstract)
βββ BasicForm
βββ BankaiForm
βββ TrueForm
The abstract base class representing all characters in the simulation. Provides core attributes and methods:
- Attributes: Life, Defense, Reiatsu, Power Level, Appearance
- Methods:
useAbility(), stat getters/setters - Collections: Abilities list, home dimension
Flexible system allowing characters to learn and use abilities:
- Kido: Spiritual energy-based attacks
- Special: Unique character abilities
- Buff: Stat modifications and enhancements
- Attack/Defense/Healing: Specific damage/protection/restoration
World management using the Singleton pattern:
SoulSociety sou = SoulSociety.getInstance();
HumanWorld hw = HumanWorld.getInstance();Shinigami weapons with multiple forms and states representing power progression.
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by the Bleach anime series by Tite Kubo
- Developed as an educational project for object-oriented programming
- Part of Software Engineering curriculum at UNIFEI (Federal University of ItajubΓ‘)
