Меню
  Список тем
  Поиск
Полезная информация
  Краткие содержания
  Словари и энциклопедии
  Классическая литература
Заказ книг и дисков по обучению
  Учебники, словари (labirint.ru)
  Учебная литература (Читай-город.ru)
  Учебная литература (book24.ru)
  Учебная литература (Буквоед.ru)
  Технические и естественные науки (labirint.ru)
  Технические и естественные науки (Читай-город.ru)
  Общественные и гуманитарные науки (labirint.ru)
  Общественные и гуманитарные науки (Читай-город.ru)
  Медицина (labirint.ru)
  Медицина (Читай-город.ru)
  Иностранные языки (labirint.ru)
  Иностранные языки (Читай-город.ru)
  Иностранные языки (Буквоед.ru)
  Искусство. Культура (labirint.ru)
  Искусство. Культура (Читай-город.ru)
  Экономика. Бизнес. Право (labirint.ru)
  Экономика. Бизнес. Право (Читай-город.ru)
  Экономика. Бизнес. Право (book24.ru)
  Экономика. Бизнес. Право (Буквоед.ru)
  Эзотерика и религия (labirint.ru)
  Эзотерика и религия (Читай-город.ru)
  Наука, увлечения, домоводство (book24.ru)
  Наука, увлечения, домоводство (Буквоед.ru)
  Для дома, увлечения (labirint.ru)
  Для дома, увлечения (Читай-город.ru)
  Для детей (labirint.ru)
  Для детей (Читай-город.ru)
  Для детей (book24.ru)
  Компакт-диски (labirint.ru)
  Художественная литература (labirint.ru)
  Художественная литература (Читай-город.ru)
  Художественная литература (Book24.ru)
  Художественная литература (Буквоед)
Реклама
Разное
  Отправить сообщение администрации сайта
  Соглашение на обработку персональных данных
Другие наши сайты
Приглашаем посетить
  Бальмонт (balmont.lit-info.ru)

   

Игра на ловкость Змейка

Игра на ловкость Змейка

Алгоритм


  1. Описываются переменные и константы(Dim, Const)

  2. Выбор начальных координат случайным образом(Rnd()).

  3. Pset(x,y))

  4. Генерация на поле яблок и бомб случайным образом(Rnd()).

  5. Проверка: не появилось ли яблоко или бомба на черве, а также друг на друге.

  6. Управление “Змейкой” с клавиатуры и мышкой.

  7. Проверка: “не укусила” ли “змейка сама себя”, если укусила выводится информационное окно (Инфоформационнаяформа), в противном случае переходим к следующему пункту.

  8. Проверка: “не съела” ли “змейка” “яблоко” если съела, то наращиваем ей хвост и переходим к пункту 3), в противном случае см. Следующий пункт.

  9. Проверка: “не съела” ли “змейка” “бомбу”, если съела, то выводится информационное окно (Инфоформационнаяформа), в противном случае переходим к следующему пункту.

  10. “Змейки”


P. S. За движение “Змейки” появление “яблок” и “бомб” отвечают три разных таймера. Это было использовано для того, чтобы скорость движения “змейки” была постоянной, а также чтобы “яблоко” и “бомба” появлялись на поле в разное время с разным периодом появления.


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


Владивостокский Государственный Университет Экономики и Сервиса


Кафедра


УТВЕРЖДАЮ

Заведующий кафедрой

________ Н. Н.

___”_______1998 г.


Отчет


По лабораторной работе


Руководитель _______________ Глытина К. У


Исполнитель


студент ИС-97 _______________ Гавриленко А. С.


Находка 1998 г.



ФормаЗмейка

'-------Описание переменных-------

Dim LastPos As Змея

Dim Apple As Змея

Dim Bomba As Змея

Dim i, j, Длина As Integer

Dim XDir, YDir As Integer

Dim FirstXPos, FirstYPos As Integer

Dim Проверочная2 As Single

Dim НЛ As String


Const TIC = 1 'Период таймера

&H8000000F 'Цвет заднего плана

&H80& 'Цвет Змейки

Const AppleCollor = &HFF00& 'Цвет яблока

Const BombaCollor = &H80000012 'Цвет бомбы

Const Толщина = 10 'Толщина червяка

Const НачДлина = 5 'Начальная длина Змейки


Public Sub FormLoad()


Поле. DrawWidth = Толщина

Длина = НачДлина

ReDim Preserve Змейка(1 To НачДлина)


'------Начальное положение------

FirstXPos = 5 + Int(Rnd() * 41)

FirstYPos = 5 + Int(Rnd() * 41)

Змейка(i). XPos = FirstXPos

Змейка(i). YPos = FirstYPos + i

Next i



XDir = 0

YDir = -1 'Вверх


'------Генерация Яблок и Бомб----

AppleGen

BombaGen


End Sub


'---Прорисовка начального положения---

Private Sub НачПоложение()

Поле. ForeColor = WormCollor

СчетИгры. Caption = Длина

For i = 1 To Длина

Next i

-------------------------------------------------------------------------------------------------


Private Sub TaimerTimer()

Движение

Перерисовка

End Sub

-------------------------------------------------------------------------------------------------


Private Sub Движение()

НЛ = Chr(10) & Chr(13) 'Перевод строки


Поле. AutoRedraw = True

Поле. DrawWidth = Толщина


For i = Длина To 2 Step -1

Змейка(i) = Змейка(i - 1)

Next i


Змейка(1). XPos = Змейка(1). XPos + XDir


'------Не вышел ли за пределы поля------

On Error GoTo ВышелЗаПределы

Проверочная1 = Змейка(1). XPos - 1

Проверочная1 = Змейка(1). YPos - 1

Проверочная1 = Змейка(1). XPos + 206

Проверочная1 = Змейка(1). YPos + 206


'------Не укусил ли самого себя------

УкусилСамогоСебя:

For i = 2 To Длина

Then Taimer. Interval = 0

ИнформационнаяФорма. ИнфоПоле. Caption = НЛ & _

"ВАША ЗМЕЙКА" & НЛ & _

"САМА СЕБЯ УКУСИЛА" & НЛ & НЛ & _

"Длина змейки " & Длина

ИнформационнаяФорма. Show

End If

Next i


'-----Не наткнулся ли на яблоко-----


'-----Не наткнулась ли на бомбу------

On Error GoTo Наткнулась2

Проверочная2 = 1 / (Abs((Змейка(1). XPos - Bomba. XPos)) + Abs((Змейка(1). YPos - Bomba. YPos)))

Exit Sub


'----------------Обравотка столкновений---------------

ВышелЗаПределы:

Taimer. Interval = 0

& _

"ВАША ЗМЕЙКА" & НЛ & _

"ВЫШЛА ЗА ПРЕДЕЛЫ ПОЛЯ" & НЛ & НЛ & _

"Длина змейки " & Длина

ФормаЗмейка. Enabled = False


Наткнулась1:

Длина = Длина + ПриращениеДлины

ReDim Preserve Змейка(1 To Длина)


'-------Перемещаем хвост в конец-------

Змейка(i) = Змейка(i - ПриращениеДлины)

Next i


'Добавляем в голову по направлению движения

For i = ПриращениеДлины To 1 Step -1

Змейка(i). XPos = Змейка(i + 1). XPos + XDir

Змейка(i). YPos = Змейка(i + 1). YPos + YDir

Next i


AppleGen

НачПоложение


Наткнулась2:

Taimer. Interval = 0

& _

"ВАША ЗМЕЙКА" & НЛ & _

"СЪЕЛА БОМБУ" & НЛ & НЛ & _

"Длина змейки " & Длина

ИнформационнаяФорма. Show

ФормаЗмейка. Enabled = False

Exit Sub

End Sub

-------------------------------------------------------------------------------------------------


Private Sub Перерисовка()

'------Рисуем змейку-------

Поле. ForeColor = BackCollor

Поле. PSet (LastPos. XPos * 100, LastPos. YPos * 100)

Поле. ForeColor = WormCollor

Поле. PSet (Змейка(1). XPos * 100, Змейка(1). YPos * 100)

Поле. PSet (Змейка(Длина). XPos * 100, Змейка(Длина). YPos * 100)


'------Рисуем Яблоко-------

Поле. PSet (Apple. XPos * 100, Apple. YPos * 100)


'------Рисуем бомбу--------

Поле. PSet (Bomba. XPos * 100, Bomba. YPos * 100)

End Sub

-------------------------------------------------------------------------------------------------


TaimerApple. Interval = (5 + Int(Rnd() * 11)) * 1000

Поле. ForeColor = BackCollor

Поле. PSet (Apple. XPos * 100, Apple. YPos * 100)

AppleGen

End Sub


Поле. ForeColor = BackCollor

Поле. PSet (Bomba. XPos * 100, Bomba. YPos * 100)

BombaGen

End Sub


Private Sub AppleGen()

Метка1:

Apple. YPos = 1 + Int(Rnd() * 49)


i = 1

Do While i <= Длина

If Apple. XPos = Змейка(i). XPos And Apple. YPos = Змейка(i). YPos Then

GoTo Метка1

Exit Do

End If

i = i + 1

Loop


Метка2:

Bomba. XPos = 1 + Int(Rnd() * 49)

Bomba. YPos = 1 + Int(Rnd() * 49)


i = 1

Do While i <= Длина

If Bomba. XPos = Змейка(i). XPos And Bomba. YPos = Змейка(i). YPos Or Bomba. XPos = Apple. XPos And Bomba. YPos = Apple. YPos Then

GoTo Метка2

Exit Do

End If

i = i + 1

Loop

End Sub

'-----Обработка клавиш управления------

Private Sub полеKeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

Case 38 'вверх

XDir = 0

YDir = -1

XDir = 0

YDir = 1

Case 37 'влево

XDir = -1

YDir = 0

Case 39 'вправо

XDir = 1

Case 27 'ESC

End

Case 113 'F2-игра

ФормаЗмейка. Enabled = True

ФормаЗмейка. FormLoad

ИнформационнаяФорма. Hide

End Select

End Sub


‘Обработка нажатий кнопок

Private Sub UpClick()

XDir = 0

End Sub


Private Sub DownClick()

XDir = 0

YDir = 1

End Sub


Private Sub LeftClick()

XDir = -1

YDir = 0

End Sub


YDir = 0

End Sub


End

End Sub


Private Sub Command2Click()

ФормаЗмейка. Enabled = True

ИнформационнаяФорма. Hide


Dim НЛ As String

-------------------------------------------------------------------------------------------------


Private Sub AvtorClick()

НЛ = Chr(10) & Chr(13)

AboutAvtor. Label4. Caption = "Все права защищены," & НЛ & _

"использование в комерческих целях преследуется по закону"

ИнформационнаяФорма. Enabled = False

-------------------------------------------------------------------------------------------------


‘Обработка нажатий кнопок

Private Sub ExitClick()

End Sub


Private Sub NewGameClick()

КнопкаПовторитьClick

End Sub


Private Sub КнопкаВыходClick()

Unload ФормаЗмейка

Unload Me


Private Sub КнопкаПовторитьClick()

ФормаЗмейка. Enabled = True

ФормаЗмейка. FormLoad

End Sub


AboutAvtor

‘Закрытие формы щелчко кнопки мышы по фотографии

Private Sub Image1Click()

Unload Me


Module1

Option Explicit


‘Создаем новый тип переменной

Public Type Змея

End Type


Постановка задачи.


Цель: Создать законченный вариант игры на ловкость “Змейка


Законченный вариант игры змейка должен содержать:

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

  2. “Яблоко” или другой объект, при столкновении с которым “Змейка” “съедает” его(увеличивается в длину в зависимости от условий заданных программистом.

  3. Бомба” или иной объект при столкновении с которым змейка погибает.


P. S. Необязательным условием(по желанию учащегося), “” может управляться мышкой(с помощью клавиш на форме), игра может иметь счетчик набранных очков, таблицу лучших игроков, которая может сохранятся и считываться из файла, а также другие элементы которые увеличивают играбельность игры.