Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Polish Remover (nails)

Tubes1_polish-remover-nails-/
├── doc/
│   └── placeholder.txt
└── src/
    └── src/
        ├── Blitzkrieg/
        │   └── RobotPlayer.java
        ├── bot067/
        │   └── RobotPlayer.java
        ├── examplefuncsplayer/
        │   └── RobotPlayer.java
        └── stormtroopers/
            └── RobotPlayer.java

This Repository Consists of 3 bots

1. Stormtroopers

Strategi Utama: Meminimalkan jarak absolut ke koordinat target (Euclidean distance) dengan pemecahan rintangan deterministik.

Algoritma:

  1. SoldierState (STARTING → EXPLORING → BUILDING → back to EXPLORING)
  2. Exploration Phase: Symmetry-based guessing (rotational symmetry untuk predict enemy ruins)
  3. Pathfinding: Bug2 Algorithm - wall-following saat stuck, straight-line approach saat clear

Bug2 Implementation:

  • is_tracing: flag ketika bertemu obstacle
  • tracing_dir: arah untuk follow wall (rotate left setiap gagal)
  • onMLine(): Check apakah robot sudah bisa kembali ke straight line
  • obstacle_dist: track closest distance ke target while tracing

Fitur Tambahan:

  • Tangential Painting: Gerakan tangensial untuk efficient tower pattern completion
  • Idle Detection: State reset jika terlalu lama idle
  • Priority Targeting: Tower > Mopper > Soldier priority

2. Bot067

Strategi Utama: Memaksimalkan luas cat kawan sambil mempertahankan momentum ruang, dihitung melalui skor reward/penalty ubin sekitar.

Algoritma:

Setiap unit memilih gerakan dengan scoring system:

score = 0
if (enemy_paint)   score += 100
if (empty_tile)    score += 60
if (ally_paint)    score -= 10
if (toward_target) score += 50
if (same_direction) score += 80
score += random(10)
→ pilih arah dengan score tertinggi

Fitur:

  • Role Switching: EXPLORER → ATTACKER → RETREATER berdasarkan paint level
  • Symmetry Detection: Menebak lokasi musuh dengan rotational symmetry
  • Network Communication: Broadcast ruin dan enemy tower locations
  • Tangential Movement: Optimal pathfinding menuju target dengan obstacle avoidance

3. Blitzkrieg

Strategi Utama: Memaksimalkan penemuan Ruin baru dengan meminimalkan area pencarian yang tumpang tindih.

Algoritma:

  • Scout (Soldier ID % 4 == 0): Menggunakan spiral pattern untuk eksplorasi, mencari ruin secara sistematis
  • Regular Soldier: Menggunakan Greedy Best-First Movement - mengevaluasi 8 arah gerakan, memilih arah yang meminimalkan jarak ke target
  • Tower: Menerima laporan ruin dari scout, broadcast ke regular soldiers setelah 5 kali penerimaan
  • Mopper: Random direction dengan obstacle avoidance
  • Pathfinding Scout: Stack-based path backtracking untuk kembali ke home

Running the program

  • Make sure you have JDK 21 / Java 21
  • build the client from the src folder using
    ./gradlew build
    
  • run the game either from the client or using
    ./gradlew run
    
    you can open the client by running the .exe file in Tubes1_polish-remover-nails-/src/client/

Made by

  • Billie Bhaskara Wibawa | 13524024
  • Muhammad Naufal Romi Annafi | 13524058
  • I Gusti Ngurah Alit Dharma Yudha | 13524072

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages