prePic(i).Image = Image.FromFile(ImgList(ThreeBI(i)))
col = ThreeBP(i) Mod 9
row = ThreeBP(i) \ 9
prePic(i).Location = New Point(col * 45 + _
intBaseX + (38 – prePic(i).Width) / 2, _
row * 45 + intBaseY + (38 – prePic(i).Height) / 2)
prePic(i).Visible = True
prePic(i).BringToFront()
End If
If ThreeBI(0) <> -1 Then
picBallPre1.Visible = True
picBallPre1.Image = _
Image.FromFile(ImgList(ThreeBI(0)))
End If
If ThreeBI(1) <> -1 Then
picBallPre2.Visible = True
picBallPre2.Image = _
Image.FromFile(ImgList(ThreeBI(1)))
Else
picBallPre2.Visible = False
End If
If ThreeBI(2) <> -1 Then
picBallPre3.Visible = True
picBallPre3.Image = _
Image.FromFile(ImgList(ThreeBI(2)))
Else
picBallPre3.Visible = False
End If
Next
End Sub
Private Sub PrePic_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Dim i As Integer = Array.IndexOf(prePic, sender)
Dim MP As MotionPic = MPBoxes(ThreeBP(i))
Call Ball_Click(MP, e)
End Sub
'#Region "Save and Load Game"
Private Sub SaveGame()
Dim strNewLine = Chr(13) + Chr(10)
Dim s As String = Nothing
playerScore = DDScore.number
playerTime = DDTime.number
s += "#Assignment Line" + strNewLine
s += playerName.ToString + strNewLine
s += playerScore.ToString + strNewLine
s += playerTime.ToString + strNewLine
For i As Integer = 0 To 2
s += ThreeBI(i).ToString + ";" + ThreeBP(i).ToString
If i < 2 Then
s += ","
End If
Next
s += strNewLine
For i As Integer = 0 To 80
s += MPBoxes(i).MPState.ToString + ";" + _
MPBoxes(i).MPIndex.ToString
If i < 80 Then
s += ","
End If
Next
Dim SW As StreamWriter = Nothing
Try
SW = New StreamWriter("LSF.vmt")
SW.Write(s)
Catch IOE As IOException
MessageBox.Show("Can't save File !", "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch EX As Exception
MessageBox.Show("Some Error occurs while Saving" + _
strNewLine + "Error :" + EX.ToString, _
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
SW.Close()
End Try
End Sub
Private Sub LoadGame()
Dim strRead(4) As String
Dim strBigArr() As String
Dim strSmallArr() As String
Dim SR As StreamReader = Nothing
If Not File.Exists("LSF.vmt") Then
MessageBox.Show("Save File doesn't Exists", _
"Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
Try
SR = New StreamReader("LSF.vmt")
If SR.ReadLine <> "#Assignment Line" Then
MessageBox.Show("Invalid Loaded File", "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
SR.Close()
Exit Sub
End If
For i As Integer = 0 To 4
strRead(i) = SR.ReadLine
Next
Catch IOE As IOException
MessageBox.Show("Can't load File !", "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch EX As Exception
MessageBox.Show("Some Error occurs while Loading" + _
Chr(13) + Chr(10) + "Error :" + EX.ToString, _
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
SR.Close()
End Try
'Information Loaded
playerName = strRead(0)
playerScore = CDbl(strRead(1))
playerTime = CInt(strRead(2))
ReDim strBigArr(2)
ReDim strSmallArr(1)
strBigArr = strRead(3).Split(",")
For i As Integer = 0 To 2
strSmallArr = strBigArr(i).Split(";")
ThreeBI(i) = CInt(strSmallArr(0))
ThreeBP(i) = CInt(strSmallArr(1))
Next
InitBoard(playerName, playerScore, playerTime)
ReDim strBigArr(80)
strBigArr = strRead(4).Split(",")
For i As Integer = 0 To 80
strSmallArr = strBigArr(i).Split(";")
If CInt(strSmallArr(0)) <> BallState.NO_BALL Then
MPBoxes(i).Init(CInt(strSmallArr(1)))
End If
Next
End Sub
В меню Игра дважды щёлкаем по команде Новая (для элемента управления MenuStrip). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.
Листинг 21.2. Метод-обработчик выбора команды.
Private Sub NewGameToolStripMenuItem_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles NewGameToolStripMenuItem.Click
'Обнуляем счётчик секунд:
secondCounter = 0
'Мелодия начала игры:
My.Computer.Audio.Play("..\..\Sounds\drumpad-crash.wav")
Dim plName As String = Nothing
While Trim(plName) = ""
plName = InputBox("Запишите, пожалуйста, Ваше имя " + _
"(оставлять поле пустым нельзя):", "Имя игрока")
End While
InitBoard(plName, 0, 0)
RandomThreeBalls()
GiveThreeBalls()
flagMadeNew = 1
SaveToolStripMenuItem.Enabled = True
End Sub
В меню Игра дважды щёлкаем по команде Сохранить (для элемента управления MenuStrip). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.
Листинг 21.3. Метод-обработчик выбора команды.
Private Sub SaveToolStripMenuItem_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles SaveToolStripMenuItem.Click
SaveGame()
End Sub
В меню Игра дважды щёлкаем по команде Загрузить (для элемента управления MenuStrip). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.
Листинг 21.4. Метод-обработчик выбора команды.
Private Sub LoadToolStripMenuItem_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles LoadToolStripMenuItem.Click
If flagMadeNew = 1 Then
ResetBoard()
End If
LoadGame()
flagMadeNew = 1
SaveToolStripMenuItem.Enabled = True
End Sub
В меню Игра дважды щёлкаем по команде Выход (для элемента управления MenuStrip). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.
Листинг 21.5. Метод-обработчик выбора команды.
Private Sub ExitToolStripMenuItem_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub
В меню Очки дважды щёлкаем по команде Показать (для элемента управления MenuStrip). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.
Листинг 21.6. Метод-обработчик выбора команды.
Private Sub ShowScorToolStripMenuItem_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles ShowScorToolStripMenuItem.Click
Dim frm As Form2 = New Form2
frm.Show()
frm.drawTable()
End Sub
В меню Очки дважды щёлкаем по команде “Рассчитать средние” (для элемента управления MenuStrip). Появляется шаблон метода, который после записи нашего кода принимает следующий вид.
Листинг 21.7. Метод-обработчик щелчка по элементу.
Private Sub CalculateAvgToolStripMenuItem_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles CalculateAvgToolStripMenuItem.Click
Dim strnewL = Chr(13) + Chr(10)
Dim avg As Double = DDScore.number / DDTime.number
Dim s As String = FormatNumber(avg, 3)
Dim h As New System.IntPtr
MessageBox.Show("Очки : " + DDScore.number.ToString + _
" " + "(очков)" + strnewL _