У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

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

Алгоритм

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

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

Прорисовка начального положения.(Pset(x,y))

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

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

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

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

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

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

Перерисовка “Змейки”

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

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

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

Кафедра

УТВЕРЖДАЮ

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

________ Н. Н.

___”_______1998 г.

Отчет

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

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

Исполнитель

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

Находка 1998 г.

Код программы:

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

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

Option Explicit

Dim Змейка() As Змея

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 Проверочная1 As Byte

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

Dim НЛ As String

'-------Начальные присвоения--------

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

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

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

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

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

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

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

Const ПриращениеДлины = 3 'Приращение длины Змейки

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

Public Sub Form_Load()

Поле.BackColor = BackCollor

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

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

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

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

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

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

For i = 1 To 5

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

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

Next i

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

'------Направление движения------

XDir = 0

YDir = -1 'Вверх

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

AppleGen

BombaGen

Taimer.Interval = TIC

End Sub

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

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

Поле.ForeColor = WormCollor

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

For i = 1 To Длина

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

Next i

End Sub

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

Private Sub Taimer_Timer()

Движение

Перерисовка

End Sub

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

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

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

Поле.AutoRedraw = True

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

LastPos = Змейка(Длина)

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

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

Next i

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

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

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

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

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

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

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

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

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

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

For i = 2 To Длина

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

Then Taimer.Interval = 0

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

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

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

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

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

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

End If

Next i

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

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

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

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

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

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

Exit Sub

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

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

Taimer.Interval = 0

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

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

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

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

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

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

Exit Sub

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

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

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

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

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

Змейка(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

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

Exit Sub

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

Taimer.Interval = 0

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

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

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

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

ИнформационнаяФорма.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)

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

Поле.ForeColor = AppleCollor

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

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

Поле.ForeColor = BombaCollor

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

End Sub

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

Private Sub TaimerApple_Timer()

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

Поле.ForeColor = BackCollor

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

AppleGen

End Sub

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

Private Sub TaimerBomba_Timer()

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

Поле.ForeColor = BackCollor

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

BombaGen

End Sub

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

Private Sub AppleGen()

Метка1:

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

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

i = 1

Do




1. Особенности осушения минеральных переувлажнённых почв Нечернозёмной зоны с низкой водопроницаемостьюкур
2. фактор конкурентоспособности
3. Київський коледж зв~язку Розглянуто Затверджено цикловою комісієюІМ
4. отстаивание; фильтрация; центрифугирование; термическое воздействие; электрическое воздействие; внутри
5. Реферат- лицензирование природопользования, деятельности в области охраны окружающей среды и обеспечения экологической безопасности
6. Лабораторная работа ИССЛЕДОВАНИЕ МЕТОДОВ ОБЕСПЕЧЕНИЯ ЗАДАННОЙ ТОЧНОСТИ ПРИ СБОРКЕ ЭЛЕКТРОННОЙ АППАРАТ
7. Муниципальное образование городское сельское поселение несколько поселений объединенных общей террито
8. РОССИЙСКИЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
9. Причерноморский экономический район Украины
10. f ~x cos x sin x f ~~x sin x 2
11. физиологические особенности детей Предмет изучения педиатрии
12. Фернандо Сор
13. Капиллярные явления в магнитных коллоидах
14. Современные образовательные технологии в сфере музыкального обучения и воспитания учащихся педагогических колледжей
15. Планирование
16. тематич ожидание случайной величины X
17. економічного обґрунтування ТЕО інноваційного проекту
18. Настройка голосовой почты
19. The Luncheon I cught sight of her t the ply nd in nswer to her beckoning I went over during the intervl nd st down beside her
20. Общие начала назначение наказания1