بازی مین یاب در اکسل می تواند هم توان VBA شما را افزایش دهد و هم شما را تا حدودی سرگرم کند ، اگر از کاربران قدیمی ویندوز باشید این بازی محبوب را به یاد دارید ، حالا می خواهیم این بازی را در اکسل پیاده سازی کنیم .
مراحل ساخت بازی مین یاب در اکسل
ابتدا یک فیال جدید اکسل باز کنید و محدوه A1:J10 آن را به عرض و ارتفاع دلخواه تغییر دهید ، البته این محدوده پیشنهادی بوده و شما می توانید محدوده خود را ایجاد نمائید .
- برای این محدوده حاشیه در نظر بگیرید و Gridline اکسل را غیر فعال کنید
- کلیدهای Alt + W + V + G خطهای اکسل را مخفی می کند .
- به صورت تصادفی در برخی از خانه های محدوده ایجاد شده حرف B را وارد کنید .
- این کار را با کدهای زیر انجام دهید .
Sub SetupGameBoard()
Dim i As Integer, j As Integer
Dim numRows As Integer, numCols As Integer
numRows = 10
numCols = 10
For i = 1 To numRows
For j = 1 To numCols
Cells(i, j).Value = ""
Cells(i, j).Interior.Color = RGB(255, 255, 255)
Next j
Next i
For i = 1 To 10
Dim rowNum As Integer, colNum As Integer
rowNum = Int((numRows * Rnd) + 1)
colNum = Int((numCols * Rnd) + 1)
Cells(rowNum, colNum).Value = "B"
Next i
End Subبا اجرای کدهای بالا در محدوده A1:J10 به صورت تصادفی 10 حرف B قرار میگیرد ، اگر میخواهید بازی سخت تر شود می تواند عدد 10 را افزایش دهید.
خب در ادامه باید اعداد راهنما را کنار حروف B که همان مین ها هستند قرار دهیم ، برای این منظور هم از کد زیر استفاده می کنیم .
Sub CalculateAdjacentBombs()
Dim i As Integer, j As Integer, x As Integer, y As Integer
Dim numRows As Integer, numCols As Integer, bombCount As Integer
numRows = 10
numCols = 10
For i = 1 To numRows
For j = 1 To numCols
If Cells(i, j).Value <> "B" Then
bombCount = 0
For x = -1 To 1
For y = -1 To 1
If (i + x > 0 And i + x <= numRows) And _
(j + y > 0 And j + y <= numCols) Then
If Cells(i + x, j + y).Value = "B" Then
bombCount = bombCount + 1
End If
End If
Next y
Next x
If bombCount > 0 Then
Cells(i, j).Value = bombCount
End If
End If
Next j
Next i
End Subبا اجرای دو کد بالا ما شرایط بازی را آماده کرده ایم و حالا باید در رویداد SelectionCHange شیت خود کدهایی را بنویسیم که اگر کاربر در محدوده A1:J10 کلیک کرد اگر محتوای آن حرف B بقیه سلولهای محدوده را هم نمایش دهد و اگر B نبود محتوای آن را نمایش دهد که این کارها با تغییر رنگ و فونت انجام می شود .
در ادامه کدهای مربوط به تکمیل بازی مین یاب در اکسل آورده شده است ، خودتان اولین بازی را در اکسل ایجاد کنبد .

نتیجه اجرای دو قطعه کد بالا برای ساخت بازی مین یاب در اکسل را می بینید ، در ادامه باید رنگ فونت نوشته ها و پس زمینه آنها سفید شود که دیده نشود و با کلیک روی آنها اگر حرف B نبود پس زمینه آن خاکستری شود و اگر B بود پس زمینه B ها قرمز و مابقی سبز شود .
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim currentPlayerRow As Long
Dim currentScore As Integer
currentPlayerRow = ThisWorkbook.Sheets("Sheet1").Range("N1").Value
If Not Intersect(Target, Range("A1:J10")) Is Nothing Then
If Target.Cells.CountLarge > 1 Then Exit Sub
If Target.Value = "B" Then
If isFirstClick Then
ThisWorkbook.Sheets("Sheet1").Cells(currentPlayerRow, "M").Value = 0
End If
MsgBox "خسته نباشيد 🙂 براي يادگيري اکسل " & vbCrLf & vbCrLf & " يه سر به Officebaz.ir بزن", vbOKOnly Or vbExclamation Or vbMsgBoxRtlReading Or vbMsgBoxRight, " بازی مین یاب در اکسل "
Call RevealAllCells
Exit Sub
End If
isFirstClick = False
Target.Font.Color = RGB(0, 0, 0)
Target.Interior.Color = RGB(200, 200, 200)
currentScore = CalculateScore()
ThisWorkbook.Sheets("Sheet1").Cells(currentPlayerRow, "M").Value = currentScore
End If
End Subکدهای دیگری هم برای تکمیل بازی مین یاب در اکسل می توانید اضافه کنید مثلا ، من برای اینکه نام شرکت کننده ها را داشته باشیم و امتیاز آنها را ثبت کنیم ، کدهایی اضافه کردم که کارهای زیر را انجام می دهد.
- با یک InputBox نام کاربر را می گیرد.
- نام کاربر را در اولین ردیف خالی ستون L قرار میدهد .
- در رویداد SelectionChange هم کدهایی وجود دارد که به ازای هر کلیک صحیح یک امتیاز در ستون M قرار می دهد.
- بالاترین امتیاز کسب شده در ستون L را سب میکند که با قالبدهی شرطی انجام می شود .
سعی می کنیم پس از این در این سایت سرگرمی های اکسل را بیشتر قرار دهیم و بازی مین یاب در اکسل شروعی برای این هدف است .
چرا که همواره انجام سرگرمی هم نیاز انسان است و هم در یادگیری و درک VBA اکسل توانایی های آن کمک کننده می باشد.


