Алгоритм
Описываются переменные и константы(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 While i
Похожие работы
... проиграл case KONEC: GotoXY(23,1); printf("Wu proigrali(xa-xa-xa!!!)nnttt"); getch(); return; break; 5.Исходный текст программы С++ Разработка приложения, представляющего собой компьютерную игру «Змейка». #include <iostream> //стандартная библиотека #include <time.h> //случайные числа #include <stdio.h> //для ...
... и лишь изредка - в сочетаниях. Глава 3. Опытно-экспериментальная часть 3.1 Организация и проведение педагогического эксперимента Для того, чтобы выявить влияние подвижной игры на развитие быстроты и ловкости у детей 6-7 лет, было организовано и проведено исследование на базе МДОУ «Детский сад №10 комбинированного типа «Теремок» г.Зеленогорска Красноярского края. В детском саду ...
... Экспериментальная работа по развитию быстроты и ловкости у детей старшего дошкольного возраста Цель: Подобрать, разработать и апробировать комплекс подвижных игр способствующих развитию быстроты и ловкости у детей старшего дошкольного возраста. В ходе опытно – экспериментальной работы с детьми проводились подвижные игры способствующие развитию быстроты и ловкости. Работа с детьми проводилась ...
... гармоничного развития личности. В этом аспекте, подвижные игры выступают как эффективное средство физической подготовленности. ГЛАВА 2 ПОДВИЖНЫЕ ИГРЫ КАК СРЕДСТВО РАЗВИТИЯ ПСИХОФИЗИЧЕСКИХ КАЧЕСТВ У ДЕТЕЙ 6-7 ЛЕТ 2.1 Подвижная игра, ее значение Игра может быть средством самопознания, развлечения, отдыха, средством физического и общего воспитания. Игра – очень эмоциональная деятельность, ...
0 комментариев