|
|
|
|||||
Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
|
Структура написания приложения
Здравствуйте, уважаемые программисты!
После процедурного программирования все не могу понять, как всетаки начать писать игру... До паттернов еще не дошел, хочу что-нибудь простенькое для себя пока написать, что бы убрать непонятки. К примеру, у меня в игре есть меню и сама игра. Пробовал сделать 2 класса Menu и Game и вызывать их из главного класса, но тут возникает проблема - приходится передавать ссылки на класс Main и на прочие... Решил сделать такую структуру: package sources { import flash.display.*; import flash.events.*; public class Main extends Sprite { public function Main():void { if(stage) init(); else addEventListener(Event.ADDED_TO_STAGE,init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE,init); // тут инициализация menu(); } private function menu():void {} private function game():void {// тут главное менюfunction somethingFunction(e:Event):void { } function enterFrameHandler(e:Event):void { } } } }// тут код игры Кто как делает? Добавлено через 1 минуту Читал другие топики, но там тоже советуют посмотреть как другие приложения написаны, я смотрел, но в основном они также и написаны))) В главном файле |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
|
Недавно я писал *****код, в котором передал ссылку на Main в класс Game, чтобы там создать экземпляр класса APIConnection (vkontakte api). Все получилось и даже выполнял запросы, хотя код очень корявый.
Зачем я так сделал? Перед этим я создавал экземпляр APIConnection в Main классе и передавал ссылку на экземпляр в экземпляр класса Game, но это выдало несколько ошибок, причем не в моих классах, а в классах VK... Понял что это неправильно и так больше делать не стал. Теперь понял что все это бред и все это надо писать в классе Main. Только код то длинный получается, я в нем начинаю путаться, а если ошибки возникать начинают, в которых компилятор не указывает номер строки - то я полчаса мучаюсь с этим кодом и в итоге создаю новый проект и пишу все снова. А если так писать всю игру - то несколько тысяч строк кода в классе Main будет в итоге - так и должно быть? Добавлено через 11 минут Цитата:
В общем куча таких непоняток, которые мне кайф от программирования прям ломают. Никакого прогресса, стою на месте, сдвинуться не могу, т.к. не понимаю куда двигаться. Но спать не иду |
|
|||||
strange mood
|
Цитата:
Код должен быть разбит по мелким и понятным классам. Объекты создаются по мере надобности. Тот, кто создал объект, дергает его методы и слушает его события. Созданный объект ничего не знает о своем создателе и шлет наверх события в надежде, что их кто-то услышит. Цитата:
__________________
тонкий тролль, осеянный благодатью |
|
|||||
ООП предполагает наличие объекта, над которым производятся какие то процедуры. Например, в JS большая сложная функция jQuery работает над DOM. В AS это Object поэтому от "процедурного" программирования Вы никуда не уйдете. Только процедуры называются функциями и работают они по большей частью со ссылками на разные объекты Нарисовали бы логику для начала по-детальнее - что куда? Так и замысел ваш станет более понятен вам самому, а за ним и умысел увидим.
|
|
|||||
В вашем словесном потоке очень трудно разобраться, а значит и помочь вам. Код в студию и комменты к нему. А вообще есть видеокурсы по программированию на апи вк. Согласен, апи неидеально, но вполне се работоспособно
|
|
|||||
Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
|
Наверное лучший совет:
Цитата:
В вашем словесном потоке очень трудно разобраться, а значит и помочь вам. Код в студию и комменты к нему. А вообще есть видеокурсы по программированию на апи вк. Согласен, апи неидеально, но вполне се работоспособно В общем, забью на лень и буду все подряд по теме изучать. iflameberg похоже наставил меня на путь истинный Всем спасибо. Добавлено через 22 минуты А хотя, убежусь кое в чем, пользуясь случаем: Цитата:
Цитата:
Меня очень волнует - правилен ли сам подход такой? прям не терпится узнать... Описываю: если бы я делал кадрами - то я бы сделал на первом кадре экран загрузки, на втором меню, на третьем игру, на четвертом магазин... Правильно ли сделать также классами(вместо каждого кадра по классу), что бы не писать все это в главном классе? То есть у меня будет главный класс Main, который будет создавать экземпляры след. классов и запускать их:
То есть Main первым делом запускает загрузку и слушает ее, как игра загрузилась, делаем LoadGame = null, чтоб не засорять память и создаем класс Menu... Блин, вот опять лажа получилась. Как я из класса Menu вызову класс Game, не используя parent? Также, при выходе из класса Game как я скажу классу Main чтоб он обнулил класс Game и запустил класс Menu? Хм... По идее Main слушает все классы, но я не пойму как сделать прослушивание не покадрово, не с какой-то переодичностью типа таймера, а чтоб память не засорялась. Т.е. чтоб прослушка не была ежесекундной к примеру, а чтоб Game сказал классу Main что игра окончилась и все, а не было постоянной проверки окончилась ли игра, в игре ведь и так расчетов много очень, нефиг проц грузить. Кароче нифига я не знаю, фигню понаписал, буду исходники изучать... Но если ответите как это теоритически все работает - очень рад буду. А то пока не пойму как это работает - к паттернам как-то очень хочется переходить, т.к. напишу код, я в нем путаюсь, мне он не нравится, он становится большим - удаляю, замучился уже. Ну ладно, iflamberg дал мне совет, воспользуюсь им... |
|
|||||
Регистрация: Feb 2012
Сообщений: 1,540
|
А я использую кастрированный MVC без модели. Т.е. главный класс создает Controller, который загружает и парсит данные, а потом создает вьюшку, которая использует состояния для отображения (MenuState, GameState extends acse.display.State).
Получается очень простая структура. |
Часовой пояс GMT +4, время: 10:16. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|