📄 formmain.vb
字号:
' mnuDiagonal
'
Me.mnuDiagonal.Text = "Diagonal"
'
' mnuVertical
'
Me.mnuVertical.Text = "Vertical"
'
' mnuFlawedVertical
'
Me.mnuFlawedVertical.Text = "FlawedVertical"
'
' mnuCheckers
'
Me.mnuCheckers.MenuItems.Add(Me.mnuBoard)
Me.mnuCheckers.MenuItems.Add(Me.mnuSelfFix)
Me.mnuCheckers.MenuItems.Add(Me.mnuSelfDestruct)
Me.mnuCheckers.Text = "Checkers"
'
' mnuBoard
'
Me.mnuBoard.Text = "Board"
'
' mnuSelfFix
'
Me.mnuSelfFix.Text = "Self Fixing"
'
' mnuSelfDestruct
'
Me.mnuSelfDestruct.Text = "Self Destructive"
'
' mnuGliders
'
Me.mnuGliders.MenuItems.Add(Me.mnuGlider)
Me.mnuGliders.MenuItems.Add(Me.mnuGliderMate)
Me.mnuGliders.MenuItems.Add(Me.mnuGliderPump)
Me.mnuGliders.Text = "Gliders"
'
' mnuGlider
'
Me.mnuGlider.Text = "Single"
'
' mnuGliderMate
'
Me.mnuGliderMate.Text = "Mate"
'
' mnuGliderPump
'
Me.mnuGliderPump.Text = "Pump"
'
' mnuAbout
'
Me.mnuAbout.Text = "&Help"
' Starting selections
'Me.mnuSpeed_Click(Me.mnuSpeedNormal, EventArgs.Empty)
'Me.mnuZoom_Click(Me.mnuSizeNormal, EventArgs.Empty)
End Sub
#End Region
#Region "Utitlities"
Private Function LittlePowerOfTwo(ByVal exponent As Integer) As Integer
' Don't laugh. It is not in the CLR
' (except for SQL non-integer types).
Select Case exponent
Case 0
Return 1
Case 1
Return 2
Case 2
Return 4
Case 3
Return 8
Case 4
Return 16
Case 5
Return 32
Case 6
Return 64
Case 7
Return 128
Case 8
Return 256
Case 9
Return 512
Case 10
Return 1024
Case Else
Return 1024
End Select
End Function 'LittlePowerOfTwo
#End Region
#Region "Menu Processing"
Private Sub mnuStartStop_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) _
Handles mnuStartStop.Click
' The Start/Stop button is a toggle.
boolRun = Not boolRun
' If requested to run.
If boolRun Then
' Do not allow the user to do certain
' things while the game is running.
btnStartStop.Text = "S&top"
mnuStartStop.Text = "S&top"
mnuExit.Enabled = False
' Notify the object to start the game.
refLifeMain.StartGame()
' If requested to stop.
Else
refLifeMain.StopGame()
btnStartStop.Text = "S&tart"
mnuStartStop.Text = "S&tart"
mnuExit.Enabled = True
End If
End Sub 'mnuStartStop_Click
Private Sub mnuExit_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) _
Handles mnuExit.Click
Application.Exit()
End Sub 'mnuExit_Click
Private Sub mnuPatterns_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) _
Handles mnuBoard.Click, _
mnuDiagonal.Click, _
mnuEightCell.Click, _
mnuEmpty.Click, _
mnuFiveCell.Click, _
mnuFlawedVertical.Click, _
mnuGlider.Click, _
mnuGliderMate.Click, _
mnuGliderPump.Click, _
mnuSelfDestruct.Click, _
mnuSelfFix.Click, _
mnuSixCell.Click, _
mnuTenCell.Click, _
mnuVertical.Click
' Some pattern work best at certain sizes.
' if( sender == mnuTenCell ) tbarSize.Value = 7;
' if( sender == mnuFlawedVertical ) tbarSize.Value = 7;
' Inform the LifeMain object of the
' requested pattern.
If sender Is mnuEmpty Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpEmpty)
End If
If sender Is mnuFiveCell Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpFiveCell)
End If
If sender Is mnuSixCell Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpSixCell)
End If
If sender Is mnuEightCell Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpEightCell)
End If
If sender Is mnuTenCell Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpTenCell)
End If
If sender Is mnuVertical Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpVertical)
End If
If sender Is mnuFlawedVertical Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpFlawedVertical)
End If
If sender Is mnuDiagonal Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpDiagonal)
End If
If sender Is mnuBoard Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpBoard)
End If
If sender Is mnuSelfFix Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpSelfFix)
End If
If sender Is mnuSelfDestruct Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpSelfDestruct)
End If
If sender Is mnuGlider Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpGlider)
End If
If sender Is mnuGliderMate Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpGliderMate)
End If
If sender Is mnuGliderPump Then
refLifeMain.SetPattern(LifeMain.lgpPattern.lgpGliderPump)
End If
' If there is a pattern in the window,
' enable the start button and give
' it the focus.
btnStartStop.Enabled = Not (sender Is mnuEmpty)
mnuStartStop.Enabled = Not (sender Is mnuEmpty)
If btnStartStop.Enabled Then
btnStartStop.Focus()
End If
' Prepare to draw the patterns.
facadeLifeGame.Invalidate()
End Sub 'mnuPatterns_Click
Private Sub mnuReset_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) _
Handles mnuReset.Click
refLifeMain.Reset()
facadeLifeGame.Invalidate()
End Sub 'mnuReset_Click
Private Sub mnuManual_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) _
Handles mnuManual.Click
MessageBox.Show("Click in the window to create or alter a pattern")
End Sub 'mnuManual_Click
Private Sub mnuSpeed_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) _
Handles mnuFast.Click, _
mnuFaster.Click, _
mnuFastest.Click, _
mnuSpeedNormal.Click, _
mnuSlow.Click, _
mnuSlower.Click, _
mnuSlowest.Click
If refLifeMain Is Nothing Then
Return
End If
Select Case CType(sender, MenuItem).Text
Case "Fastest"
refLifeMain.ChangeRunSpeed(CInt(utilGUI.gameSpeed.gsFastest))
Case "Fast"
refLifeMain.ChangeRunSpeed(CInt(utilGUI.gameSpeed.gsFast))
Case "Faster"
refLifeMain.ChangeRunSpeed(CInt(utilGUI.gameSpeed.gsFaster))
Case "Normal"
refLifeMain.ChangeRunSpeed(CInt(utilGUI.gameSpeed.gsNormal))
Case "Slower"
refLifeMain.ChangeRunSpeed(CInt(utilGUI.gameSpeed.gsSlower))
Case "Slow"
refLifeMain.ChangeRunSpeed(CInt(utilGUI.gameSpeed.gsSlow))
Case "Slowest"
refLifeMain.ChangeRunSpeed(CInt(utilGUI.gameSpeed.gsSlowest))
End Select
End Sub 'mnuSpeed_Click
Private Sub mnuZoom_Click(ByVal sender As Object, _
ByVal e As System.EventArgs _
) _
Handles mnuIn.Click, _
mnuInnest.Click, _
mnuOut.Click, _
mnuOutest.Click, _
mnuSizeNormal.Click
If refLifeMain Is Nothing Then
Return
End If
Select Case CType(sender, MenuItem).Text
Case "Innest"
refLifeMain.ChangeDisplaySize(CInt(utilGUI.gameZoom.gzInnest))
Case "In"
refLifeMain.ChangeDisplaySize(CInt(utilGUI.gameZoom.gzIn))
Case "Normal"
refLifeMain.ChangeDisplaySize(CInt(utilGUI.gameZoom.gzNormal))
Case "Out"
refLifeMain.ChangeDisplaySize(CInt(utilGUI.gameZoom.gzOut))
Case "Outest"
refLifeMain.ChangeDisplaySize(CInt(utilGUI.gameZoom.gzOutest))
End Select
End Sub 'mnuZoom_Click
#End Region
#Region "Event Handlers"
Private Sub facadeLifeGame_MouseUp(ByVal sender As Object, _
ByVal e As MouseEventArgs _
) _
Handles facadeLifeGame.MouseUp
' The user is entering a pattern,
' enable Run.
btnStartStop.Enabled = (mnuStartStop.Enabled = True)
End Sub 'facadeLifeGame_MouseUp
Private Sub LifeMain_NextGenReady(ByVal sender As Object, _
ByVal e As EventArgs _
) _
Handles refLifeMain.NextGenReady
' Place a reference to the current and previous
' generation into properties of the control.
' Then have the control draw the current
' generation.
Me.facadeLifeGame.refCurr = refLifeMain.genCurr
Me.facadeLifeGame.refPrev = refLifeMain.genPrev
Me.facadeLifeGame.Invalidate()
Application.DoEvents()
End Sub 'LifeMain_NextGenReady
Private Sub LifeMain_StableStateReached(ByVal sender As Object, _
ByVal e As EventArgs _
) _
Handles refLifeMain.StableStateReached
' Delegate routine. Called by LifeMain
' when the pattern is now static.
mnuStartStop_Click(Me, EventArgs.Empty)
Application.DoEvents()
MessageBox.Show("Steady State")
End Sub 'LifeMain_StableStateReached
#End Region
#Region "Termination"
Private Sub FormMain_Closing(ByVal sender As Object, _
ByVal e As CancelEventArgs _
) _
Handles MyBase.Closing
' If the form is closing, STOP THE GAME.
If Not (refLifeMain Is Nothing) Then
refLifeMain.StopGame()
End If
End Sub 'FormMain_Closing
#End Region
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -