بازی مین یاب در اکسل

بازی مین یاب در اکسل می تواند هم توان VBA شما را افزایش دهد و هم شما را تا حدودی سرگرم کند ، اگر از کاربران قدیمی ویندوز باشید این بازی محبوب را به یاد دارید ، حالا می خواهیم این بازی را در اکسل پیاده سازی کنیم .

مراحل ساخت بازی مین یاب در اکسل

ابتدا یک فیال جدید اکسل باز کنید و محدوه A1:J10 آن را به عرض و ارتفاع دلخواه تغییر دهید ، البته این محدوده پیشنهادی بوده و شما می توانید محدوده خود را ایجاد نمائید .

  1. برای این محدوده حاشیه در نظر بگیرید و Gridline اکسل را غیر فعال کنید 
  2. کلیدهای Alt + W + V + G خطهای اکسل را مخفی می کند .
  3. به صورت تصادفی در برخی از خانه های محدوده ایجاد شده حرف B را وارد کنید .
  4. این کار را با کدهای زیر انجام دهید .
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

کدهای دیگری هم برای تکمیل بازی مین یاب در اکسل می توانید اضافه کنید مثلا ، من برای اینکه نام شرکت کننده ها را داشته باشیم و امتیاز آنها را ثبت کنیم ، کدهایی اضافه کردم که کارهای زیر را انجام می دهد.

  1. با یک InputBox نام کاربر را می گیرد.
  2. نام کاربر را در اولین ردیف خالی ستون L قرار میدهد .
  3. در رویداد SelectionChange هم کدهایی وجود دارد که به ازای هر کلیک صحیح یک امتیاز در ستون M قرار می دهد.
  4. بالاترین امتیاز کسب شده در ستون L را سب میکند که با قالبدهی شرطی انجام می شود .

سعی می کنیم پس از این در این سایت سرگرمی های اکسل را بیشتر قرار دهیم و بازی مین یاب در اکسل شروعی برای این هدف است . 

چرا که همواره انجام سرگرمی هم نیاز انسان است و هم در یادگیری و درک VBA اکسل توانایی های آن کمک کننده می باشد.

3.8/5 - (5 امتیاز)
پیشنهاد آفیس باز

تمام آموزشهای اکسل بیش از 300 ویدیو و پروژه و فایل و تمرین به شکل گروه بندی شده و مرتب ...

باکس دانلود

فایل اکسل متن باز بازی مین یاب در اکسل را به رایگان دانلود کنید و لذت ببرید

یادگیری اصولی اکسل !

تمام آموزشهای اکسل در قالب یک برنامه آموزشی با بیش از 300 ویدیو و پروژه و فایل و تمرین به شکل گروه بندی شده و مرتب که کاملا مسیر یادگیری اکسل را برای شما هموار می کنید .

دنبال کردن
اطلاع رسانی به

2 نظرات
پر امتیاز ترین
جدیدترین قدیمی ترین
Inline Feedbacks
مشاهده همه دیدگاهها

دانلود رایگان !!

لطفا شماره موبایلی وارد کنید که روی آن واتس اپ دارید !!

بهتر است که شماره موبایل با واتس اپ فعال وارد کنید و از اخبار و تخفیف ها هم با خبر شوید ، در غیر اینصورت می توانید آدرس ایمیل وارد نمائید.

happy holidays

we want to hear from you

https://dl.officebaz.ir/free/excelLearning/BoardGame.xlsm