Anda di halaman 1dari 6

Tugas Besar

Algoritma dan Pemrograman 3 2018/2019

Dosen : Mastura Diana Marieska

Battleship 1 Player
Deskripsi :

https://en.wikipedia.org/wiki/Battleship_(game)

Implementasi Game Battleship dengan hanya 1 pemain pada 1 waktu. Bentuk Battleship telah
ditentukan, namun posisi battleship pada gaming board di-generate oleh program saat inisialisasi.
User menebak dimana posisi battleship dengan “menembak”, yaitu masukkan angka koordinat (x
dan y) yang diperkiraan berisi battleship. Jika pada koordinat tersebut benar ada battleship, maka
tampilan koordinat tersebut pada gaming board diubah menjadi ‘X’. Jika pada koordinat tersebut
tidak ada battleship, maka tampilan koordinat tersebut pada gaming board diubah menjadi ‘_’.
Permainan berakhir jika user telah menebak semua koordinat battleship. Sebelum permainan
berakhir, user dapat menyerah dan keluar dari permainan dengan memasukkan koordinat 999,999.
Jika user menyerah, maka program akan menampilkan gaming board, yaitu ‘_’ untuk koordinat
yang tidak ada battleships dan ‘X’ untuk koordinat yang ada battleships.

Spesifikasi ADT Poin


- Memiliki anggota int x dan int y.
- Merepresentasikan posisi titik pada matriks gaming board, sehingga range nilai untuk x
maupun y adalah 0-9
- Poin (0,0) berada pada bagian kiri bawah matriks, sedangkan Poin (9,9) berada di bagian
kanan atas matriks.

Spesifikasi Battleships
Battleships merupakan array of Poin yang berisi posisi dari battleship pada matriks gaming board.

Terdapat 4 jenis battleship :


Battleship 1
Spesifikasi :
- Berbentuk Letter L
- Menempati 7 area poin

Battleship 2
Spesifikasi :
- Berbentuk garis lurus
- Menempati 4 area poin

Battleship 3
Spesifikasi :
- Berbentuk letter T
- Menempati 4 area poin

Battleship 4
Spesifikasi :
- Berbentuk letter I
- Menempati 2 area poin

Pada fase inisialisasi, program akan menenentukan posisi tiap battleship pada gaming board
dengan cara random. Random dilakukan untuk menentukan 1 titik awal pada tiap battleship. Posisi
titik lainnya ditentukan oleh bentuk battleship. Posisi battle ship tidak boleh beririsan satu sama
lain. Setelah proses random dilakukan, maka program akan memiliki koordinat titik tiap battleship
untuk ditebak oleh user.
Alur Program :

Phase 1 : Initialization
1. Buatlah gaming board berbentuk matriks of char berukuran 10x10
2. Inisialisasi matriks dengan angka 0
3. Tampilkan matriks ke layar
4. Generate 4 battleship dengan posisi random (Lihat Spesifikasi Battleships)

Tampilan pada akhir fase inisialisasi:

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Phase 2: Playing
1. User menginput koordinat x dan y pada gaming board
a. Jika koordinat tidak valid (bukan antara 0-9), maka program menampilkan pesan
error : “Koordinat tidak ada pada gaming board, harap masukkan koordinat yang
valid”
b. Jika koordinat berisi angka (999, 999), maka user menyerah. Masuk ke fase 3 :
wrap up
c. Jika koordinat valid (antara 0-9) maka lanjut pemrosesan
2. Program mengecek isi koordinat tersebut
a. Apabila koordinat berisi battleship, maka tampilan gaming board pada koordinat
tersebut diubah menjadi ‘X’
b. Apabila koordinat tidak berisi battleship, maka tampilan gaming board pada
koordinat tersebut diubah menjadi ‘_’
3. Program menampilkan gaming board yang telah diupdate.
Contoh tampilan pada fase playing :

0 0 0 0 0 0 0 0 0 0
0 0 X 0 0 0 0 0 0 0
0 0 X 0 0 0 0 0 0 0
0 0 X 0 0 _ 0 _ 0 0
0 _ X X X _ 0 _ 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 _ 0 0 0
0 0 X 0 0 0 _ 0 0 0
0 0 X 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Phase 3 : Wrap Up
Wrap Up merupakan fase dimana permainan dinyatakan berakhir. Terdapat 2 kasus wrap up, yaitu
jika user menyerah (user kalah) dan jika user berhasil menebak semua posisi battleship (user
menang).

Case 1 : User Kalah


Terjadi ketika user memasukkan koordinat (999,999). Program mengeluarkan pesan “Permainan
telah berakhir” dan menampilkan gaming board yang menunjukkan posisi setiap battleship.

Contoh tampilan pada case User Kalah

Permainan telah berakhir

0 0 0 0 0 0 0 0 0 0
0 0 X 0 0 X X X 0 0
0 0 X 0 0 0 X 0 0 0
0 0 X 0 0 _ 0 _ 0 0
0 _ X X X _ 0 _ 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 _ 0 0 0
0 0 X 0 0 0 _ 0 0 0
0 0 X 0 0 0 0 0 0 0
0 0 0 0 X X X X 0 0
Case2 : User Menang
Terjadi ketika user telah berhasil “menembak” seluruh battleship. Program menampilkan pesan
“Selamat Anda Memenangkan Permainan”

Contoh tampilan pada case User Menang

Selamat Anda Memenangkan Permainan

0 0 0 0 0 0 0 0 0 0
0 0 X 0 0 X X X 0 0
0 0 X 0 0 0 X 0 0 0
0 0 X 0 0 _ 0 _ 0 0
0 _ X X X _ 0 _ 0 0
0 0 0 0 0 0 0 0 _ 0
0 _ 0 0 0 0 _ 0 _ 0
0 _ X 0 0 0 _ 0 0 0
0 0 X 0 0 0 0 0 0 0
0 0 0 0 X X X X 0 0

Bonus
Mengimplementasikan rotasi untuk tiap jenis battleship. Spesifikasi rotasi bebas, namun minimal 2
jenis posisi untuk tiap battleship. Bentuk tiap battleship tidak boleh diubah.

Contoh rotasi untuk jenis Battleship 1 :


Spesifikasi Pengumpulan Tugas
Terdapat 4 item yang dikumpulkan, yaitu

1. Netbeans Project, folder project dikompress dalam bentuk rar


2. File executable dalam bentuk jar
3. Laporan dalam bentuk pdf (sofcopy dan hardcopy)
4. File presentasi dalam bentuk ppt

Keempat item tersebut diupload ke elearning oleh ketua kelompok. Batas pengumpulan tugas di
elearning adalah hari Senin, 19 November 2018 jam 05.00 WIB. Selanjutnya tugas akan
dipresentasikan bergiliran pada jam kuliah dengan waktu presentasi tiap kelompok adalah 20
menit. Isi presentasi adalah 5 menit penjelasan solusi, 5 menit demo, dan 10 menit tanya jawab.
Laporan hardcopy dikumpulkan pada jam kuliah sebelum presentasi.

Spesifikasi Laporan
Laporan terdiri atas:

1. Nama & NIM anggota kelompok


2. Deskripsi persoalan (singkat, max setengah halaman)
3. Flowchart diagram (detil aksi & output untuk tiap fase)
4. Penjelasan tiap kelas & method yang diimplementasikan
5. Pembagian tugas dengan detil, yaitu sampai dengan nama fungsi yang diimplementasikan
oleh tiap anggota
6. Format laporan bebas

Anda mungkin juga menyukai