Категории раздела
Программирования [69]
разные языки программирования
Создания игр [10]
Статьи о создании игр
Движки [0]
Статьи о программах для создания игр
Игры [1]
Статьи об играх
Приложения (софт) [0]
Програми в помощь игроделу
Главная » Статьи » Создания игр

Создание простейшей стратегии на GM для полных новичков
Привет всем! Сейчас я расскажу вам как сделать простую ртс-ку (РТС - 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); 
}


Здесь всё легко, вот то же самое только по Русски: 
если нам нужно рисовать прямоугольник, то мы выбираем прозрачность и рисуем прямоугольник 
вот аргументы
Code
draw_rectangle_color(x1,y1,x2,y2,color 1, color 2, color 3, color 4, outline)

outline - будет ли рисоваться только грань (true) или залитый прямоугольник (false) 
Мы нашли новое слово - константа, это заменённое словом числовое выражение или код, в гамаке есть встроенные константы: 
Code
true (правда) - 1 
false (ложь) - 0 
pi - 3.1415...

Ну вот, разобрались, теперь нам нужно создать новый объект - родительский объект, который будет подключаться к дочерним. Назовём его par (чтобы сменить имя нужно менять код в событие шага контрольного объекта), в событие создания пишем: 
Code
selected=false; //Вот и наша переменная, выбран ли объект


Это всё. Теперь нам конечно же нужен объект, который может передвигаться, называем его objTest, в событие создания пишем код: 
Code
gox=x; //Куда идти по х... 
goy=y; //по у 
selected=false; //Мы не выбраны =) 
object_set_parent(self,par) //Вот и выбор родителя


Новое действие: 
Code
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; 


Code
distance_to_point(х,у)
- узнаёт расстояние до точки 
Code
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) 
}


Code
draw_circle_color(x,y,radius,color 1,color 2,outline)
- рисуем круг с радиусом radius 
Всё! Теперь создаём новую комнату и ставим несколько объектов теста (objTest), родительский объект (par) и контроллер (objControl) 

Вот исходник: http://narod.ru/disk/23258019001/Strategy.gm81.html 
Обозначения: 
гамак: Game Maker 
ЛКМ - Левая Кнопка Мыши 
ПКМ - Правая Кнопка Мыши
Категория: Создания игр | Добавил: graimp (17.11.2011)
Просмотров: 1158 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Наш опрос
Оцените мой сайт
Всего ответов: 25
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0