|
|
|||||
Регистрация: Feb 2014
Сообщений: 192
|
организация кода для игры
Я пытаюсь сделать игрушку. Подскажите правильно ли делаю.
У меня есть допустим 4 класса: 1. Main - главный класс, в котором я делаю экземпляры фона , машины. Затем каждый кадр вызываю статический метод класса Uprav.klava (fon,car, mouseX,mouseY) - ну и параметры ссылки на экземпляры и положение указателя мыши. 2. Car - класс автомобиля, в котором имеются только переменные (скорость ...) 3. Fon - класс фона с объектами 4. Uprav - класс управления авто. Есть ли какие-либо стандарты для кода типовой игры? |
|
|||||
Да стандартов не посчитаешь, и все только помогают писать игру. Для этого они и существуют.
Начать можно с http://www.ant-karlov.ru/pishem-igru-vstuplenie.html
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Feb 2014
Сообщений: 192
|
ZackMercury, спасибо за ссылку!
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
по своему опыту, пиши как можешь и параллельно читай шаблоны проектирование, потому как не написав *****код, не сможешь понять всю прелесть шаблонов.
|
|
|||||
neonoviiwolf, чтобы браться за шаблоны - нужно знать язык, свободно им владеть и выражать что вздумается.
Рановато. Чтобы понять, как решать проблемы - нужно понять, что мы именно хотим решать. Добавлено через 3 минуты Для клавиатуры я использую стырянную конструкцию у caseyryan, который в свою очередь скопировал конструкцию из AS2. package com.shooter { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; /** * ... * @author ZackMercury */ public class Key { private var keysDown:Object = { }; public function Key() { super(); if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, kDown); stage.addEventListener(KeyboardEvent.KEY_UP, kUp); } private function kDown(e:KeyboardEvent):void { keysDown[e.keyCode] = true; } private function kUp(e:KeyboardEvent):void { keysDown[e.keyCode] = null; } public function isDown(key:int):Boolean { return keysDown[key]; } } }
__________________
There is no thing in this world that is not simple. |
|
|||||
Цитата:
У тебя не рабочая конструкция, там никогда не будет stage (к слову, она даже не скомпилируется), так как у тебя класс не расширяет ни DisplayObject ни EventDispatcher и в дисплей лист не может быть добавлен, и слушатели принимать Да и лучше все методы этого класса сделать статиками |
|
|||||
Регистрация: Feb 2014
Сообщений: 192
|
А ведь я также использую код caseyryan, я думаю он не будет против, только одну переменную добавил
package { import flash.display.Stage; import flash.events.Event; import flash.events.KeyboardEvent; public class Key { private static var initialized:Boolean = false; private static var keysDown:Object = new Object(); static var keysDownNow:Boolean; //моя переменная public static function initialize(stage:Stage):void { if (!initialized) { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); stage.addEventListener(Event.DEACTIVATE, clearKeys); initialized = true; } } public static function isDown(keyCode:uint):Boolean { if (!initialized) { throw new Error("Key class has not yet been initialized."); } return Boolean(keyCode in keysDown); } private static function keyPressed(event:KeyboardEvent):void { keysDown[event.keyCode] = true; keysDownNow = true; } private static function keyReleased(event:KeyboardEvent):void { if (event.keyCode in keysDown) { delete keysDown[event.keyCode]; } keysDownNow = false; } private static function clearKeys(event:Event):void { keysDown = new Object(); } } } |
|
|||||
Цитата:
Если уж надо проверить нажато ли что-то в данный момент, то нужно проверять всю коллекцию как-то так: |
|
|||||
Цитата:
Не дописал чуток
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 27.09.2015 в 11:21. |
Часовой пояс GMT +4, время: 17:18. |
|
« Предыдущая тема | Следующая тема » |
|
|