Cara Membuat Game Minisweeper di Microsoft Excel 2016
Sekarang kita bernostalgia sejenak untuk bermain Game lawas, game ini pada masanya pernah teristall di windows bawaan yaitu Game Minisweeper.
Kali ini kita akan membuat sendiri sekaligus memainkannya.Dimana kita akan membuatnya? tentu jawabannya ya di Excel 2016.
| Game Minisweeper di Excel 2016 |
Berikut adalah langkah-langakah Cara Membuat Game Minisweeper di Microsoft Excel 2016 :
1. Buka Excel
2. Wajib ganti nama Sheet dengan "Game"
3. Blok Kolom B2 sampai Kolom K11, ubah lebar dan tinggi kolom jadi 4 dan 28
4. Aktifkan Developer VBA (jika belum aktif)
Klik File >> Option >> Customize Ribbon >> Centang Developer >> Ok
5. Developer akan muncul di Menu Tab, klik tab Developer >> Visual Basic (atau Alt+F11)
6. Muncul jendela VBA Editor, tambahkan Module : Insert >> Module >> Kemudian copy di Module1 kode dibawah ini :
Option Explicit
Public Const GRID_SIZE As Integer = 10
Public Const TOTAL_MINES As Integer = 15
Public Mines(1 To GRID_SIZE, 1 To GRID_SIZE) As Boolean
Public OpenedCell(1 To GRID_SIZE, 1 To GRID_SIZE) As Boolean
Public Flags(1 To GRID_SIZE, 1 To GRID_SIZE) As Boolean
' ======= NEW GAME =======
Sub NewGame()
Dim i As Integer, j As Integer
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Game")
' Bersihkan isi saja
ws.Range("B2:K11").ClearContents
' Tampilan kotak tertutup
With ws.Range("B2:K11")
.Interior.Color = RGB(180, 180, 180)
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Size = 14
.Font.Color = vbBlack
End With
' Reset data array
For i = 1 To GRID_SIZE
For j = 1 To GRID_SIZE
Mines(i, j) = False
OpenedCell(i, j) = False
Flags(i, j) = False
Next j
Next i
' Acak bom
Randomize
Dim placed As Integer
Do While placed < TOTAL_MINES
i = Int(Rnd * GRID_SIZE) + 1
j = Int(Rnd * GRID_SIZE) + 1
If Not Mines(i, j) Then
Mines(i, j) = True
placed = placed + 1
End If
Loop
End Sub
' ======= HITUNG BOM SEKITAR =======
Function CountMines(r As Integer, c As Integer) As Integer
Dim i As Integer, j As Integer
For i = r - 1 To r + 1
For j = c - 1 To c + 1
If i >= 1 And i <= GRID_SIZE And j >= 1 And j <= GRID_SIZE Then
If Mines(i, j) Then CountMines = CountMines + 1
End If
Next j
Next i
End Function
' ======= BUKA SEL =======
Sub OpenCell(r As Integer, c As Integer)
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Game")
If OpenedCell(r, c) Or Flags(r, c) Then Exit Sub
OpenedCell(r, c) = True
ws.Cells(r + 1, c + 1).Interior.Color = RGB(230, 230, 230)
' ==== Game Over jika bom ====
If Mines(r, c) Then
ws.Cells(r + 1, c + 1).Value = "??"
ws.Cells(r + 1, c + 1).Font.Color = vbRed
MsgBox "?? Game Over! Board akan di-reset.", vbCritical
Call NewGame
Exit Sub
End If
' ==== Tampilkan angka jika ada bom di sekitar ====
Dim count As Integer
count = CountMines(r, c)
If count > 0 Then
ws.Cells(r + 1, c + 1).Value = count
Select Case count
Case 1: ws.Cells(r + 1, c + 1).Font.Color = vbBlue
Case 2: ws.Cells(r + 1, c + 1).Font.Color = vbGreen
Case 3: ws.Cells(r + 1, c + 1).Font.Color = vbRed
Case 4: ws.Cells(r + 1, c + 1).Font.Color = RGB(0, 0, 128)
Case Else: ws.Cells(r + 1, c + 1).Font.Color = vbBlack
End Select
Else
' ==== Rekursi buka sel kosong di sekitarnya ====
Dim i As Integer, j As Integer
For i = r - 1 To r + 1
For j = c - 1 To c + 1
If i >= 1 And i <= GRID_SIZE And j >= 1 And j <= GRID_SIZE Then
If Not OpenedCell(i, j) Then
OpenCell i, j
End If
End If
Next j
Next i
End If
' ==== Cek apakah menang ====
If CheckWin Then
MsgBox "?? Selamat! Kamu menang!", vbInformation
Call NewGame
End If
End Sub
' ======= CEK MENANG =======
Function CheckWin() As Boolean
Dim r As Integer, c As Integer
Dim countOpen As Integer
countOpen = 0
For r = 1 To GRID_SIZE
For c = 1 To GRID_SIZE
If OpenedCell(r, c) Then countOpen = countOpen + 1
Next c
Next r
If countOpen = (GRID_SIZE * GRID_SIZE - TOTAL_MINES) Then
CheckWin = True
Else
CheckWin = False
End If
End Function
7. Masih di Jendela VBA Editor dobel klik nama Sheet1(Game), lalu hapus semua kode jika ada dan ganti dengan kode dibawah ini :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.count > 1 Then Exit Sub
If Target.Column < 2 Or Target.Column > 11 Then Exit Sub
If Target.Row < 2 Or Target.Row > 11 Then Exit Sub
Application.EnableEvents = False
' Pertahankan background
Target.Interior.Color = Target.Interior.Color
OpenCell Target.Row - 1, Target.Column - 1
Application.EnableEvents = True
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column < 2 Or Target.Column > 11 Then Exit Sub
If Target.Row < 2 Or Target.Row > 11 Then Exit Sub
Cancel = True
Dim r As Integer, c As Integer
r = Target.Row - 1
c = Target.Column - 1
If OpenedCell(r, c) Then Exit Sub
If Flags(r, c) Then
Flags(r, c) = False
Target.Value = ""
Else
Flags(r, c) = True
Target.Value = "??"
End If
End Sub
8. Masih dijendela VBA Edito tekan CTRL+G muncul kotak immediate (posiinya dibagian bawah) lalu ketikan kata dibawah ini :
Application.EnableEvents = True
- Pilih tab Developer >> Insert >> Button (Form Control)
- Tempatkan tombol diarea (B1:K11) ubah nama tombol jadi "Play"
- Klik kanan Tombol Play pilih >>Assign Macro >> ketik pada Macro Name :NewGame (wajib)
13. Selesai
Saatnya Main :
- Klik tombol Play
- Klik area Kotak
Penting !:
Simpan dengan Nama File :namafileanda.Macro-Enabled Workbook
Demikianlah artikel Excel hari tentang Cara Membuat Game Minisweeper di Microsoft Excel 2016, semoga artikel ini bermanfaat buat kita semua.Amin
Selamat mencoba dan selamat bermain.
Post a Comment for "Cara Membuat Game Minisweeper di Microsoft Excel 2016"
Berkomentarlah dengan sopan jangan menyimpang dari tema dan dilarang melakukan komentar spam