Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Различные насадки для руки робота и их использование по назначению. как реализовать? (http://www.flasher.ru/forum/showthread.php?t=177520)

Den_root 02.04.2012 19:32

Различные насадки для руки робота и их использование по назначению. как реализовать?
 
Допустим у нас есть робот В.А.С.Я. К его двум его рукам можно прицепить различные инструменты такие как пушка, клешня, щит, в общем, что угодно). Нужно сделать так, что бы он мог использовать эти инструменты по назначению, вопрос как? Да, можно назначить всем инструментам интерфейс с методом use(), но, но, но... В.А.С.Я. должен знать, что у него есть пушка, а значит он может убить своих врагов, для чего ему нужно направить пушку в сторону врага и использовать ее, то бишь выстрелить/use(). Если в руке клешня, то ему нужно подумать, что ей подобрать и собственно подобрать/use() это. Если в сторону Васи летит снаряды, а в руке у него щит, то он может закрыться от них. Вот только я без понятия как все это реализовать.:(

anmelegov 02.04.2012 19:37

при чем тут as3 ?

DaFive 02.04.2012 19:37

В методе use пропишите то, что должен делать предмет в зависимости от того, что это за предмет.

Den_root 02.04.2012 20:19

Цитата:

Сообщение от anmelegov (Сообщение 1072613)
при чем тут as3 ?

Ну а куда еще?:)
Цитата:

Сообщение от DaFive (Сообщение 1072614)
В методе use пропишите то, что должен делать предмет в зависимости от того, что это за предмет.

Либо вы не поняли либо я. Хорошо, пушка может стрелять, но Васи мало просто выстрелить, ему ведь нужно еще и прицелится, да рассчитать упреждение на основании особенностей пушки. К тому же Васи еще нужно понять, что у него в руке пушка или скавородка. Вася не может просто слепо использовать инструменты. Он должен знать как их можно использовать и как это делать правильно.

FlashRus 02.04.2012 20:42

вы сами ответили на свой вопрос.
Цитата:

Он должен знать как их можно использовать и как это делать правильно.
вот и пусть знает. А у каждого предмета будет идентификатор что ли.... хз как у вас там всё устроено.

P.S. MVC в помощь.

Aquahawk 02.04.2012 20:44

Это называется полиморфизм. Как раз позволяет описать интерфейс некой хреновины которая надевается на руку и используется. У хреновины есть метод - пользовать хреновину. А она сама уже знает как ей пользуются, может стрелять, если пушка, а может жарить, если сковородка.

Den_root 02.04.2012 21:10

FlashRus
То есть предлагаете роботу прописать как использовать тот или иной девайс?
Aquahawk
См. выше, ничто не помешает роботу попытатся выстрелить из сковородки и поджарить что нибудь пушкой:D

Еще вопрос:
Код AS3:

public class Vasja {
 
        public var leftHand:Device;
}

Код AS3:

public interface Device {
 
        public function use();
}

Код AS3:

public class Gun implements Device{
 
        public var bulletSpeed:int = 50;
        public var dammage:int = 50;
 
        public function use():void {
                //Shoot
        }
 
}

Код AS3:

public class Magnet implements Device{
 
        public var radius:int = 5;
 
        public function use():void {
                //Drag in metal
        }
}

Если мы поместим что то в руку Васе ему нужно будет узнать характеристики предметов, что бы нормально их использовать. Подойти на расстояние действия магнита, или выстрелить на упреждение на основании скорости пули. Как в таком случае достать эти свойства? В Device они не определены.

Inet_PC 02.04.2012 21:42

Цитата:

Как в таком случае достать эти свойства? В Device они не определены.
Ну видимо if/switch:
Код AS3:

 
if (device is Magnet)
{
      //Делаем что-то с магнитом или роботом
      //Подойти на расстояние действия магнита например, а затем use();
}
else
if (device is Gun)
{
    //Делаем что-то с оружием
}
//...
device.use();

Получается робот должен знать как пользоваться основными типами девайсов, а не девайс знающий как заюзать робота.

Silicium 02.04.2012 21:50

Вот и Вот (продолжение), авось поможет

PlutDem 02.04.2012 22:03

Inet_PC
Вы показали как использовать, тот или иной девайс, но не как достать его свойства.

Можно держать в девайсе все возможные свойства и брать их в зависимости от того, что это за девайс.


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

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