Anda di halaman 1dari 2

Deskripsi Tugas Besar I IF6182 Algoritma dan Pemrograman B

Semester I 2005/2006

Deskripsi Tugas:
Modifikasilah tugas pemabuk menjadi suatu permainan yang dapat dijalankan secara manual (pengguna
menggiring pemabuk untuk keluar, atau otomatis, program menggerakkan pemabuk secara random).
Bidang pemabuk sekarang bukan lagi "persegi", melainkan suatu bidang random. Pada batas Utara dan
Selatan atas, cell nya adalah tembok pembatas atau pintu keluar. Untuk setiap baris, batas kanan dan kiri
bidang dibangkitkan secara random, dan sekaligus ditentukan salah satu di antaranya merupakan pintu
keluar atau bukan. Secara tekstual, representasi bidang pemabuk adalah sbb :
***-********-***
*
x
*
*
@
*
x
*
*
x *
*
x
-******-***-****-**
Notasi : * adalah pembatas; -= pintu keluar, @= pemabuk; X=penghalang
Command Prompt> _

Bidang visualisasi diwakili oleh array of array dinamik, yang ukurannya ditentukan secara dinamik.
Permainan berakhir kalau pemabuk berhasil keluar dari kota melalui salah satu pintu yang ada, atau sudah
pingsan (batas waktu permainan dilampaui). Aturan gerakan pemabuk :
- Pemabuk hanya dapat menempati cell kosong
- hanya dapat bergerak salah satu dari 4 arah mata angin
- jika bergerak ke cell berikutnya yang berupa "tembok" maka akan membalik, sedangkan jika ke pintu
keluar maka akan keluar
- jika bergerak ke cell berikutnya yang berupa penghalang, maka gerakan gagal (pemabuk tetap di
tempat)
Pada saat program mulai dieksekusi, akan tampil dengan tembok pembatas Utara dan Selatan kota yang
dibuat secara random dengan beberapa pintu keluar. Permainan diawali dengan menuliskan perintah start
pada command prompt. Permainan dapat dimainkan dalam dua mode, yaitu otomatis atau manual.
Jika mode otomatis yang dipilih (dengan menulis otomatis pada command prompt), maka secara periodik
setiap perioda delta-t, pemabuk digerakkan secara random (seperti pada tugas yang lalu).
Jika mode manual yang dipilih (tertulis manual pada command prompt), maka pengguna harus
mengetikkan perintah move <i> dengan I adalah arah bergerak [1=Utara, 2=Timur, 3=Selatan, 4=Barat].
Jika cell berikutnya kosong maka pemabuk dapat bergerak, jika cell yang dituju berupa halangan, maka
pemabuk tidak digerakkan. Untuk menghentikan permainan, pengguna harus menuliskan perintah stop
pada command prompt.
Perintah yang dituliskan pengguna harus disimpan dalam sebuah buffer yang kapasitasnya terbatas namun
harus dikelola secara dinamik yaitu boleh diubah selama eksekusi program, dan dipakai secara
sirkuler (jika kapasitas penyimpanan dilampaui, maka perintah terlama akan ditimpa). Perintah lain yang
harus dimengerti program berikut artinya adalah sebagai berikut (termasuk perintah yang sudah dijelaskan
di atas). Semua parameter perintah adalah kata .
Perintah
Reaksi aplikasi
Start <mode>

Memulai permainan. Jika mode permainan tidak diset, defaultnya adalah otomatis.

Otomatis <Nstep>
Manual

Set mode permainan menjadi otomatis, dengan dibatasi maksimal NStep langkah
permainan, setelah itu kembali ke modus manual.
Set mode permainan menjadi manual.

move <i>

Mememindahkan pemabuk dengan arah i, pada mode permainan manual.

Stop

Menghentikan permainan pada saat mode permainan manual.

queue size <n>

Set ukuran queue untuk menyimpan perintah pengguna. Jika tidak diset, ukuran
defaultnya adalah 15
Set karakter yang akan menjadi elemen stack. Jika tidak diset, nilai defaultnya adalah
karakter X

char <cc>

IL&YN, Deskripsi Tugas Besar IF6182 Page 1 of 2

Deskripsi Tugas Besar I IF6182 Algoritma dan Pemrograman B


Semester I 2005/2006
Perintah

Reaksi aplikasi

Delta <t>

Mengubah paramater delta waktu antara dua langkah saat permainan otomatis

Replay <c>

Men-display semua perintah pengguna yang tersimpan di buffer, dengan urutan yang
terlama sampai dengan yang terbaru atau sebaliknya, ditentukan oleh parameter c
yang bernilai A [ FIFO] atau D [LIFO]
Melakukan penyimpanan state perainan (layar dan semua parameter serta isi buffer)
ke file teks, dengan format yang diberikan.

Save <nama-file>

Tugas harus diselesaikan dengan memanfaatkan ADT yang pernah anda buat.
Command yang diketikkan user direpresentasi dalam suatu array [dengan menganalisis semua command
yang didefinisikan di atas, rancanglah ukuran array yang optimal]. Untuk mengakuisisi perintah dan
parameternya, harus dibuat suatu mesin karakter dan mesin kata, yang mengakses array tersebut sebagai
gantinya mengakses pita karakter. Untuk tahap pertama, semua command pasti benar.
Anda juga harus menulis modul untuk membaca dan menulis file yang isinya state layar dan parameter
program tsb. Pakailah fscanf dan fprintf untuk membaca/menulis file.
Program utama dijalankan dengan atau tanpa parameter nama file. Jika tanpa parameter, maka permainan
dimulai sesuai spesifikasi di atas (dengan parameter ukuran bidang, buffer dan karakter sesuai nilai default.
Jika dengan parameter nama file, maka pada tahap awal, program akan membaca isi file yang namanya
diberikan sebagai parameter yang menyimpan "state" permainan. File berisi sebagai berikut (dengan XX
adalah format %d, C adalah dengan format %c
N= XX
M= XX
1, XX, XX
2, XX, XX
3, XX, XX
.
.
N, XX, XX
Karakter = C
Ukuran queue = XX
Delta t = XX
Deskripsi penyerahan
Tugas diselesaikan per kelompok, dengan anggota kelompok 3 orang. Anggota kelompok akan ditentukan
oleh Koordinator asisten dan diumumkan di situs kur2003. Tugas dikumpulkan paling lambat 14 Oktober
2005 Pk. 16.00
Deliverables Tugas dan tatacara penyerahan:
Hardcopy dalam 1 map : dikumpulkan di TU Akademik Lt 2 dengan menandatangani berita acara serah
terima.
1. Checklist pengumpulan tugas (akan diberikan di situs)
2. Notulen pertemuan teknis saat pertemuan kelompok.
3. Dokumen teknis (hardcopy), yang berisi penjelasan tentang program yang dibuat, terdiri dari:
a. Sketsa struktur data dan fungsi utama
b. Status program dan hasil pengujian
c. Cara penggunaan
Softcopy : dengan melakukan upload sesuai dengan yang akan diumumkan oleh Asisten.
4. Program yang siap di-run (executable)
5. Source code (softcopy, yang harus dapat dikompilasi ulang)
Bonus :
- Ada N buah pemabuk, yang dikelola dalam sebuah list. Jika dua pemabuk bertabrakan, maka keduanya
mati dan secara ajaib, dienyahkan drari permainan. Syarat tambahan permainan berhenti: pemabuk
habis.

IL&YN, Deskripsi Tugas Besar IF6182 Page 2 of 2

Anda mungkin juga menyukai