Program ini mensimulasikan pergerakan robot di peta grid 2D. Robot dapat bergerak dalam dua mode:
- Pergerakan Manual: Robot bergerak berdasarkan urutan perintah manual (Atas, Bawah, Kiri, Kanan).
- Algoritma A*: Robot menggunakan algoritma A* untuk menemukan jalur terpendek dari posisi awal ('S') ke tujuan ('F').
Peta grid direpresentasikan sebagai vektor string, di mana:
S
adalah posisi awal robot.F
adalah tujuan akhir robot..
adalah jalur yang dapat dilewati.X
adalah dinding yang tidak bisa dilewati robot (kecuali setelah bertemu dengan mekanik).
- Pergerakan manual: Input perintah (
U
,D
,L
,R
) untuk menggerakkan robot. - Algoritma A*: Temukan jalur terpendek secara otomatis dari
S
keF
. - Mekanik (
M
): Robot dapat melewati dinding setelah bertemu dengan mekanik. - Electrical (
E
): Robot dapat meningkatkan kecepatan menjadi 2x setelah bertemu dengan electrical. - Official (
O
): Robot diajak membuat konten dengan official, sehingga menggandakan waktu perjalanan. - Programmer (
P
): Easter egg! Robot bertemu dengan programmer yang membuat program ini.
Program ini terbagi menjadi 3 komponen utama:
- Class
-
Class
Node
- Digunakan dalam algoritma A* untuk merepresentasikan simpul pada peta grid.
- Memiliki atribut seperti koordinat
(x, y)
, nilaif
,g
,h
, dan pointer ke parent untuk tracking jalur.
-
Class
Robot
- Mengelola pergerakan manual dan pencarian jalur menggunakan algoritma A*.
- Mengatur posisi robot, kecepatan, dan interaksi dengan elemen khusus di peta (
M
,E
,O
,P
).
- File
Struktur file pada kedua mode pergerakan robot adalah sebagai berikut:
- 📂 include
- 📄 node.hpp
- 📄 robot.hpp
- 📂 src
- 📄 node.cpp
- 📄 robot.cpp
- 📄 main.cpp
📄 Makefile
include/node.hpp
: Deklarasi classNode
untuk algoritma A*.include/robot.hpp
: Deklarasi classRobot
untuk mengatur pergerakan robot.src/node.cpp
: Implementasi classNode
.src/robot.cpp
: Implementasi classRobot
.src/main.cpp
: Program utama untuk menjalankan simulasi robot.
- Pergerakan Manual
- Kamu memberikan urutan perintah (
U
,D
,L
,R
) untuk menggerakkan robot secara manual. - Robot bergerak di dalam peta sesuai dengan perintah ini.
- Setiap langkah memakan waktu 2 menit, kecuali diubah oleh elemen peta lainnya.
- Algoritma A*
- Robot secara otomatis menghitung jalur terpendek menggunakan algoritma A*.
- Robot akan bergerak di dalam grid, menghindari dinding (
X
) dan mencapai tujuan (F
). - Heuristik yang digunakan adalah jarak Manhattan (selisih baris dan kolom).
Untuk meng-compile dan menjalankan program, kamu bisa menggunakan Makefile yang sudah disediakan.
- Compile Program
make
- Run Program
./robot
- Clean Program
make clean
Input
4 4
S...
....
....
...F
6
DDDRRR
Output
Robot berhasil mencapai tujuan
Robot telah berjalan selama 12 menit
Input
4 4
S...
....
....
...F
Output
Robot berhasil mencapai tujuan
Robot telah berjalan selama 12 menit