Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Среда программирования: 
GMS2

В этом уроке мы продолжаем работу над IO игрой. С первого урока мы помним где что находится, как создавать спрайты, объекты и события.
Для начала изменим размеры комнаты и поставим их 1500 на 1500(1) Потом включим использование камер и отображение первой камеры (2), Установим размеры экрана(то как видим мы) (3) и размеры камеры (то что видит камера) (4) так же сделаем слежку за нашим игроком (5), и расставим стены по периметру комнаты (6):

Теперь в объекте o_player в событии step меняем строку
speed = 5
на
speed = 6 - global.size
Так мы установили зависимость скорости от размера.
Дальше в объекте o_control мы создаем событие Draw GUI - ото отвечает за рисование на экране.
Пишем туда этот код
draw_text(20,20,"Mass " + string(global.size))
draw_text(20,40,"Speed " + string(o_player.speed))

Эти строки будут переводить численные переменные в текстовые и писать на экране их значения. В первом случае мы обращаемся к глобальной переменной которая доступна от куда угодно, а во втором случае мы обращаемся к переменной игрока и запрашиваем его скорость.
Теперь самое интересное, создание простого бота - который будет стараться съесть нас.
первое что нужно сделать, создадим спрайт для него, я дублировал спрайт игрока, переименовал его в s_bot и перекрасил в красный.
Создадим объект o_bot и создадим события как на скрине:

В событии Create пишем код:
mass = 1 // Создадим локальную переменную массы
В событии Draw пишем код:
draw_self() //рисуем себя
image_xscale = global.size // увеличение по x
image_yscale = global.size // увеличение по y

В событии столкновения с o_food
mass += 0.01
В событии столкновения с o_wall
Ничего не пишем
В событии столкновения с o_player
if (mass < global.size) { //Если масса бота меньше размера игрока то бот уничтожится
instance_destroy()
} else { // если масса бота больше то уничтожится игрок и игра закончится
instance_destroy(o_player)
}

В событии Step пишем:
speed = 6 - mass
direction = point_direction(x,y,instance_nearest(x, y, o_food).x,instance_nearest(x, y, o_food).y)
if (point_distance(x,y,o_player.x,o_player.y) < 150 ){
if (mass > global.size){
direction = point_direction(x,y,o_player.x,o_player.y)
} else {
direction = point_direction(x,y,o_player.x,o_player.y) - 180
}
}

Первая строка устанавливает скорость в зависимости от массы
вторая строка выбирает направление движения к ближайшему объекту o_food чтобы его съесть.
point_direction(x1,y1,x2,y2) - выстраивает прямую от точки x1 y1 до точки x2 y2
instance_nearest(x,y,obj) - возращает ид ближайшего объекта типа obj к точке x y
x и y - локальные переменные местонахождения объекта в комнате.
После выбора направления простое условие, если бот на расстоянии 150 пикселей видит игрока то он должен принять решение, если его масса больше то преследовать игрока чтобы его уничтожить, если его масса будет меньше то он будет убегать от игрока.
После этого расставим в комнате 3 бота:

Вот и все, игра готова, можно посоревноваться с ботами и попробовать их уничтожить. Исполняемый файл и файл для Экспорта в свой GMS2 можно скачать ниже.

Прикрепленный файлРазмер
GMS2Lesson2 - Game.zip1.94 Мб
GMS2Lesson2 - sourse.zip17.92 кб