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

курсовые,контрольные,дипломы,рефераты

»гра на ловкость "«мейка" — ѕрограммирование, Ѕазы данных

ѕосмотреть видео по теме Ћабораторной

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

÷ель: —оздать законченный вариант игры на ловкость У«мейкаФ

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

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) У«мейкуФ, котора€ может двигатьс€ в ограниченной плоскости. ћаневрами У«мейкиФ должен управл€ть играющий. У

 

 

 

¬нимание! ѕредставленна€ Ћабораторна€ находитс€ в открытом доступе в сети »нтернет, и уже неоднократно сдавалась, возможно, даже в твоем учебном заведении.
—оветуем не рисковать. ”знай, сколько стоит абсолютно уникальна€ Ћабораторна€ по твоей теме:

Ќовости образовани€ и науки

«аказать уникальную работу

—вои сданные студенческие работы

присылайте нам на e-mail

Client@Stud-Baza.ru