Валерий Алексеевич Жарков

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 6: Программирование на Visual Basic искусственного интеллекта. Продолжение 2


Скачать книгу

= True

      End Sub

      Public Sub LoadScore()

      If Not File.Exists("Score.dat") Then

      GoTo newScore

      End If

      Dim FSR As New StreamReader("Score.dat")

      Dim s As String

      s = FSR.ReadLine

      If Trim(s) <> "#Assignment Line#" Then

      FSR.Close()

      GoTo newScore

      End If

      For i As Integer = 0 To 9

      s = FSR.ReadLine

      Dim PlayerName As String = s.Split(CChar(";"))(0)

      Dim PlayerScore As String = s.Split(CChar(";"))(1)

      ArrPlayer.Add(New Player(PlayerName, PlayerScore))

      Next

      FSR.Close()

      Exit Sub

      newScore:

      ArrPlayer.Add(New Player("AAA", "5000"))

      ArrPlayer.Add(New Player("AAA", "4500"))

      ArrPlayer.Add(New Player("AAA", "4000"))

      ArrPlayer.Add(New Player("AAA", "3500"))

      ArrPlayer.Add(New Player("AAA", "3000"))

      ArrPlayer.Add(New Player("AAA", "2500"))

      ArrPlayer.Add(New Player("AAA", "2000"))

      ArrPlayer.Add(New Player("AAA", "1500"))

      ArrPlayer.Add(New Player("AAA", "1000"))

      ArrPlayer.Add(New Player("AAA", "500"))

      End Sub

      Public Sub SaveScore()

      LoadScore()

      For i As Integer = 0 To 9

      If CDbl(AddedPlayer.PlayerScore) >= _

      CDbl(CType(ArrPlayer(i), Player).PlayerScore) Then

      ArrPlayer.Insert(i, AddedPlayer)

      Exit For

      End If

      Next

      Dim FSW As New StreamWriter("Score.dat")

      Dim s As String = "#Assignment Line#"

      s += Chr(13) + Chr(10)

      For i As Integer = 0 To 9

      s += CType(ArrPlayer(i), Player).PlayerName + ";" + _

      CType(ArrPlayer(i), Player).PlayerScore

      s += Chr(13) + Chr(10)

      Next

      FSW.Write(s)

      FSW.Close()

      End Sub

      Public Sub PlashScreen()

      Me.BackgroundImage = Image.FromFile("GameOver.gif")

      Application.DoEvents()

      Threading.Thread.Sleep(2000)

      End Sub

      Ниже формы Form2 дважды щёлкаем по значку первого таймера Timer. Появляется шаблон метода, который после записи нашего кода принимает следующий вид.

      Листинг 21.13. Метод-обработчик события Tick.

      Private Sub Timer1_Tick(ByVal sender As System.Object, _

      ByVal e As System.EventArgs) Handles Timer1.Tick

      gr = CreateGraphics()

      midPoint = New Point(Me.Width \ 2, 10)

      Dim strText As String = "Score Board"

      Dim fnt As New Font("Microsoft Sans Serif", 30, _

      FontStyle.Bold, GraphicsUnit.Point)

      Dim strSize As New SizeF(gr.MeasureString(strText, fnt))

      Dim ptfGradientStart As New _

      PointF(intCurrentGradientShift, 0)

      Dim ptfGradientEnd As New PointF(0, intCurrentGradientRow)

      lbrTitle = New LinearGradientBrush(ptfGradientStart, _

      ptfGradientEnd, Color.SteelBlue, Color.Brown)

      startPoint = New PointF(midPoint.X – _

      CInt(strSize.Width / 2), midPoint.Y)

      gr.DrawString(strText, fnt, lbrTitle, startPoint)

      ptfGradientStart = New PointF(0, intCurrentGradientShift)

      ptfGradientEnd = New PointF(intCurrentGradientRow, 0)

      lbrTitle = New LinearGradientBrush(ptfGradientEnd, _

      ptfGradientStart, Color.MediumSlateBlue, _

      Color.GhostWhite)

      gr.DrawString(strText, fnt, lbrTitle, startPoint.X – 2, _

      startPoint.Y + 2)

      intCurrentGradientShift += intGradiantStep

      If intCurrentGradientShift = 400 Then

      intGradiantStep = -5

      ElseIf intCurrentGradientShift = -400 Then

      intGradiantStep = 5

      End If

      End Sub

      Ниже формы Form2 дважды щёлкаем по значку второго таймера Timer. Появляется шаблон метода, который после записи нашего кода принимает следующий вид.

      Листинг 21.14. Метод-обработчик события Tick.

      Private Sub Timer2_Tick(ByVal sender As System.Object, _

      ByVal e As System.EventArgs) Handles Timer2.Tick

      'showScore()

      Dim g As Graphics = CreateGraphics()

      Dim fnt As New Font("Courier New", 20, FontStyle.Bold, _

      GraphicsUnit.Point)

      Dim startPoint As PointF = New PointF(20, 80)

      Dim nextPoint As PointF = _

      New PointF(startPoint.X + colW1, 80)

      Dim ptfGradientStart As New PointF(intCurrentGradientRow, _

      startPoint.X)

      Dim ptfGradientEnd As New PointF(nextPoint.Y, _

      intCurrentGradientRow)

      lbrBoard = New LinearGradientBrush(ptfGradientStart, _

      ptfGradientEnd, Color.GreenYellow, Color.SlateGray)

      Dim PlayerNames As String = "Name" + Chr(13) + Chr(10)

      Dim PlayerScores As String = "Score" + Chr(13) + Chr(10)

      For i As Integer = 0 To 9

      PlayerNames += CType(ArrPlayer(i), Player).PlayerName _

      + Chr(13) + Chr(10)

      PlayerScores += CType(ArrPlayer(i), Player).PlayerScore _

      + Chr(13) + Chr(10)

      Next

      g.DrawString(PlayerNames, fnt, lbrBoard, startPoint)

      g.DrawString(PlayerScores, fnt, lbrBoard, nextPoint)

      intCurrentGradientRow += intGradiantStep

      End Sub

      В случае необходимости, методика добавления