Создание стратегии
| Примечание: в связи с исправлениями, я сделал этот урок более понятным, в нём записаны все аргументы и подробное описание, подойдёт для новичков и любителей, вскоре выложу исходник Привет всем! Сейчас я расскажу вам как сделать простую ртс-ку (РТС - RTS - Real Time Strategy то есть стратегия в реальном времени) открываем гамак 8.1 (на 8.0 работоспособность не гарантируется) создаём объект objControl, то есть это будет наш главный объект создаём событие создания (Create) Добавить событие => Создание (Add event => Create) событие создание делается всего один раз - при создании, нажимаем на вкладку control в правом вертикальном меню и нажимаем ПКМ по Execute code (Выполнить код) и пишем код (лучше всего не копировать код, а писать его самому, так гораздо легче запомнить): Code startx=0; //Объявляем переменную начала точки по х starty=0; //Объявляем переменную начала точки по у draw_rect=false; //Не рисуем прямоугольник выбора Переменная: часть памяти, которая содержат информацию. Они имеют своё имя, с помощью которого Вы можете обратиться к ним. Переменные в GML могут содержать реальное число или строку. К примеру, стол - это переменная, деревянный или стеклянный - значение Теперь создаём событие шага (Step, Add Event = > Step) и выполняем операцию заново (нажимаем ПКМ по Execute code (Выполнить код)): Code if mouse_check_button_pressed(mb_left) //Если ЛКМ нажата { draw_rect=true; //Мы рисуем прямоугольник startx=mouse_x; //Стартовая х позиция = положение х мыши starty=mouse_y; //Стартовая у позиция = положение у мыши with all selected=false; //Это пока не объявленная переменная, что она будет делать мы узнаем позже } if mouse_check_button_released(mb_left) //Если ЛКМ отпущенна { draw_rect=false; //Мы не рисуем прямоугольник for(i=0;i<=instance_number(par);i+=1) //Читайте про цикл for ниже { ii=instance_find(par,i); //Мы ищем пока не сделанный объект if(collision_rectangle(startx,starty,mouse_x,mouse_y,ii,true,false)) //Вот наш прямоугольник коллизии (соприкосновения) { ii.selected=true; } } } Код большой и сложный, пока мы узнаем про оператор условия if: Код с if выполняется так: Code if (условие) { действие } также в нём может быть оператор else (иначе), пример: Code if (условие) { действие } else { действие 2 } а for - это оператор цикла, он выполняется так: Code for (<переменная> ; <выражение> ;<действие переменной>) { <действия> } оператор for очень мощная вещь, он очень помогает в трудных ситуациях Оператор - встроенные в ЯП действия, например, самая распространённая это int, if, else, string, switch, for, case, break, exit, и т.д и т.п. Теперь также создаём событие рисования (draw) и таким же путём пишем: Code if draw_rect=true { alpha=.8; draw_rectangle_color(startx,starty,mouse_x,mouse_y,c_green,c_green,c_green,c_green,true); } Здесь всё легко, вот то же самое только по Русски: если нам нужно рисовать прямоугольник, то мы выбираем прозрачность и рисуем прямоугольник вот аргументы draw_rectangle_color(x1,y1,x2,y2,color 1, color 2, color 3, color 4, outline) outline - будет ли рисоваться только грань (true) или залитый прямоугольник (false) Мы нашли новое слово - константа, это заменённое словом числовое выражение или код, в гамаке есть встроенные константы: true (правда) - 1 false (ложь) - 0 pi - 3.1415... Ну вот, разобрались, теперь нам нужно создать новый объект - родительский объект, который будет подключаться к дочерним. Назовём его par (чтобы сменить имя нужно менять код в событие шага контрольного объекта), в событие создания пишем: Code selected=false; //Вот и наша переменная, выбран ли объект Это всё. Теперь нам конечно же нужен объект, который может передвигаться, называем его objTest, в событие создания пишем код: Code gox=x; //Куда идти по х... goy=y; //по у selected=false; //Мы не выбраны =) object_set_parent(self,par) //Вот и выбор родителя Новое действие: object_set_parent(ind,obj) - Устанавливает родительский объект для объекта с именем ind. И новый оператор: self, он означает что действие будет переходить к себе Не бойтесь, ещё немного осталось, в событие шага: Code if distance_to_point(gox,goy) > 20 { mp_potential_step(gox,goy,6,solid); } if(selected=true) && mouse_check_button_pressed(mb_right) { gox=mouse_x; goy=mouse_y; } distance_to_point(х,у) - узнаёт расстояние до точки mp_potential_step(х,у,speed,checkall), speed - скорость, checkall - обходить всех (true) или нет (false) тут тоже всё просто. И последнее - рисование: Code draw_self() //рисуем себя, если не написать, рисоваться объест не будет! (в gm8.0 не работает!) if selected=true { draw_circle_color(x,y,16,c_green,c_green,1) } draw_circle_color(x,y,radius,color 1,color 2,outline) - рисуем круг с радиусом radius Всё! Теперь создаём новую комнату и ставим несколько объектов теста (objTest), родительский объект (par) и контроллер (objControl) Обозначения: гамак: Game Maker ЛКМ - Левая Кнопка Мыши ПКМ - Правая Кнопка Мыши За остальными уроками пишем: Mail: grisha.ykpon4uk@gmail.com , gmod_man_grisha@mail.ru Skype: grisha_super А вот и исходник: http://rghost.ru/14256781 вторая ссылка : http://load.gdop.ru/24652123 | |
| Категория: Программирование | Добавил: MrIncrof | |
| Просмотров: 945 | Загрузок: 0 | Рейтинг: 5.0/2 | | |
| Всего комментариев: 0 | |








Сайт:
Новости:
Скачать:
Дополнительно:
Форум:









