Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 6: Программирование на Visual Basic искусственного интеллекта. Продолжение 2. Валерий Алексеевич Жарков
Читать онлайн книгу.s &
'"M_MagentaBall.png" _
', s & "RedBall.png", s & "M_RedBall.png"}
'Исправляем ошибку:
Public ImgList() As String = _
{"..\..\BlackBall.png", "..\..\M_BlackBall.png", _
"..\..\BlueBall.png", "..\..\M_BlueBall.png", _
"..\..\GreenBall.png", "..\..\M_GreenBall.png", _
"..\..\LGreenBall.png", "..\..\M_LGreenBall.png", _
"..\..\MagentaBall.png", "..\..\M_MagentaBall.png", _
"..\..\RedBall.png", "..\..\M_RedBall.png"}
Public Structure Player
Private _PlayerName As String
Private _PlayerScore As String
Public Sub New(ByVal PlayerName As String, _
ByVal PlayerScore As String)
_PlayerName = PlayerName
_PlayerScore = PlayerScore
End Sub
Public Property PlayerName() As String
Get
Return _PlayerName
End Get
Set(ByVal Value As String)
_PlayerName = Value
End Set
End Property
Public Property PlayerScore() As String
Get
Return _PlayerScore
End Get
Set(ByVal Value As String)
_PlayerScore = Value
End Set
End Property
End Structure
End Module
По второму варианту, в панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item, в панели Add New Item выделяем шаблон Code File, в окне Name записываем имя MotionPic.vb и щёлкаем кнопку Add. В проект (и в панель Solution Explorer) добавляется этот файл, открывается пустое окно редактирования кода, в которое записываем код со следующего листинга.
Листинг 21.11. Новый файл.
Option Strict On
Public Enum BallState
ZOOMING_BALL = -2
NO_BALL = -1
NORMAL_BALL = 0
JUMPING_BALL = 1
DESTROYING_BALL = 2
End Enum
Public Class MotionPic
Inherits System.Windows.Forms.PictureBox
Private myTimer As New System.Windows.Forms.Timer
Private picWidth As Integer
Private picHeight As Integer
Private picTop As Integer
Private picLeft As Integer
Private picState As Integer
Private picIndex As Integer
Private sign As Integer
#Region "Property Declaration"
Public Sub New(ByVal eSize As Size, ByVal eLocation As Point)
Me.Size = eSize
Me.Location = eLocation
picWidth = Me.Width
picHeight = Me.Height
picTop = Me.Top
picLeft = Me.Left
picState = BallState.NO_BALL
picIndex = -1
End Sub
Public ReadOnly Property MPState() As Integer
Get
Return picState
End Get
End Property
Public ReadOnly Property MPIndex() As Integer
Get
Return picIndex
End Get
End Property
Public Sub Init()
Me.Init(CInt(Rnd() * 12))
End Sub
#End Region
Public Sub Init(ByVal value As Integer)
picIndex = value
picState = BallState.ZOOMING_BALL
Dim i As Integer = ImgList(value).LastIndexOf("\")
Me.Tag = ImgList(value).Substring(i + 1, _
ImgList(value).Length – i – 5)
ZoomIn()
End Sub
Private Sub ZoomIn()
Me.Top = picTop + (picHeight – 4) \ 2
Me.Left = picLeft + (picWidth – 4) \ 2
Me.Width = 4
Me.Height = 4
Me.Image = Image.FromFile(ImgList(picIndex))
AddHandler myTimer.Tick, AddressOf TimerEventZoomIn
myTimer.Interval = 10
myTimer.Start()
End Sub
Private Sub TimerEventZoomIn(ByVal myObject As Object, _
ByVal myEventArgs As EventArgs)
If Me.Top > picTop And Me.Width < picWidth Then
Me.Top -= 2
Me.Left -= 2
Me.Width += 4
Me.Height += 4
Else
myTimer.Enabled = False
picState = BallState.NORMAL_BALL
RemoveHandler myTimer.Tick, AddressOf TimerEventZoomIn
End If
End Sub
Public Sub Jump()
If picState = BallState.NORMAL_BALL Then
sign = 1
picState = BallState.JUMPING_BALL
AddHandler myTimer.Tick, AddressOf TimerEventJump
myTimer.Interval = 20
myTimer.Start()
ElseIf picState = BallState.JUMPING_BALL Then
StopJump()
End If
End Sub
Public Sub StopJump()
If picState = BallState.JUMPING_BALL Then
picState = 0
myTimer.Enabled = False
RemoveHandler myTimer.Tick, AddressOf TimerEventJump
Me.Top = picTop
Me.Left = picLeft
Me.Height = picHeight
Me.Width = picWidth
End If
End