Skip to content

dzhax499/TurnBaseGameJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

45 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TURN-BASED BATTLE SYSTEM - SUMMARY


FITUR GAME

1. Sistem Pertarungan 1 vs 1

  • Dua pemain berbeda bermain bergantian
  • Turn-based dengan validasi aksi lengkap
  • Victory conditions: HP = 0 atau surrender

2. Turn Order (Speed-based)

  • Karakter dengan speed tinggi jalan duluan
  • Jika speed sama โ†’ coin flip (random)
  • Contoh: Wind (50 SPD) > Fire (30 SPD) > Water (10 SPD) > Earth (5 SPD)

3. Elemental Advantage System ๐Ÿ”ฅ๐Ÿ’ง๐ŸŒ๐Ÿ’จ

Fire > Wind > Earth > Water > Fire
  • Advantage = 1.5x damage
  • Disadvantage = 0.75x damage
  • Message display: "Sangat efektif!" atau "Kurang efektif..."

4. Status Effects yang Hidup

  • Burn ๐Ÿ”ฅ: -5 HP per turn (3 turns) dari Fireball
  • Freeze โ„๏ธ: Skip turn dari Ice Blast (2 turns)
  • Effects dapat stack dan terus berjalan setiap turn

5. Skill System Komprehensif

Setiap karakter punya 4 skill:

  • Basic Attack (0 FP)
  • Guard (0 FP)
  • Heal (10 FP) - heal = ATK ร— 1.5
  • Special Elemental Skill (20-30 FP)
    • Fire: Fireball (high damage + burn)
    • Water: Ice Blast (medium damage + freeze)
    • Earth: Rock Throw
    • Wind: Air Slash

6. Focus Points (FP) System โšก

  • Max 50 FP
  • Regenerasi +10 FP per turn
  • Skill special butuh 20-30 FP
  • Display bar yang real-time

7. Pertarungan yang Terlihat HIDUP ๐ŸŽฌ

  • Live display HP bar dengan character
  • FP bar visualization
  • Status effects display
  • Damage numbers
  • Critical hit messages
  • Dodge messages
  • Elemental advantage messages
  • Burn/Freeze effect messages
  • Battle log setiap aksi

8. Mekanik Pertarungan

  • Dodge: Chance based on speed difference (max 30%)
  • Critical Hit: Speed / 4.0 (max 25%)
  • Defense: Kurangi damage sebelum diapply
  • Elemental Multiplier: Applied sebelum defense
  • Accuracy Calculation: Semua mekanik terintegrasi

9. Battle Logging System

  • Setiap aksi dicatat di BattleLog
  • Bisa display action terakhir atau semua
  • Membantu understanding game flow

FILES YANG DIBUAT

src/main/java/com/game/battle/
โ”œโ”€โ”€ Battle.java          (482 lines) โ†’ Main logic
โ”œโ”€โ”€ BattleState.java     (13 lines) โ†’ State enum
โ”œโ”€โ”€ BattleAction.java    (73 lines) โ†’ Action recording
โ”œโ”€โ”€ BattleLog.java       (77 lines) โ†’ Log management
โ”œโ”€โ”€ BattleSimulator.java (209 lines) โ†’ Interactive mode
โ””โ”€โ”€ BattleDemo.java      (198 lines) โ†’ Automated demo

Documentation:
โ”œโ”€โ”€ BATTLE_SYSTEM.md     โ†’ Dokumentasi lengkap
โ””โ”€โ”€ QUICK_START.md       โ†’ Quick reference guide

KARAKTERISTIK KARAKTER

Karakter HP ATK DEF SPD Element Keunikan
Fire ๐Ÿ”ฅ 100 35โญ 15 30 FIRE High damage, medium speed
Water ๐Ÿ’ง 120โญ 25 25โญ 10 WATER Balanced, freeze attack
Earth ๐ŸŒ 140โญ 25 30โญ 5 EARTH Tank, very high defense
Wind ๐Ÿ’จ 90 30 10 50โญ WIND Glasscannon, super fast

๐ŸŽฎ CARA BERMAIN

Mode 1: Interactive (2 Pemain Real)

java -cp target/classes com.game.battle.BattleSimulator
  1. Pemain 1 pilih karakter
  2. Pemain 2 pilih karakter
  3. Pertarungan dimulai
  4. Setiap turn: pilih skill 1-4 atau 0 untuk surrender
  5. Lihat hasil pertarungan

Mode 2: Automated Demo (AI vs AI)

java -cp target/classes com.game.battle.BattleDemo
  • AI memilih skill otomatis
  • Heal saat HP < 40%
  • Use special skill saat FP cukup
  • Basic attack sebagai fallback

GAME BALANCE

Elemental Rock-Paper-Scissors

Fire beats Wind
Wind beats Earth
Earth beats Water
Water beats Fire

Setiap karakter punya strengths & weaknesses

Stats Balance

  • Fire: High ATK โ†’ bisa one-shot
  • Water: High HP/DEF + Freeze โ†’ control game
  • Earth: Tank supreme โ†’ defensive
  • Wind: High SPD โ†’ agility advantage

FP Economy

  • Basic attack 0 FP โ†’ always available
  • Special skill 20-30 FP โ†’ strategic cooldown
  • +10 FP per turn โ†’ balance resource

CONTOH BATTLE OUTPUT

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘   PERTARUNGAN DIMULAI!             โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

โš”๏ธ  Pyro (HP: 100/100)
โš”๏ธ  vs
โš”๏ธ  Aqua (HP: 120/120)

๐ŸŽฒ Penentuan Giliran:
   Pyro memiliki speed lebih tinggi! Jalan duluan!

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
TURN 1 - Pyro GILIRAN
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
โš”๏ธ PLAYER 1 Pyro โ”‚ [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] 100/100 HP
           โ”‚ FP: [โšกโšกโšกโšกโšกโšกโšกโšกโšกโšก] 50/50
           
๐Ÿ›ก๏ธ  PLAYER 2 Aqua โ”‚ [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] 120/120 HP
           โ”‚ FP: [โšกโšกโšกโšกโšกโšกโšกโšกโšกโšก] 50/50
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Skill tersedia untuk Pyro:
1. Basic Attack (FP Cost: 0)
2. Guard (FP Cost: 0)
3. Heal (FP Cost: 10)
4. Fireball (FP Cost: 25)

Pyro menembakkan bola api ke Aqua!
Kurang efektif...
Aqua menerima 14 kerusakan.
Aqua terbakar! (Burn)

โšก Memproses Status Effects...
Aqua menerima 5 damage dari Burn!

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
TURN 1 - Aqua GILIRAN
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Aqua membekukan Pyro dengan Ice Blast!
Sangat efektif!
Pyro menerima 33 kerusakan.
Pyro membeku! (Freeze)

INTEGRASI DENGAN CODEBASE EXISTING

Methods Ditambahkan ke BaseCharacter:

// Get active effect names (for display)
public List<String> getActiveEffectNames()

// Update status effects (process effects)
public void updateStatusEffects()

Classes Baru:

  • Battle.java โ†’ Inti sistem
  • BattleState.java โ†’ State management
  • BattleAction.java โ†’ Action recording
  • BattleLog.java โ†’ Log management
  • BattleSimulator.java โ†’ UI interactive
  • BattleDemo.java โ†’ Demo automated

DESIGN HIGHLIGHTS

  1. Polimorfisme: Skill interface dengan implementasi berbeda
  2. Encapsulation: Private attributes dengan public getters
  3. State Pattern: BattleState enum
  4. Observer Pattern: BattleLog records actions
  5. Strategy Pattern: Character skill strategies
  6. Error Handling: Validasi FP, skill index, etc
  7. Memory Efficient: Battle log capped di 100 actions
  8. Real-time Feedback: Display update setiap turn

FITUR BONUS

โœ… Dodge mechanic dengan speed calculation โœ… Critical hit system dengan speed factor
โœ… Visual health bar dan FP bar โœ… Real-time status effect display โœ… Battle log untuk replay โœ… Coin flip untuk tie breaker โœ… FP regeneration per turn โœ… Color/emoji indicators untuk status


STRATEGI GAME

Fire vs Water (Water Advantage)

Fire: Aggressive early, tapi hancur vs Water special
Water: Defense heavy, Freeze untuk setup
Strategy: Fire perlu dodge/tank, Water bisa afford heal

Wind vs Earth (Wind Advantage)

Wind: Hit and run, speed advantage
Earth: Tank susah dikasih damage dari Wind
Strategy: Wind exploit speed, Earth guard heavy

Fire vs Earth (Equal)

Balanced matchup, depends on player skill

SCALABILITY

Mudah untuk menambah:

  • Skill baru (create class extends Skill)
  • Status effect baru (create class extends StatusEffect)
  • Karakter baru (create class extends BaseCharacter)
  • Game mode baru (modify BattleSimulator)
  • Visual effects (extend displayStatus)

LEARNING VALUE

System ini mengajarkan:

  • OOP principles (abstraction, inheritance, encapsulation, polymorphism)
  • Design patterns (state, observer, strategy)
  • Game loop implementation
  • Resource management (FP system)
  • Game balance concepts
  • Combat mechanics

DOKUMENTASI

  1. BATTLE_SYSTEM.md โ†’ Dokumentasi komprehensif (semua detail)
  2. QUICK_START.md โ†’ Quick reference untuk bermain
  3. Code comments โ†’ Inline documentation

STATUS: PRODUCTION READY

Sistem battle sudah:

  • โœ… Fully functional
  • โœ… Tested (compile + run)
  • โœ… Well documented
  • โœ… Integrated dengan existing code
  • โœ… Scalable & maintainable
  • โœ… Performance optimized

Untuk mulai bermain:

cd C:\TurnBaseGameJava
mvn clean compile
java -cp target/classes com.game.gui.GameWindow

About

Tugas Besar Pemrograman Berbasis Object

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages