Задача
Написать игру-ремикс прыгающего гугл-динозаврика. В этом проекте вы познакомитесь с базовой физикой игры – гравитацией.
Вспомогательные материалы
Перейдите по ссылке и скачайте архив с изображениями для игры.
https://drive.google.com/open?id=1OLo4u8tyEnE112ex5j8at2Bfke_sSXAx
Создайте проект в Small Basic и архив распакуйте в папку с вашим проектом.
Ход работы
1. Начнём с шаблона стандартного паттерна "setup-loop" с инициализацией графического окна:
' Подпрограмма для инициализации (выполняется только вначале 1 раз)
Sub setup
width = 800
height = 600
GraphicsWindow.Width = width
GraphicsWindow.Height = height
GraphicsWindow.CanResize = "false"
GraphicsWindow.BackgroundColor = "White"
EndSub
' Подпрограмма, что будет повторяться
Sub loop
EndSub
'=================== ЗАПУСК ПРОГРАММЫ ==============
' Этот блок всегда должен быть в конце тела программы!
setup()
While "true"
Program.Delay(40) ' Что соответствует 25 кадрам за секунду (1000/25 = 40 мс)
loop()
EndWhile
2. Создадим нашего главного героя – динозаврика:
2.1. Сначала наш динозаврик будет в виде прямоугольника, потом мы заменим его на изображение. Добавим подпрограмму для создания динозаврика:
'=============== ДИНОЗАВРИК ===============
Sub createDino
dinoW = 100
dinoH = 107
dinoX = 0
dinoY = height-dinoH
GraphicsWindow.BrushColor = "Green"
dino = Shapes.AddRectangle(dinoW,dinoH)
Shapes.Move(dino,dinoX,dinoY)
EndSub
Не забудьте вызвать эту подпрограмму в нужном месте программы!
2.2. Наш динозаврик будет прыгать при нажатии на любую клавишу клавиатуры. Добавим для этого обработчик события "когда клавиша нажата":
'================ ОБРАБОТЧИКИ СОБЫТИЙ ==============
GraphicsWindow.KeyDown = jumpDino
Sub jumpDino
' Код ниже мы потом поправим, пока что он для отладки
dinoY = dinoY - 4
Shapes.Move(dino,dinoX,dinoY)
EndSub
2.3. Пока динозаврик не прыгает, а просто передвигается вверх. Время добавить гравитацию! Но это уже в следующем блоке.
Вопросы:
1. Как вы понимаете понятие "код для отладки"?
2. Зачем в подпрограмме jumpDino() используется команда Shapes.Move(dino,dinoX,dinoY) ?
3. Дальнейшие указания по ссылке (преподаватель введёт полный адрес):
Комментарии
Отправить комментарий