Как сделать игру шутер в экселе
Перейти к содержимому

Как сделать игру шутер в экселе

  • автор:

Создание пятнашек в Excel

Пятнашки в ExcelРазбор создания игры в Excel

При создании игры мы преследовали две цели:

  1. Продемонстрировать возможности программирования и визуализации в Excel. На примере научить вас некоторым приемам создания пользовательской формы и макросов, которые с ней взаимодействуют.
  2. Разнообразить досуг после плодотворной работы в Excel. Игра также встроена в нашу надстройку VBA-Excel чтобы она всегда была под рукой.

Разработка игрового поля

Игровое поле пятнашек состоит по сути из 16 фишек, можно также добавить кнопкой перемешать (начать с начала) и отображением количества шагов. В качестве фишек мы будем использовать обычные кнопки CommandButton — 16 штук.

Расположим их в виде поля 4×4. Уберем стандартное название кнопок (а свойство Caption) сделаем их квадратными в форме фишек. Вообще тут можно дать волю фантазии наложить тени, выбрать цвет и так далее, углубляться не будем. На игровое поле мы добавили также кнопку перемешать. Она будет служить для сброса и начала новой игры.

Игровое поле пятнашек

Добавили текстовые поля Label , в которые будем записывать количество потраченных шагов и лучший счет. Что получилось видно на картинке.

Еще один момент, чтобы кнопки не «нажимались» (т.е., чтобы по клику не происходила анимация нажатия на кнопку), установим свойство Locked в положение True.

Механика игры

Управление перемещением фишек будем реализовывать путем нажатия на стрелки вверх, вниз, влево и вправо. При нажатии на стрелки будем менять текст кнопок (свойство Caption) в зависимости от направления. С анимацией не будем мудрить, сами фишки не будем перемещать, будем просто мгновенно менять текст фишки с одного на другой, визуально будет казаться, что фишка переместилась по полю.

Старт игры

Инициализация формы вызываем процедуру создания поля.

Private Sub UserForm_Initialize() Me.Caption = "П Я Т Н А Ш К И" Call Peremeshat End Sub

Случайным образом заполняем игровое поле и проверяем комбинацию на решаемость. Подробно проверку на решаемость описывать не будем, так как не в этом цель. Изучить этот вопрос можно на сайте http://pyatnashki.wmsite.ru/kombinacyi.

Sub Peremeshat() Dim a&(), i&, Max& Dim j As Integer, Num As Integer Dim e As Double 'вычисляет номер ряда пустой клетки Dim isE As Boolean 'проверка на четность Dim mySum As Integer 'сумма количества нужных элементов 'Сбрасываем количество ходов stepC = 0 Me.lbl_stepC.Caption = stepC Randomize ' Включаем генератор случайных чисел NewGame: ' Создаем игровое поле ReDim a(1 To 16) For i = 1 To 16 Do Num = Int(Rnd * 16) + 1 Loop While IsNumeric(Application.Match(Num, a, 0)) a(i) = Num If a(i) = 16 Then Me.Controls("CommandButton" & i).Caption = "" Me.Controls("CommandButton" & i).BackColor = &HA0ADBB Else Me.Controls("CommandButton" & i).Caption = a(i) Me.Controls("CommandButton" & i).BackColor = &H8000000F End If Next 'Проверяем на решаемость On Error Resume Next mySum = 0 For i = 1 To 15 If Me.Controls("CommandButton" & i).Caption = "" Then e = (i + 3) / 4 End If For j = i To 15 If val(Me.Controls("CommandButton" & i).Caption) > val(Me.Controls("CommandButton" & j + 1).Caption) And val(Me.Controls("CommandButton" & j + 1).Caption) > 0 Then mySum = mySum + 1 End If Next j Next i mySum = mySum + Int(e) isE = IsEven(mySum) 'проверяем на четность(решаемость) If isE = False Then GoTo NewGame 'меняем комбинацию если что End Sub

Функция проверки заряженного числа на четность

Function IsEven(Num As Integer) As Boolean IsEven = Fix(Num / 2) = Num / 2 End Function

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

Sub ToUp() Dim i As Integer For i = 12 To 1 Step -1 If Me.Controls("CommandButton" & i).Caption = "" Then ' Меняем значение фишек Me.Controls("CommandButton" & i).Caption = Me.Controls("CommandButton" & i + 4).Caption Me.Controls("CommandButton" & i + 4).Caption = "" ' меняем цвет фишек Me.Controls("CommandButton" & i).BackColor = &H8000000F Me.Controls("CommandButton" & i + 4).BackColor = &HA0ADBB stepC = stepC + 1 ' Увеличиваем количество ходов Me.lbl_stepC.Caption = stepC End If Next i Call Proverka End Sub

В конце делаем проверку поля и проверяем правильно ли игрок расставил фишки.

Sub Proverka() 'Проверка выигрыша Dim i As Byte, j As Byte For i = 1 To 15 If val(Me.Controls("CommandButton" & i).Caption) = i Then j = j + 1 End If Next i If j < 15 Then Exit Sub ' не выиграли Beep If MsgBox("Начать новую игру?", vbYesNo, "П О Б Е Д А !") = vbYes Then 'даем варианты Call Peremeshat Me.lbl_best.ForeColor = &HEFF8FA Else Unload Me End If End Sub

Осталось "отловить" нажатие стрелок на клавиатуре и запускать нужное движение. Для этого воспользуемся событием формы UserForm_KeyDown.

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode.Value = 40 Then ToDown If KeyCode.Value = 38 Then ToUp If KeyCode.Value = 37 Then ToLeft If KeyCode.Value = 39 Then ToRight End Sub

Создание простой игры ClickMe в Excel

Итак приступим. Что же нам необходимо? Какие знания и умения? Сколько времени?

  1. MS Excel
  2. VBA
  3. 30 минут свободного времени
  4. Фантазия на все это 🙂

Итак, что же мы понапридумывали? . Общая задумка - есть поле 20 на 10. В котором в случайном порядке появляется надпись Click ME! . Мы должны на нее нажать в течении установленных в настройках секунд. Попали? Продолжаем дальше, набивая рекорды! Не попали? Что ж, GAME OVER 🙂

Excel

Более детально по пунктам:

  1. Максимальное количество секунд между кликами. Ставим меньше, чтобы более поразить своих друзей!
  2. Количество кликов в текущей игре. Чем больше - тем круче!
  3. Рекорды. Что тут сказать - Вы должны быть на 1 месте и точка.
  4. Само поле, где будут появляться те самые надписи Click ME!

Итак, нажимаем на PLAY и в поле появляется первый кандидат на клик мышкой:

Excel

Кликаем, пока хватит сил - занимаем первое место в рекордах. Если же не успели вовремя кликнуть, либо дрогнула рука - встречайте GAME OVER

Excel

В конце концов, потратив немного времени, мы создали простую и забавную игру в Excel!

Файл как обычно в конце блога! Создавайте свои мини-шедевры и будьте душой коллектива;)

Игры в Excel (змейка, морской бой, вертолет и другие)

У нас появилось свободное время.. значит можно поиграть! В этой рубрике мы будем выкладывать простенькие игры в Excel. Да, в Excel тоже можно писать игры, ведь в нем встроен язык программирования VBA. После того как вы скачаете игру (по ссылкам ниже), необходимо будет только включить макросы (как это сделать описано тут ). Во многих Ирах в Excel (в макросах) есть много интересных находок. Кто знает, может игра в Excel поможет вам не только скоротать время, но и научиться чему-то новому. Играйте в Excel и пишите игры сами!

Игра в Excel «Морской бой»:

Игра в Excel «Змейка»:

Игра в Excel «Вертолет»:

Игра в Excel «Квадрат»

Игра в Excel «Лягушка»

Игра в Excel «Темница»

Если у вас есть чем поделиться — присылайте!

Пишем игры на. VBA (Pt. 1)

Пишем игры на. VBA (Pt. 1)Пишем игры на. VBA (Pt. 1)Пишем игры на. VBA (Pt. 1)Пишем игры на. VBA (Pt. 1) Пишем игры на. VBA (Pt. 1)

При желании в игру можно добавить подсчет ходов, рейтинговую таблицу или график динамики побед.

Сейчас же я считаю, что на этом можно остановиться.

Следующая статья выйдет When it's done. Скорее всего в течение недели.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *