Контрольная: Игра на ловкость Змейка - текст контрольной. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Контрольная

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

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Контрольная работа
Язык контрольной: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 133 kb, скачать бесплатно
Обойти Антиплагиат
Повысьте уникальность файла до 80-100% здесь.
Промокод referatbank - cкидка 20%!

Узнайте стоимость написания уникальной работы



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




Кафедра




УТВЕРЖДАЮ

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

________ Н. Н.

___”_______1998 г.






Отчет


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





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




Исполнитель


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













Находка 1998 г.


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


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


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

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

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

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


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


Алгоритм


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

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

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

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

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

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

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

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

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

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



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


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


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


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

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

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





1Авиация и космонавтика
2Архитектура и строительство
3Астрономия
 
4Безопасность жизнедеятельности
5Биология
 
6Военная кафедра, гражданская оборона
 
7География, экономическая география
8Геология и геодезия
9Государственное регулирование и налоги
 
10Естествознание
 
11Журналистика
 
12Законодательство и право
13Адвокатура
14Административное право
15Арбитражное процессуальное право
16Банковское право
17Государство и право
18Гражданское право и процесс
19Жилищное право
20Законодательство зарубежных стран
21Земельное право
22Конституционное право
23Конституционное право зарубежных стран
24Международное право
25Муниципальное право
26Налоговое право
27Римское право
28Семейное право
29Таможенное право
30Трудовое право
31Уголовное право и процесс
32Финансовое право
33Хозяйственное право
34Экологическое право
35Юриспруденция
36Иностранные языки
37Информатика, информационные технологии
38Базы данных
39Компьютерные сети
40Программирование
41Искусство и культура
42Краеведение
43Культурология
44Музыка
45История
46Биографии
47Историческая личность
 
48Литература
 
49Маркетинг и реклама
50Математика
51Медицина и здоровье
52Менеджмент
53Антикризисное управление
54Делопроизводство и документооборот
55Логистика
 
56Педагогика
57Политология
58Правоохранительные органы
59Криминалистика и криминология
60Прочее
61Психология
62Юридическая психология
 
63Радиоэлектроника
64Религия
 
65Сельское хозяйство и землепользование
66Социология
67Страхование
 
68Технологии
69Материаловедение
70Машиностроение
71Металлургия
72Транспорт
73Туризм
 
74Физика
75Физкультура и спорт
76Философия
 
77Химия
 
78Экология, охрана природы
79Экономика и финансы
80Анализ хозяйственной деятельности
81Банковское дело и кредитование
82Биржевое дело
83Бухгалтерский учет и аудит
84История экономических учений
85Международные отношения
86Предпринимательство, бизнес, микроэкономика
87Финансы
88Ценные бумаги и фондовый рынок
89Экономика предприятия
90Экономико-математическое моделирование
91Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Голод - это когда в парах чужого перегара улавливаешь запах закуски.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, контрольная по программированию "Игра на ловкость Змейка", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2017
Рейтинг@Mail.ru