Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.05.2011, 00:25
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 11  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
Смущает, что по сути карта нужна машинке.
Не обязательно.

например структура:
Главный контроллер - координирует всю движуху
- главная вью (карта) - перемещается по экрану в зависимости от положения машинки (она ж скорее всего не влезет в экран)
- главная модель (карта) - содержит в себе данные для отрисовки вью крты - текущие видимые тайлы к примеру, объекты на карте, прочая лабуда.
- контроллер машинки - координирует свою маленькую движуху, общается с контроллером-папой
-- модель машинки - скорость, параметры типа сколько топлива осталось и прочая
-- вью машинки - ну собственно вью, целая, разбитая, пыль из-под колес если быстро едет и в таком духе. Слушает события пользователя

ну и получается:
- вью машинки: пользователь тыкнул влево
- контроллер машинки: понял, рулим влево, слышь, главный контроллер, можно?
- главный контроллер (лезет в модель уровня, сравнивает координаты машинки и карту) - можно, рулите
- контроллер машинки: ок, спасибо, модель, обновить координаты
- модель машинкиЖ слушаюсь, обновила, вью, меня поменяли
- вью машинки: поворачиваюсь.
- главный контроллер: модель, слышь, они в квадрате таком-то, отмечай.
- главная модель: отметила, вью, слышь, меня обновили
- главная вью: а сейчас мы вот так вот бочком повернемся и всё будет круто.
__________________
Кто к нам с чем для чего - тот у нас того от того.


Последний раз редактировалось Dukobpa3; 12.05.2011 в 00:32.
Старый 12.05.2011, 00:38
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 12  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Тут какие будут новые координаты решает главный контроллер, а не машинка. Потому что когда он определил, что машинке можно ехать, он проверил, что всё ок с её новыми координатами, почему бы их и не определить ему тогда сразу (когда говорит "можно, рулите"), чего два раза считать.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 12.05.2011 в 00:43.
Старый 12.05.2011, 00:39
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 13  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
да, нужно в контроллер машинки переносить логику принятия решений относительно действий после пересечения со стенами, пересечения финиша итд
А пересечение финиша я вот как могу сделать
В карте есть тайлы, которые используются для финиша
Код AS3:
public function get mapData():Object
		{
			var retObject:Object=new Object();
			retObject.tiles=mapArray;
			retObject.tileBounds=new Rectangle(0,0,80,80);
			retObject.param_0_Speed=0;
			retObject.param_1_Speed=1;
			retObject.param_2_Speed=0.95;
			retObject.finishTiles=[{c:3,r:2},{c:3,r:3}];
			return retObject;
		}
в машинку (MODEL) подается прямоугольник, высчитанный из данных финиша у карты
модель машинки спрашивает у вью машинки прямоугольник машинки я я получу пересечение или нет этих 2х прямоугольников

-De-, или Вы имели ввиду не такую геометрию ?

Старый 12.05.2011, 00:42
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 14  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Для уменьшения связанности. В перспективе с этой схемой которую я предложил можно хоть с десяток машинок добавить и каждая из них будет спокойно собой рулить, а главный контроллер будет просто давать добро и проворачивать карту куда надо.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 12.05.2011, 00:50
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 15  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Я имел в виду два отрезка - финишная черта и соединяющий предыдущее и следующее положение машинки. Вот смотрим, на их пересечение и в каком направлении оно, если есть.
http://users.livejournal.com/_winnie/152327.html
- вот как такое делать. Направление пересечения, если я ничего не напутал (а тут могу) будет сидеть в знаке seg1_line2_start (а также в seg1_line2_end, seg2_line1_start и seg2_line1_end, просто надо понять, если оно больше 0, то это вперёд или назад %)

Добавлено через 24 минуты
Dukobpa3, для уменьшения связанности заставлять контроллер машинки пересчитывать? А если оно таки сколлайдилось?
Кстати, похоже, что таки если машинок больше 1, то таки на машинке это дело не разрулить нормально, нужен кто-то сверху, карта или контроллер её/главный. Кстати, это вообще сверхдурная задача, рекомендуется физ. двиг взять.
djyamato, у вас в коде магические числа. Это может даже похуже нарушения инкапсуляции. Потом не найдёте, что за что отвечает и что данное число обозначает. Простой тест на то, что число не магическое - если чтоб его поменять надо 'переписать всё нафик' или жить в другой вселенной, то число - не магическое. Если это какие-то размеры или скорость - вбить их в константы/переменные, не использовать напрямую.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 12.05.2011 в 01:14.
Старый 12.05.2011, 02:12
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 16  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Ну так реализаций море может быть.

К тому же если по правильному (а карта как говорилось выше - тайловая) то есть проходимые тайлы, есть непроходимые.

То можно что-то придумать чтоб в модели машинки хранилось девять тайлов - сама машинка и вокруг нее.
Тогда и главный контроллер разгрузить можно.

Или же если главный контроллер будет это считать то пусть себе считает. Считать то особо нечего. пройтись по всем полученным данным от машинок с желаемыми новыми координатами, поглядеть какие новые координаты попадают в закрытые тайлы, выдать им отказ, остальным дать добро, всё.

Там по сути не просчет будет а тупо сравнение - есть координаты тайла, поглядеть на проходимость/непроходимость, всё.

Добавлено через 1 минуту
К тому же ты сам написал что нужен кто-то "выше" вот этим "выше" и есть главный контроллер.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 12.05.2011, 03:15
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 17  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
...а если мы столкнулись, то просто резко встанем, даже не вплотную к препятствию, т.к. ничего больше мы не умеем (зато умеем тунеллировать сквозь углы и два раза считать положение), но архитектура правильная, ага.

Хранить (и обновлять постоянно, вот не было чем заняться) тайлы вокруг - не уменьшает связность! Машинка-шпион сможет обьехать всё поле и узнать инфу о всех актуальных тайлах! Не хотите подумать, как запретить ей это? =)) Может, пересоздавать её почаще, чтоб лишнего не знала - это уменьшит связность =))

Если есть кто-то выше, то он и определяет положение машинки. Сама она ничего потом не пересчитывает, вот о чём этот дурной спор %)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 12.05.2011, 03:37
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 18  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
как вариант можно машинку вообще без контроллера оставить Сделать ее сугубо суб-вью))) Тогда и спор наш иссякнет. С одним контроллером и думать нечего кто чего считать будет

Опять же повторюсь, вариантов реализаций может быть море. А спор действительно ни о чем.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 12.05.2011, 13:25
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 19  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
это в модели машинки, впоследствии, это перенеслось бы во вшнешний хмл как настройка машинки
Код AS3:
protected var minSpeed:Number=0;
		protected var maxSpeed:Number=4;
		protected var carInitMaxSpeed:Number=4;
 
		protected var maxRotation:int=360;
 
		protected var nRotation:Number;
		protected var rotationAtSpeedKoeff:Number=1;
		protected var ptLoc:Point;
		protected var carColor:uint;
 
		private var speedObject:Object=new Object();
		private var angleObject:Object=new Object();
 
 
		private static const speedUpValue:Number=0.1;
		private static const speedDownValue:Number=-0.05;
 
		private static const steerLeftAngle:Number=-0.075;
		private static const steerRightAngle:Number=0.075;
 
		private var speedDownTweenDuration:Number=4;
		private var angleToZeroTweenDuration:Number=1;
да нет вроде никаких магических чисел

По поводу физ движка, это верно, я так и сделаю, хотелось хоть немного самому пошшупать.
А для этой задачи какой лучше взять двиг ? box2D? Или что-нибудь другое ?


Последний раз редактировалось djyamato; 12.05.2011 в 13:36.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.