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

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


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

Me.Height = picHeight Or Me.Height <= 3 * picHeight / 4 Then

      sign *= -1

      End If

      End Sub

      Public Sub Destroy()

      If picState = BallState.JUMPING_BALL Then

      StopJump()

      End If

      picState = BallState.DESTROYING_BALL

      AddHandler myTimer.Tick, AddressOf TimerEventDestroy

      Me.Top = picTop + 1

      Me.Left = picLeft + 1

      Me.Width = picWidth – 2

      Me.Height = picHeight – 2

      myTimer.Interval = 10

      myTimer.Start()

      End Sub

      Private Sub TimerEventDestroy(ByVal myObject As Object, _

      ByVal myEventArgs As EventArgs)

      If Me.Top > picTop And Me.Width > 0 Then

      Me.Top += 2

      Me.Left += 2

      Me.Width -= 4

      Me.Height -= 4

      Else

      Me.Image = Nothing

      Me.Top = picTop

      Me.Left = picLeft

      Me.Width = picWidth

      Me.Height = picHeight

      myTimer.Enabled = False

      Me.picState = BallState.NO_BALL

      Me.picIndex = -1

      Me.Tag = ""

      RemoveHandler myTimer.Tick, AddressOf TimerEventDestroy

      End If

      End Sub

      Public Sub Reset()

      While Me.picState = BallState.DESTROYING_BALL

      Application.DoEvents()

      End While

      If Me.picState = BallState.JUMPING_BALL Then

      StopJump()

      End If

      While Me.picState = BallState.ZOOMING_BALL

      Application.DoEvents()

      End While

      Me.Image = Nothing

      Me.picIndex = -1

      Me.picState = BallState.NO_BALL

      Me.Tag = ""

      End Sub

      Protected Overrides Sub OnMouseMove(ByVal e As _

      System.Windows.Forms.MouseEventArgs)

      If picState = BallState.NORMAL_BALL Or _

      picState = BallState.JUMPING_BALL Then

      Me.Image = Image.FromFile(ImgList(picIndex + 1))

      End If

      End Sub

      Protected Overrides Sub OnMouseLeave( _

      ByVal e As System.EventArgs)

      If picState = BallState.NORMAL_BALL Or picState = _

      BallState.JUMPING_BALL Then

      Me.Image = Image.FromFile(ImgList(picIndex))

      End If

      End Sub

      End Class

      После этих добавлений (DPaint.vb, mModule.vb, MotionPic.vb, open.ico, save.ico) в панели Solution Explorer должны быть файлы, показанные выше. Дважды щёлкая по имени файла, любой файл можно открыть, изучить и редактировать.

      Теперь в наш проект добавляем переменные и методы, связанные с формой Form2 для вывода результатов игры.

      Открываем файл Form2.vb (например, так: File, Open, File) и вверху записываем директивы для подключения требуемых пространств имен:

      Imports System.Drawing.Drawing2D

      Imports System.Drawing.Text

      Imports System.IO

      Теперь в классе Form2 нашего проекта записываем следующие переменные и методы.

      Листинг 21.12. Переменные и методы.

      Dim gr As Graphics

      Dim lbrTitle As LinearGradientBrush

      Dim lbrBoard As LinearGradientBrush

      Dim midPoint As Point

      Dim startPoint As PointF

      Dim intGradiantStep As Integer = 5

      Dim intCurrentGradientShift As Integer = 0

      Const colW1 As Integer = 250

      Const colW2 As Integer = 150

      Const rowH As Integer = 30

      Dim AddedPlayer As New Player("", "-1")

      Dim ArrPlayer As New ArrayList

      Dim intCurrentGradientRow As Integer = 110

      Public WriteOnly Property AddPlayer() As Player

      Set(ByVal Value As Player)

      If Value.PlayerName.Length > 14 Then

      Value.PlayerName = _

      Value.PlayerName.Substring(0, 14)

      End If

      AddedPlayer = Value

      End Set

      End Property

      Public Sub drawTable()

      Me.BackgroundImage = Nothing

      Me.BackColor = Color.Moccasin

      Application.DoEvents()

      Dim g As Graphics = CreateGraphics()

      Dim tpen1 As New Pen(Color.Red, 1)

      Dim tpen2 As New Pen(Color.Black, 1)

      Dim P1 As New Point(2, 80)

      Dim P2 As New Point(400, 80)

      For i As Integer = 0 To 11

      g.DrawLine(tpen1, P1, P2)

      P1.Y += 1

      P2.Y += 1

      g.DrawLine(tpen2, P1, P2)

      P1.Y += rowH – 1

      P2.Y += rowH – 1

      Next

      P1.Y = 80

      P2.X = P1.X

      P2.Y -= rowH

      g.DrawLine(tpen2, P1, P2)

      P1.X += 1

      P2.X += 1

      g.DrawLine(tpen1, P1, P2)

      P1.X += colW1

      P2.X += colW1

      g.DrawLine(tpen2, P1, P2)

      P1.X += 1

      P2.X += 1

      g.DrawLine(tpen1, P1, P2)

      P1.X += colW2 – 3

      P2.X += colW2 – 3

      g.DrawLine(tpen1, P1, P2)

      P1.X += 1

      P2.X