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

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


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

<summary>

      ''' Represents one high score.

      ''' </summary>

      ''' <remarks></remarks>

      Public Class HighScore

      Implements IComparable

      Public nameValue As String

      Public scoreValue As Integer

      Public Property Name() As String

      Get

      Return nameValue

      End Get

      Set(ByVal Value As String)

      nameValue = Value

      End Set

      End Property

      Public Property Score() As Integer

      Get

      Return scoreValue

      End Get

      Set(ByVal Value As Integer)

      scoreValue = Value

      End Set

      End Property

      Public Overrides Function ToString() As String

      Return Name & ":" & Score

      End Function

      Public Sub New(ByVal saved As String)

      Name = saved.Split(":".ToCharArray)(0)

      Score = CInt(saved.Split(":".ToCharArray)(1))

      End Sub

      Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

      Dim other As HighScore

      other = CType(obj, HighScore)

      Return Me.Score – other.Score

      End Function

      End Class

      По второму варианту, в панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item, в панели Add New Item выделяем шаблон Code File, в окне Name записываем имя HighScores.vb и щёлкаем кнопку Add. В проект (и в панель Solution Explorer) добавляется этот файл, открывается пустое окно редактирования кода, в которое записываем код со следующего листинга.

      Листинг 20.19. Новый файл.

      Imports Microsoft.Win32

      ''' <summary>

      ''' Reads and writes the top three high scores to the registry.

      ''' </summary>

      ''' <remarks></remarks>

      Public Class HighScores

      ''' <summary>

      ''' Read scores from the registry.

      ''' </summary>

      ''' <returns></returns>

      ''' <remarks></remarks>

      Public Shared Function GetHighScores() As HighScore()

      Dim tops(2) As HighScore

      Dim scoreKey As RegistryKey = Registry.CurrentUser. _

      CreateSubKey("Software\VBSamples\Collapse\HighScores")

      For index As Integer = 0 To 2

      Dim key As String = "place" & index.ToString

      Dim score As New HighScore(CStr(scoreKey.GetValue(key)))

      tops(index) = score

      Next

      scoreKey.Close()

      Return tops

      End Function

      ''' <summary>

      ''' Update and write the high scores.

      ''' </summary>

      ''' <param name="score"></param>

      ''' <remarks></remarks>

      Public Shared Sub UpdateScores(ByVal score As Integer)

      Dim tops(3) As HighScore

      Dim scoreKey As RegistryKey = Registry.CurrentUser. _

      CreateSubKey("Software\VBSamples\Collapse\HighScores")

      tops(0) = New HighScore(scoreKey.GetValue("Place0").ToString)

      tops(1) = New HighScore(scoreKey.GetValue("Place1").ToString)

      tops(2) = New HighScore(scoreKey.GetValue("Place2").ToString)

      If score > tops(2).Score Then

      Dim name As String = InputBox("New high score of " & _

      score & " for:")

      tops(3) = New HighScore(" :0")

      tops(3).Name = name

      tops(3).Score = score

      Array.Sort(tops)

      Array.Reverse(tops)

      scoreKey.SetValue("Place0", tops(0).ToString)

      scoreKey.SetValue("Place1", tops(1).ToString)

      scoreKey.SetValue("Place2", tops(2).ToString)

      End If

      scoreKey.Close()

      End Sub

      ''' <summary>

      ''' Set up the entries for new scores.

      ''' </summary>

      ''' <remarks></remarks>

      Shared Sub SetUpHighScores()

      Dim scoreKey As RegistryKey = Registry.CurrentUser. _

      CreateSubKey("Software\VBSamples\Collapse\HighScores")

      If scoreKey.GetValue("Place1") Is Nothing Then

      scoreKey.SetValue("Place0", " :0")

      scoreKey.SetValue("Place1", " :0")

      scoreKey.SetValue("Place2", " :0")

      End If

      scoreKey.Close()

      End Sub

      ''' <summary>

      ''' Reset scores.

      ''' </summary>

      ''' <remarks></remarks>

      Shared Sub ResetScores()

      Dim scoreKey As RegistryKey = Registry.CurrentUser. _

      CreateSubKey("Software\VBSamples\Collapse\HighScores")

      scoreKey.SetValue("Place0", " :0")

      scoreKey.SetValue("Place1", " :0")

      scoreKey.SetValue("Place2", " :0")

      scoreKey.Close()

      End Sub

      End Class

      По второму варианту, в панели Solution Explorer выполняем правый щелчок по имени проекта и в контекстном меню выбираем Add, New Item, в панели Add New Item выделяем шаблон Code File, в окне Name записываем имя PointTranslator.vb и щёлкаем