Четверг, 28 Марта 2024, 20:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Adobe Flash и Создание флэш-игр » Небольшой вопрос
Небольшой вопрос
Mephist04Дата: Пятница, 14 Марта 2014, 10:52 | Сообщение # 1
уже был
Сейчас нет на сайте
Вот решил заняться созданием игр на ас3, сделал парочку платформеров - все нормально вышло, решил попробовать сделать змейку.
Главный герой (голова змеи), еда, появляющаяся на экране и меняющая положение при поедании созданы были легко, но возник вопрос - как сделать так, чтобы удлинялся хвост змеи?
Я написал вот такой код :
Код
var i = 0;
var food:Array = [];

addEventListener(Event.ENTER_FRAME, gg33);
function gg33 (e:Event):void{
   if (geroj1.hitTestObject(eat.coll)){
eat.x = (Math.floor(Math.random()*(6)))*100+(50*( Math.floor(Math.random()*(2))));
eat.y = (Math.floor(Math.random()*(4)))*100+(50*( Math.floor(Math.random()*(2))));
var food2 = new geroj();
food2.x = g;
food2.y = c;
food.push(food2);
addChild(food[i]);

var food3 = setInterval(food4, 500);
function food4(){
food2.x = g;
food2.y = c;
}

i++;

   }
}

Здесь g и c - раннее созданные переменные, которые каждые 500 миллисекунд считывают предыдущее положение головы змеи (geroj1) и присваивают это значение после соприкосновения с едой (также каждые 500 мс) вновь созданному объекту. По понятным причинам это работает лишь 1 раз, дальше змея не удлиняется.. подайте идею, как сделать увеличение змеи при каждом касании пищи?)

Добавлено (14.03.2014, 10:52)
---------------------------------------------
Решил проблему) Вместо числовых переменных g и с сделал 2 массива, в которые записываются все координаты х и у головы, а код, срабатывающий при поедании пищи переделал следующим образом :
Код
var t = 1;
var i = 0;
var food:Array = [];

addEventListener(Event.ENTER_FRAME, gg33);
function gg33 (e:Event):void{
   if (geroj1.hitTestObject(eat.gg111)){
eat.x = (Math.floor(Math.random()*(6)))*100+(50*( Math.floor(Math.random()*(2))));
eat.y = (Math.floor(Math.random()*(4)))*100+(50*( Math.floor(Math.random()*(2))));
var food2 = new geroj();
var t1 = t;
food2.x = g[i1-t1];
food2.y = c[i1-t1];
food.push(food2);
addChild(food[i]);
     
var food3 = setInterval(food4, 500);
function food4(){
food2.x = g[i1-t1];
food2.y = c[i1-t1];
}
t++;
i++;

   }
}


Сообщение отредактировал Mephist04 - Пятница, 14 Марта 2014, 11:02
ApuoHДата: Воскресенье, 16 Марта 2014, 15:38 | Сообщение # 2
почетный гость
Сейчас нет на сайте
змея состоит из квадратов. по умолчанию у нас есть в данном массиве 2 квадрата (голова и хвост).
естественно при каждом удлинении хвоста. мы добавляем новый элемент в массив у которого первоначальные координаты последнего элемента в массиве.
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Adobe Flash и Создание флэш-игр » Небольшой вопрос
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг