所以,ResetGame() 被呼喚以後,玩家看到的環境可能會是如許:CommandButton1 上面顯示的是 "7"、CommandButton2 上面顯示的是 "4"、CommandButton3 上面顯示的是空白......等等,其實每個 CommandButton 都還在它的原位上沒動。
接下來,玩家就會用滑鼠指標去點他想移動的方塊。
把這 9 個按鈕依上圖的挨次排成所謂的「九宮格」,於是我們就把聰明盤的九個方塊做好了。讀到後面翻譯公司就會知道,這 CommandButton1~CommandButton9 的排列位置很是主要。最後,再增添一個 CommandButton10做為 "入手下手/重玩" 鈕。
Randomize '亂數產生器初始化
Sub EnableBlocks() '使那 9 個方塊按鈕有效
Dim i As Integer
For i = 1 To 9
Controls("CommandButton" & i).Enabled = True
Next i
End Sub
移動?......對啦!而今你知道了吧!所謂的「移動」也只是「改
Sub DisableBlocks() '使那 9 個方塊按鈕無效
Dim i As Integer
For i = 1 To 9
Controls("CommandButton" & i).Enabled = False
Next i
End Sub
For i = 1 To 9
Do
RndNum = Int(Rnd() * 9) '產生 0~8 的亂數
NewNum = True
If i > 1 Then '檢查 a 陣列裡是否已有此整數
For j = 1 To i - 1
If a(j) = RndNum Then NewNum = False
Next j
End If
Loop While Not NewNum '重覆此迴圈直到產生的整數是 a 陣列裡沒有的
、CommandButton1 的 "Caption" 屬性改成 "2"......依此類推,惟有 CommandButton9 的 "Caption" 屬性改成空的(什麼都沒有)翻譯
怎麼把方塊的分列順序弄亂?
在兩個副程式裡,你可以看到「Controls(節制項名稱).屬性」如許的寫法來改按鈕的屬性,這裡也示範了利用方塊按鈕名稱的特徵,以 for......next 迴圈一次解決 9 個按鈕的屬性更改翻譯
Sub ResetGame() '重設角逐
Dim RndNum As Integer翻譯社 a(9) As Integer, i As Integer
Dim NewNum As Boolean
"使按鈕無效" 就是要把它的 "Enabled" 屬性設為 "False",當遊戲起頭的時刻,要 "使按鈕有用" 就是要把它的 "Enabled" 屬性設為 "True"。因為程式裡會重複用到,所以天成翻譯公司寫成兩個副程式:
當玩家按下 "起頭/重玩" 鈕的時刻,CommandButton10_Click() 裡會做底下這幾件事:
前一篇介紹的九宮格聰明般遊戲,程式分成兩個部分,一個是模組裡的部分 ,一個是 Userform 的部份翻譯模組裡的是計時的 Timer 程式碼,它不是這個遊戲的重點 (不計時也能夠),在此暫且略過。天成翻譯公司想介紹的是遊戲視窗 (也就是 Userform) 裡那些方塊按鈕的道理。
怎麼改變方塊按鈕的屬性?
a(i) = RndNum '把這個整數插手 a 陣列
If RndNum = 0 Then
Controls("CommandButton" & i).Caption = "" '0 號是空白方塊, 上面不要字
Else
Controls("CommandButton" & i).Caption = Str(a(i)) '把這個整數 show 在第 i 個按鈕
End If
Next i
Private Sub CommandButton10_Click() '起頭/重玩 鈕
Call ResetGame '重設競賽
StartGame = True
Call EnableBlocks '使那 9 個方塊按鈕有效
Call StartTimer '入手下手計時
End Sub
"重設比賽" 除把移動次數和利用時候歸零以外,最重要工作是,要把方塊的排列按次弄亂。「把方塊的擺列順序弄亂」其實並沒有移動那九個按鈕,而是更改它們上面顯示的數字,也就是更改它們的 "Caption" 屬性。
End Sub
上面顯示的數字」而已!我們下回分解。
相關文章:3x3九宮格聰明盤小遊戲 九宮格聰明般遊戲程式原理(下)
製作主要的元件
這 9 個按鈕的名稱特徵,就是最右側依序是 1~9 的數字,在這個遊戲的程式裡,這長短常極度主要的翻譯我們可以在 VBE 裡,手動更改按鈕的名稱,也就是它的 "Name"屬性。事實上,可以把 "CommandButton" 統統改成 "c" 和 "x"、"Block"......etc. 都可以,只要有阿誰數字在,而且程式碼裡寫的和按鈕的名稱一致就能夠。為了讓各人輕易領會程式正在處理的控制項是按鈕,我決心不改掉 "CommandButton" 翻譯
接下來,就從 UserForm 被 show 出來的時候講起翻譯在 UserForm_Initialize() 裡面要做的初始化工作包羅:把計時與計次等等的變數歸零、用 Inputbox 請玩家輸入姓名,還有就是使那 9 個方塊按鈕無效 (呈現淡色的狀態)。
開始設計的時辰,起首在Excel VBE 編輯情況裡新增一個表單, 也就是 Userform,然後在這個 Userform 上做一個正方形的 CommandButton 按鈕,它的節制項名稱 (Name屬性) 為 "CommandButton1"。把 CommandButton1 的 "Font" 屬性改成粗體並且較大的字型,然後把個這按鈕複製出另外 8 個,所以就有 CommandButton1~CommandButton9 總共 9 個按鈕。把 CommandButton1 的 "Caption" 屬性,也就是按鈕上顯示的文字,改成 "1"
Moves = 0 '移動次數歸零
LapseTime = 0 '利用時間歸零
Label2.Caption = CStr(Moves)
Label4.Caption = CStr(LapseTime)
在 ResetGame() 裡,For ...... Next 迴圈會執行 9 次,順次會決意一個按鈕上要顯示的數字。For ...... Next 迴圈裡要設給按鈕上的數字,是以 Rnd() 產生亂數運算出 0~8 的整數,為了避免重複,把已過用的數貯存到陣列裡,用來查對翻譯
文章出自: http://blog.udn.com/WayCheng/2741455有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931
