ПОНЯТНО О Visual Basic NET (том 3)

       

Сохраняем игру


А теперь на примере примитивной задачи продемонстрируем, как программа может сохранять нужные ей данные, чтобы в следующий раз начать с того места, на котором остановилась.

Задача: Пусть в файле Данные.txt записано какое-нибудь число, скажем, 10. После запуска программа должна раз в секунду печатать последовательные целые числа, начиная с числа, записанного в этом файле. Больше ничего делать ей не нужно. Понаблюдав некоторое время за печатью чисел, вы завершаете выполнение проекта. Вся соль задачи в том, чтобы при следующем запуске программа начала печатать не с 10, а с того числа, на котором завершился проект.

 Ваши действия:

1.       Вам необходимо сделать так, чтобы при запуске программы число считывалось из файла и счет начинался именно с него.

2.       Вам необходимо сделать так, чтобы при завершении работы следующее за последним из напечатанных чисел число записывалось в файл на место того, что там было раньше. Тогда в следующий раз счет сам собой начнется с него.

Создайте таймер. Настройте его интервал на 1 секунду.

Программа:

'Процедура, выполняемая при запуске проекта:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim Чтение As New System.IO.StreamReader("E:\VB\Данные.txt")

        Число = Чтение.ReadLine                          'Чтение числа, с которого начать счет

        Чтение.Close()

End Sub



'Процедура таймера, выполняемая раз в секунду

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Debug.WriteLine(Число)                               'Печать числа

        Число = Число + 1                                        'Получаем следующее число

End Sub

'Процедура, выполняемая при завершении работы проекта:

 Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed

        Dim Запись As New System.IO.StreamWriter("E:\VB\Данные.txt")


        Запись.WriteLine(Число)                              'Запись в файл числа, на котором закончен счет

        Запись.Close()

End Sub

Здесь я использовал событие формы Closed. Оно наступает в частности при завершении работы проекта нажатием на крестик в правом верхнем углу формы.

Идея сохранения самых сложных игр не отличается от идеи сохранения в только-что рассмотренной программе. Пусть ваша игра трехмерная и проходит на сложной местности. Пусть поведение персонажей тоже сложное. Если вы немного разбираетесь в механике игр, то знаете, что положение персонажа на местности описывается набором из нескольких чисел. То же можно сказать о его внешности, поведении, характере, вооружении, истории его жизни и обо всем другом в игре. Только числа и кое-где текст. Когда вы сохраняете игру, сохраняются не вид экрана, не движения персонажей, не вся та жизнь, о которой я только-что говорил, а только числа и текст, которые их описывают. Все эти числа и текст отправляются в файл. Когда вы снова запускаете игру с сохраненного места, компьютер считывает из файла эти числа и текст и по ним вычисляет и вид экрана, и историю персонажей, и все-все-все. Вы оказываетесь в том месте игры, в котором остановились перед сохранением.

Задание 13.          

Создайте игру «Угадай число». Компьютер загадывает число из диапазона от 1 до миллиарда. Человек должен его отгадать. Причем за наименьшее число попыток. При каждой попытке компьютер показывает номер попытки, число, предложенное человеком, и подсказку – «мало» или «много». Поскольку даже у самых умных математиков на угадывание уйдет несколько десятков попыток, то в процессе угадывания может возникнуть желание сохраниться до лучших времен. При запуске игры в следующий раз компьютер должен спросить, начинать ли новую игру или продолжать старую. Если старую, то компьютер должен распечатать все то, что было распечатано в прошлый раз – все номера попыток, числа, подсказки.


Содержание раздела