НОВЫЕ ИГРЫ
ЛУЧШИЕ ИГРЫ
ФОРУМ
273
Всего сообщений:
305023
вход
|
регистрация
добавить игру
Список пользователей
Статистика форума
Расширенный поиск
Flash игры
аркады
9820
бродилки
3902
гонки
4208
драки
843
издевательства
374
квесты
4893
классические
2053
леталки
1401
логические
5081
+1
настольные
2394
ролевые
600
спортивные
1972
стратегии
1499
стрелялки
5549
Игровые заметки
Внимание! У Вас отключен JavaScript. Вам не будут доступны все функции сайта!
Форум FlashPlayer.ru
Форум по flash играм
Академия flash программирования
(Модераторы:
Lexei
,
Vetal1992
)
Функции...
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Автор
Тема: Функции... (Прочитано 7970 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Anatoliy)))
новичок
Сообщений:
8
Репутация:
0
Hi, world!
Просмотр профиля
Личное сообщение
Обратиться по нику
Функции...
«
:
12 Октября 2011, 10:24:59 »
Можно ли одновременно использовать одну и ту же функцию? А то я в своей программе написал функцию движения объектов и мне надо сделать так, что бы после запуска программы все объекты начинали двигаться. Я пробовал вызывать подряд мою функцию с разными параметрами, но почему-то работала только последняя строчка:
<Описание работы функции>
<Её вызов:
startF(ob2,345,665,2);
startF(ob1,345,665,2);
startF(ob3,345,665,2);>
,где ob1 или ob2 или ob3 - название объекта, который надо двигать. Работает только строчка startF(ob3,345,665,2), то есть последняя и у меня на сцене вместо рёх объектов движется только один... Помогите!))) Могу скинуть свою прогу, может там понятнее будет))))))
Записан
Vetal1992
Модератор
Мастер
Сообщений:
432
Репутация:
48
Игродел
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #1 :
12 Октября 2011, 16:51:23 »
Да скидывай ты уже программу)) Только не создавай еще больше тем)
от этого задача понятнее не становится)
Если ты имеешь в виду создавать код функции во время выполнения самой программы - для этого понадобится строчек 1000.
Функции подряд вызывать можно. Всё правильно ты делаешь. Ты, наверное, затупил со ссылками и назвал объекты не так, как надо
Записан
Anatoliy)))
новичок
Сообщений:
8
Репутация:
0
Hi, world!
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #2 :
12 Октября 2011, 21:12:01 »
Вот код))) Часть кода написал Алекс Карсс, за что ему огромное спасибо)))
function rastF(p1:Object,p2:Object):Number {
return int(Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)));
}
//------------------------------------------------------------------------------
function minrF(rus:Object):Object {
var obj:Object;
if(Math.min(rastF(rus,n0),rastF(rus,n1)) == rastF(rus,n0)) {
obj=n0;
}
if(Math.min(rastF(rus,n0),rastF(rus,n1)) == rastF(rus,n1)) {
obj=n1;
}
return obj;
}
function minnF(nap:Object):Object {
var obj:Object;
if(Math.min(rastF(nap,r0),rastF(nap,r1),rastF(nap,r2)) == rastF(nap,r0)) {
obj=r0;
}
if(Math.min(rastF(nap,r0),rastF(nap,r1),rastF(nap,r2)) == rastF(nap,r1)) {
obj=r1;
}
if(Math.min(rastF(nap,r0),rastF(nap,r1),rastF(nap,r2)) == rastF(nap,r2)) {
obj=r2;
}
return obj;
}
//-------------------------------------------------------------------------------
var fun = new Object; //Для удобства поместим всё в объект
fun.obj_1; //Ссылка на первый объект
fun.obj_2; //Ссылка на второй объект
fun.spd; //Для скоростей
fun.vid;
fun.attack1;
fun.health2;
fun.rus;
fun.progresskill = false;
fun.progressmove = false;
fun.attackF = function(e:TimerEvent):void {
fun.health2 -= fun.attack1;
if (fun.health2 <= 0) {
fun.timer1.stop();
fun.timer.stop();
fun.progresskill = true;
fun.obj_2.x = stage.width * 2;
//fun.progresskill = false;
/*
if (fun.rus == true) {
fun.obj_2 = minrF(fun.obj_1);
fun.timer.start();
}
if (fun.rus == false) {
fun.obj_2 = minnF(fun.obj_1);
fun.timer.start();
}
//*/
}
}
fun.timer = new Timer(10);
fun.timer1 = new Timer(10);
fun.timer1.addEventListener(TimerEvent.TIMER, fun.attackF);
fun.goF = function(e:TimerEvent):void {
if (fun.vid < rastF(fun.obj_1,fun.obj_2)) {
if(fun.obj_1.x > fun.obj_2.x && fun.vid < rastF(fun.obj_1,fun.obj_2)){
fun.obj_1.x-=fun.spd;
}
if(fun.obj_1.y > fun.obj_2.y && fun.vid < rastF(fun.obj_1,fun.obj_2)){
fun.obj_1.y-=fun.spd;
}
if(fun.obj_1.x < fun.obj_2.x && fun.vid < rastF(fun.obj_1,fun.obj_2)){
fun.obj_1.x+=fun.spd;
}
if(fun.obj_1.y < fun.obj_2.y && fun.vid < rastF(fun.obj_1,fun.obj_2)){
fun.obj_1.y+=fun.spd;
}
}
if (fun.vid >= rastF(fun.obj_1,fun.obj_2)) {
fun.timer1.start();
fun.progressmove = true;
}
}
//Используем функцию для сохранения нужных объектов и старка обработчика
function startF(obj_1:Object,_spd,_vid,_rus,_attack1,_health2):void {
fun.obj_1 = obj_1;
fun.spd = _spd;
fun.vid = _vid;
fun.attack1 = _attack1;
fun.health2 = _health2;
if (_rus == 1) {
fun.obj_2 = minrF(fun.obj_1);
fun.rus = true;
}
if (_rus == 0) {
fun.obj_2 = minnF(fun.obj_1);
fun.rus = false;
}
fun.timer.addEventListener(TimerEvent.TIMER, fun.goF);
fun.timer.start();
}
//startF(r1,1);
//--------------------------------------------------------------------------------
//(Объект,скорость,видимость,приналежность,атака1,жизни2)
//if (fun.progresskill == true){
// startF(r0,1,150,1,1,100);
//
// trace("r0",fun.progresskill);
//}
//if (fun.progresskill == false){
// startF(r1,1,150,1,1,100);
// trace("r1",fun.progresskill);
//}
//trace(fun.progresskill);
//-------------------------------------------------------------------------------
/*stage.addEventListener(MouseEvent.CLICK, traceF);
function traceF(e:MouseEvent):void {
trace(fun.progresskill);
trace(fun.progressmove);
if (fun.progresskill == true && fun.progressmove == true) {
startF(r1,1,100,1,1,200);
}
}*/
//var timer3:Timer = new Timer(1000);
//timer3.addEventListener(TimerEvent.TIMER, osnF);
//timer3.start();
//function osnF(e:TimerEvent) {
//startF(r0,1,15,1,1,100);
//startF(r1,1,15,1,1,100);
//startF(r2,1,15,1,1,100);
//
//startF(n0,1,15,0,1,100);
//startF(n1,1,15,0,1,100);
//}
startF(r0,1,15,1,1,100);
Записан
Elentarion
Мастер
Сообщений:
215
Репутация:
26
Game-developer
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #3 :
12 Октября 2011, 22:20:48 »
Начнем с того, что ты зашел не с того конца. Сначала ставится задача, а потом уже записывается под нее код, но не наоборот. Твоя функция не вызывается несколько раз подряд потому, что каждый раз ты просто переписываешь в ней одно и тоже значение сразу.
fun.obj_1 = obj_1;
А обработчик TimerEvent.TIMER начинает действовать только с последним значением в последней функции, так как начинает работать после прохождения всех действий в следующих кадрах. Если надо сделать так, что бы одновременно обрабатывались несколько объектов, то нужно использовать массивы. Если нужно что бы поочередно, тогда условие перехода к следующему объекту.
Пока же конечная задача остается неясной, а нужно ориентироваться именно на нее. Это и называется проектирование приложения. И нужно ли использовать таймер, ведь можно ограничится и обычным счетчиком.
В общем опиши задачу конечную обычными словами, а так и помочь будет проще уже.
«
Последнее редактирование: 12 Октября 2011, 22:23:44 от Elentarion
»
Записан
Anatoliy)))
новичок
Сообщений:
8
Репутация:
0
Hi, world!
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #4 :
12 Октября 2011, 22:25:56 »
Если в целом, то вот моя задача:
И так... вообще должно быть окошко с кнопками типа:
________________________________________________
| | История
| | Свойства
| | Начать битву
| изображение поля боя | Выбрать битву
| (схематично) |Приостановить
| |
| |
| |
| |
| |
| |
| |
| ___________________________________|____________
где левая часть представлена экраном, показывающим поле битвы(сверху, схематично, например: река - синяя полоса, мосты - две линии перпендикулярные реке и имеющие на конце небольшие отрезки, деревья - несколько зелёных линий,войска - геометрические фигуры и так далее), а в правой части находятся кнопки, вызывающие либо всплывающее сообщение, либо другое окошко:
История - история той или иной битвы;
Свойства - программные свойства объекта(см. ниже);
Начать, приостановить и выбрать битву - надеюсь всё понятно(начало боя, приостановка, выбор боя, где фигурки(деревья, войска) уже расставлены).
Отряды боевых единиц делятся на пехоту, кавалерию и артиллерию(возможно и добавление ещё каких-то классво или подклассов в процессе разработки)
У них у всех должны быть свойства, с помощью которых можно будет программно управлять течением боя:
-скорость (пиксели в секунду)
-сила (кол-во возможных убийств за 1 секунду)
-выносливость(с течением времени должна уменьшаться и уменьшать зависимые переменные)
-дальность атаки(максимальное кол-во пикселей, при котором может быть задействовано свойство "Силы")
-кол-во боевых единиц в отряде
-может ли отряд преодолевать определённые препятствия(брод, лес, постройки)
-боевой дух(коэффициент на которой умножаются зависимы переменные)
-меткость в %
-видимость(на каком расстоянии видит вражеский отряд)
Формулы:
Выносливость = выносливость * боевой дух
Скорость = скорость * боевой дух
Меткость = меткость * боевой дух
Сила = сила * меткость * боевой дух
Виды преград:
1.Естественные
а)Реки(ширина, наличие брода)
б)Леса
2.Неестественные:
а)Мосты
б)Постройки
Для начала нужно написать приложение с меньшими возможностями, попроще, а там уже видно будет... Вы только давайте мне советы, а реализовывать я их сам стараться буду, а то работа ведь на конкурс)))
Добавлено через: 2 мин. 56 сек.
Параметр видимости не нужен, так как программа, даже если будет правильно написана, работать не будет, т.к. объект "невидим".
«
Последнее редактирование: 12 Октября 2011, 22:28:52 от Anatoliy)))
»
Записан
Elentarion
Мастер
Сообщений:
215
Репутация:
26
Game-developer
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #5 :
12 Октября 2011, 22:33:07 »
С использованием пользовательских классов знаком? Создание классов и объектов, наследование? Или только программирование в главном сцене программы и стандартные классы?
Записан
Anatoliy)))
новичок
Сообщений:
8
Репутация:
0
Hi, world!
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #6 :
12 Октября 2011, 22:37:17 »
Конкретно в as 3.0 - нет. Но общее представление об этом имею и знаю один сайт с уроками... cyber-page. Там есть про создание пользовательских классов, так что по идее могу научится и в as 3.0
Добавлено через: 53 сек.
я имел ввиду создание пользовательских классов)
Добавлено через: 8 мин. 18 сек.
Так что же мне сделать? Создать массив объектов(это возможно?) и работать с ним? К сожалению ухожу....
«
Последнее редактирование: 12 Октября 2011, 22:45:35 от Anatoliy)))
»
Записан
Elentarion
Мастер
Сообщений:
215
Репутация:
26
Game-developer
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #7 :
12 Октября 2011, 22:48:22 »
Еще один вопрос. Насколько я понял, ты сейчас хочешь реализовать непосредственно ведение боя. Как оно должно выглядеть? Ну то есть игрок управляет войсками или программно. По каким примерно правилам?
Записан
Anatoliy)))
новичок
Сообщений:
8
Репутация:
0
Hi, world!
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #8 :
13 Октября 2011, 11:30:26 »
Короче на конкурс по программированию хочу сделать прогу))) Вот уже как месяц пытаюсь) А так нам дали тему "Война 1812" и я решил создать программу которая автономно иллюстрирует действие боя...) А если сделать, что бы человек управлял(это не надо), то получится целая стратешка))))
Добавлено через: 30 сек.
сейчас опишу правила...секунду
Добавлено через: 7 мин. 11 сек.
Возьмём, как пример, один какой-нибудь объект(может быть отряд кавалерии, например). Программа должна вычислить ближайший вражеский объект, затем двигаться к нему до момента, когда параметр дальности ведения огня(у меня в программе называется vid) будет больше или равен расстоянию от взятого нами объекта до вражеского. Далее наш объект начинает отнимать у вражеского "жизни". Если у противника параметр "жизнь" меньше или равен нулю, то его надо убрать с поля боя. Тут я нашёл два выхода, пока не знаю какой-лучше. Первый, это RemoveChild(вражеский объект). Второй, просто изменить координаты вражеского объекта так, что бы он не был виден, но тут есть проблема: а что если пользователь захочет увеличить размеры окна? тогда враг уже будет виден и это не совсем хорошо)))
Добавлено через: 6 мин. 4 сек.
а ещё забыл добавить.... Все объекты на экране (войска обеих сторон) должны двигаться все вместе.
«
Последнее редактирование: 13 Октября 2011, 11:43:41 от Anatoliy)))
»
Записан
Дарт Вёдер
Избранный
Сообщений:
2487
Репутация:
43
Бойся белого квадрата!
Просмотр профиля
Личное сообщение
Обратиться по нику
Re: Функции...
«
Ответ #9 :
13 Октября 2011, 12:25:34 »
Do a barrel roll
Записан
Печать
Страницы: [
1
]
« предыдущая тема
следующая тема »
Форум FlashPlayer.ru
Форум по flash играм
Академия flash программирования
(Модераторы:
Lexei
,
Vetal1992
)
Функции...
Рекомендуем
Бесплатные игры стратегии пошаговые онлайн
Бесплатные игры стратегии рыцари онлайн