Bermain Minesweeper berbeda dengan Memenangkan Minesweeper. Untuk bermain Minesweeper hanya diperlukan Jari Tangan dan dapat dipastikan dalam 2-10 langkah pemain akan Kalah. Berbeda halnya dengan Memenangkan Minesweeper, Memenankan Minesweeper tidak hanya diperlukan Jari Tangan, namun diperlukan pula Logika dan Algoritma supaya dapat Memenangkan Permainan ini.
Jadi,,,, Inginkah Anda Menang Minesweeper??
Maka dari itu admin memberikan Algoritma agar pembaca dapat memenangkan Minesweeper setelah membaca tuntas seluruh artikel ini.
Berikut merupakan Analisa Pseudocode untuk memenangkan Minesweeper. Agar pembaca tidak bingung sewaktu membaca yang mana yang analisa dan yang mana yang pseudocode, maka saya membedakan pseudocode asli dengan penjelasan rinci. Pseudocode asli dikemas dengan Bahasa Inggris dan penjelasan rinci menggunakan Bahasa Indonesia.
Ini adalah pseudocodes aslinya:
pseudocode_minesweeper(nilaibox, i, j, n, m :integer)
Totalrows:=n
Totalcolloumn:=m
//open a starter nilaibox(i,j), actually this is random,
but I usually open the center box, I believe the center box make bigger opening
than others, this is a tips too I think (^^)v
open
nilaibox([n/2],[n/2])
//here we go to find boms!!
for j= 1 to n
for j:= 1 to n
if there's an equal nilaibox as equal as clossed box
then find bomb by find an equal box as equal as clossed
box
for
i:= 1 to n
for
j:= 1 to n
if
nilaibox(i,j)==clossed_box_arround_it
then
right click on the close box (flagged)
//open
the other box which are not bombs (flagged)
for
i:= 1 to n
for
j:= 1 to n
if
nilaibox(i,j)==totalflagged
then
open another clossed box arround it (by double click on nilaibox(i,j))
else use the Advanced Arithmetical Method on the plain
clossed boxes
then find bomb by find an equal box as equal as clossed
box
for
i:= 1 to n
for
j:= 1 to n
if
nilaibox(i,j)==clossed_box_arround_it
then
right click on the close box (flagged)
//open
the other box which are not bombs (flagged)
for
i:= 1 to n
for
j:= 1 to n
if
nilaibox(i,j)==totalflagged
then
open another clossed box arround it (by double click on nilaibox(i,j))
Jangan pusing dahulu, dapat kita lihat tulisan warna Biru yang atas sama dengan tulisan warna Biru yang bawah, berikut merupakan penjelasan satu-satu secara rincinya:
procedure how_to_win_minesweeper(nilaibox, i, j, n, m :integer)
Totalrows:=n
Total rows disini diartikan sebagai jumlah baris dalam permainan minesweeper, dan selanjutnya disebut "n" agar mudah dalam langkah - langkah berikutnya. Dibawah ini merupakan spoiler dari totalrows:
Totalcolloumn:=m
Sama halnya dengan Total rows, Totalcolloumn disini diartikan sebagai jumlah kolom dalam permainan minesweeper, dan selanjutnya disebut "m" agar mudah dalam langkah - langkah berikutnya. Dibawah ini merupakan spoiler dari totalcolloumn:
//open a starter nilaibox(i,j), actually this is random, but
I usually open the center box, I believe the center box make bigger opening
than others, this is a tips too I think (^^)v
open
nilaibox([n/2],[m/2])
Untuk memulai permainan ini, diperlukan suatu pembukaan yang luar biasa agar mudah untuk menemukan Zona Pasti Bom maupun Zona Aman Bom diawal permainan. Salah satu tips dari saya, saya telah mencoba berkali-kali untuk membuat suatu pembukaan yang luar biasa mulai dari pojok-pojokan namun ada kalanya membuka box dipojok-pojok tidak membuat suatu pembukaan yang luar biasa bahkan kadang muncul bom. Namun hal ini tidak terjadi lagi ketika saya mencoba untuk membuat suatu opening di tengah-tengah kolom dan baris box, alias nilaibox([n/2],[m/2]). Mengapa saya menggunakan [] karena kolom dan baris total pada minesweeper tidak selalu genap, maka ketika total baris dan kolom bersifat ganjil maka akan otomatis membulatkan atau round. Berikut spoilernya pembukaan ditengah:
//here we go to find boms!!
for i= 1 to n
for j:= 1 to n
if there's an equal nilaibox as equal as clossed box
then
find bomb by find an equal box as equal as clossed box
Setelah melakukan opening yang baik ditengah-tenga kolom dan baris maka selanjutnya yang harus dikerjakan adalah menemukan apakah ada nilaibox yang terbuka memiliki box yang masih tertutup sejumlah dengan nilai yang muncul pada nilaibox dengan kata lain yang lebih mudah Apakah Ada Zona Pasti Bom?. Berikut spoilernya supaya tidak bingung:
Gambar diatas merupakan contoh apabila ada nilaibox (bernilai satu) yang masih memiliki (satu) box tertutup. Karena ada salah satu saja yang sesuai dengan pernyataan diatas maka kita bisa melanjutkan ke perintah selanjutnya yaitu menandai Zona Pasti Bom.
for i:=
1 to n
for
j:= 1 to m
if
nilaibox(i,j)==clossed_box_arround_it
then
right click on the close box (flagged)
Disini merupakan proses Pencarian Zona Pasti Bom. Mengapa perlu dua for? karena Minesweeper merupakan permainan platform dua dimensi sehingga memerlukan perulangan pertama untuk Baris dan perulangan kedua untuk Kolom. Jikalau nilaibox(i,j) memiliki nilai yang sama dengan jumlah box yang masih tertutup disekitarnya seperti nilaibox(i-1,j-1), nilaibox(i,j-1), nilaibox(i+1,j-1),
nilaibox(i-1,j), nilaibox(i+1,j), nilaibox(i-1,j+1), nilaibox(i,j+1) maupun nilaibox(i+1,j+1) maka lakukan klik kanan atau dengan kata lain menandai pada box yang masih tertutup tersebut. Berikut merupakan spoilernya:
Jikalau persyaratan terpenuhi seperti gambar diatas ini, maka lakukanlah penandaan atau klik kanan pada box yang masi tertutup tersebut. berikut spoilernya:
Setelah melakukan proses penandaan atau klik kanan pada Zona Pasti Bom, maka kita bisa melanjutkan untuk proses selanjutnya yaitu proses pencarian Zona Aman Bom. Dibawah ini adalah langkah-langkah yang digunakan untuk mencari Zona Aman Bom.
//open
the other box which are not bombs (flagged)
for
i:= 1 to n
for
j:= 1 to m
if
nilaibox(i,j)==totalflagged
then
open another clossed box arround it (by double click on nilaibox(i,j))
Sama dengan proses pencarian Zona Pasti Bom, Proses Pencarian Zona Aman Bom memerlukan dua for karena Minesweeper merupakan permainan platform dua dimensi sehingga memerlukan perulangan pertama untuk Baris dan perulangan kedua untuk Kolom. Jikalau nilaibox(i,j) memiliki nilai yang sama dengan jumlah box yang telah ditandai (telah diklik kanan) disekitarnya seperti nilaibox(i-1,j-1), nilaibox(i,j-1), nilaibox(i+1,j-1), nilaibox(i-1,j), nilaibox(i+1,j), nilaibox(i-1,j+1), nilaibox(i,j+1) maupun nilaibox(i+1,j+1) maka lakukan double klik pada nilaibox(i,j) tersebut untuk membuka Zona Aman Bom disekitarnya. Berikut merupakan spoilernya:
Pada gambar diatas dapat dilihat, nilaibox(6,2) bernilai 1, serta nilaibox(6,2) memiliki 1 box yang telah ditandai, maka pemain dapat mendouble klik nilaibox(6,2) karena disekitar nilaibox(6,2) sekarang sudah pasti Zona Aman Bom, kecuali box yang ditandai bendera. Berikut merupakan spoilernya:
Setelah menyelesaikan satu permasalahan, maka pemain akan melakukan pegulangan lagi untuk mencari Zona Pasti Bom, setelah menemukan Zona Pasti Bom maka pemain akan mencari Zona Aman Bom, begitu pula seterusnya. Berikut merupakan spoilernya:
else use the Advanced Aritmetical Method (AAM) on the plain clossed
boxes
//exactly this Advanced Aritmetical Method (AAM) is used for Advance
level not Beginner or Intermediet because the advance one is rather difficult
than another
Nah sudah dijelaskan pada Teori Dasar Minesweeper, apabila pemain Tidak menemukan lagi Zona Aman Bom dan Zona Pasti Bom maka pemain harus melakukan Advanced Aritmetical Method (AAM). AAM ini tidak perlu dilakukan apabila bermain pada level Beginner dan Intermediet, namun AAM ini sangat diperlukan untuk memenangkan permainan di level Advance, karena sangat sering pemain akan dihadapkan pada kondisi tidak ada lagi Zona Aman maupun Zona Pasti Bom, semua yang ada hanyalah Zona Penebakan.
Setelah pemain menyelesaikan Zona Penebakan, maka pemain dapat melanjutkan kembali menandai Zona Pasti Bom dan membuka Zona Aman Bom dengan cara yang sama seperti proses Pseudocode warna biru yang sama diatas. Begitu pula seterusnya disinilah gunanya dua for yang pertama, mereka akan terus mengulang hingga Zona Aman Bom terbuka semua yang berarti "You Win".
See also: