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 Battleships
Battleships merupakan array of Poin yang berisi posisi dari battleship pada matriks gaming board.
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)
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).
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”
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.
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: