Permainan simulasi pengantaran barang berbasis CLI dengan memanfaatkan abstract dataypes sebagai Tugas Besar mata kuliah IF2110 Algoritma dan Struktur data Program Studi Teknik Informatika ITB 2020/2021
Mobilita adalah sebuah permainan berbasis CLI yang mensimulasikan suatu sistem pengantaran barang. Barang-barang yang ada memanfaatkan konsep abstract data-types, yaitu tipe-tipe data dengan akses khusus yang diimplementasikan oleh pengguna. Ada beberapa daftar abstract data-types yang digunakan (selengkapnya di docs
):
- ADT Mesin Karakter dan Mesin Kata: untuk memproses input pengguna
- ADT List Statis
- ADT Matriks: untuk menyimpan peta dan matriks adjacency
- ADT Queue: untuk menyimpan daftar pesanan yang masuk
- ADT Stack: untuk menyimpan daftar pesanan yang diamblik
- ADT Point dan Location: untuk mewakili lokasi pemain dan lokasi-lokasi lainnya
- ADT Gadget: untuk penggunaan gadget
- ADT Item: untuk mewakili sebuah item (mengandung tipe item, lokasi pick-up dan drop-off, dan lain-lain
- ADT Linked List: untuk menampilkan daftar pesanan yang bisa diambil (to-do list) dan sedang diambil (in-progress list)
- ADT List Dinamis: untuk menampung data lokasi
- ADT Peta: untuk mewakili peta
- ADT State: sebagai global state yang merupakan gabungan dari ADT-ADT sebelumnya
Bahasa yang digunakan: C (implementasi permainan dan ADT), Python (untuk kompilasi file)
Isi dari file:
build
: folder konfigurasi kompilasidocs
: folder dokumendist
: folder untuk executable (akan muncul setelah kompilasi)src
: folder berisi source codecommands
: folder berisi algoritma-algoritma untuk perintah pada permainanconfig
: folder berisi file konfigurasi permainan (sampel dari spesifikasi)modules
: folder berisi modul-modul penting di permainancolorizer
: module pewarnaancore
: module inti dari keseluruhan program permainancommands
: submodule yang menangani alur permainan
io
: module berisi loadfile/config parser dan mesin kata (I/O)machines
: submodule yang menangani masukan pengguna
models
: module ADT yang digunakan beserta driver codeinventory
: koleksi tipe data inventory permainanitem
: koleksi tipe data item dan pesanan dalam permainanmap
: koleksi tipe data map permainanlocation
: koleksi tipe data lokasi (gedung) dalam permainan
shared
: koleksi tipe data yang digunakan tipe data lainstate
: tipe data state permainan
main.c
: file utama permainan
- Dari Terminal Visual Studio Code
- Pastikan anda berada di folder
root
(../IF2110_TB_03_10
) - Jalankan perintah
py build/all.py
untuk melakukan kompilasi terhadap file-file yang ada - Setelah kompilasi selesai, ketikkan perintah
./dist/mobilita
untuk memulai executable
- Pastikan anda berada di folder
- Secara otomatis (dari command prompt atau PowerShell)
- Jalankan
run.bat
untuk memulai executable dariroot
(run.ps1
untuk menjalankan di PowerShell) - [IMPORTANT] Supaya pewarnaan dapat dilihat dari command prompt, nilai dari Registry harus diubah melalui Regedit
- Buka Registry Editor (
regedit
) di komputer Anda - Navigasikan ke
HKEY_CURRENT_USER -> Console
- Klik kanan di folder
Console
, lalu gunakan opsiNew -> DWORD (32-bit Value)
- Tambahkan kunci baru dengan spesifikasi:
- Nama kunci:
VirtualTerminalLevel
- Nilai kunci:
1
- Nama kunci:
- Simpan hasil pengubahan kunci. Apabila program dijalankan di command prompt , pewarnaan seharusnya berjalan.
- Buka Registry Editor (
- Jalankan
- Dari Linux (diuji di WSL2, Ubuntu 20.04)
- Pastikan anda berada di folder
root
(..IF2110/TB_03/10
) - Jalankan perintah
python3 build/all.py
untuk melakukan kompilasi terhadap file-file yang ada - Setelah kompilasi selesai, ketikkan perintah
./dist/mobilita
untuk memulai executable
- Pastikan anda berada di folder
-
Saat executable dimulai, akan ada empat opsi:
- NEW: untuk memulai permainan baru
- LOAD: untuk memulai permainan dari save file sebelumnya
- HELP: untuk menampilkan menu awal
- EXIT: keluar dari program
-
[IMPORTANT] Pastikan direktori file konfigurasi/savefile relatif terhadap folder di mana program dijalankan. Apabila program dijalankan di
root
:- Apabila file berada di folder
src/config
, maka input filesrc/config/<nama_file>.txt
- Apabila file berada di
root
, maka input<nama_file>
.txt - Pastikan juga tipe newline di file save sudah sesuai dengan platform (CR/LF untuk Windows, LF untuk Linux), karena apabila file CR/LF dijalankan di Linux, maka akan muncul error segmentation fault atau file tidak terbaca.
- Apabila file berada di folder
-
Pemain akan masuk ke menu utama dan permainan akan dimulai.
-
Pemain harus mengantarkan semua pesanan hingga tidak ada pesanan lagi. Setelah permainan selesai, pemain harus kembali ke posisi awal.
Status pengerjaan: [SELESAI]
- Fitur save file dan load gameplay dari save file
- Pewarnaan di gameplay
- Dapat dikompilasi dan dijalankan baik dari code editor maupun terminal
cmd
atau PowerShell - Implementasi ADT yang dimodifikasi dalam permainan
- Simulasi pengantaran dan pengiriman barang berbasis lokasi dan CLI dengan akses lokasi dan informasi berbasis pewarnaan
- 13520166 Raden Rifqi Rahman
- Pembuatan ADT dasar + driver ADT
- Pembuatan script kompilasi
- Pembuatan groundwork pengerjaan dan state algoritma
- Pengecekan ulang algoritma
- Debugging dan update source code
- 13520124 Owen Christian Wijaya
- Integrasi algoritma ke program utama
- Algoritma fungsi buy dan inventory
- Debugging dan update source code
- Konfigurasi loading awal dan save file
- Pembagian tugas awal
- 13520121 Nicholas Budiono
- Algoritma move
- Petanggungjawab laporan
- Pengecekan ulang algoritma
- 13520120 Afrizal Sebastian
- Algoritma in-progress dan pick-up
- Debugging dan update source code
- Pengecekan ulang algoritma
- 13520127 Adzka Ahmadetya Zaidan
- Algoritma to-do dan drop-off
- Notulis asistensi
- Pengecekan ulang algoritma