KOD-PROG (663684)

Файл №663684 KOD-PROG (Игра на ловкость Змейка)KOD-PROG (663684)2016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

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

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

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

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 While i <= Длина

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

GoTo Метка1

Exit Do

End If

i = i + 1

Loop

End Sub

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

Private Sub BombaGen()

Метка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

Case 40 'вниз

XDir = 0

YDir = 1

Case 37 'влево

XDir = -1

YDir = 0

Case 39 'вправо

XDir = 1

YDir = 0

Case 27 'ESC

End

Case 113 'F2-игра

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

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

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

End Select

End Sub

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

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

Private Sub Up_Click()

XDir = 0

YDir = -1

End Sub

Private Sub Down_Click()

XDir = 0

YDir = 1

End Sub

Private Sub Left_Click()

XDir = -1

YDir = 0

End Sub

Private Sub Right_Click()

XDir = 1

YDir = 0

End Sub

Private Sub Command1_Click()

End

End Sub

Private Sub Command2_Click()

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

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

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

End Sub

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

Dim НЛ As String

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

Private Sub Avtor_Click()

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

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

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

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

AboutAvtor.Show

End Sub

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

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

Private Sub Exit_Click()

КнопкаВыход_Click

End Sub

Private Sub NewGame_Click()

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

End Sub

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

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

Unload Me

End Sub

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

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

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

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

End Sub

AboutAvtor

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

Private Sub Image1_Click()

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

Unload Me

End Sub

Module1

Option Explicit

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

Public Type Змея

XPos As Integer

YPos As Integer

End Type

Характеристики

Тип файла
Документ
Размер
34,5 Kb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов реферата

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7034
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее