Criss-Cross или научите быть не быдло кодером

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Criss-Cross или научите быть не быдло кодером

Сообщение Lampy »

Предупреждаю, эта тема не о просьбе, что-то сделать за меня. Эта тема, для критики проделанной работы.
Собственно 3 месяца назад начал читать мал по малу Мука. Вчера решил сделать первое своё приложение, выбор пал на Крестики нолики. Сначала подумал что очень уж простая игра и проблем не будет, но как оказалось все на много тяжелее. Ниже привожу код моих крестиков ноликов, хотелось бы услышать замечания от профессиональных кодеров. Коменты в коде есть.

И так, первый класс, это основной класс приложения, он же Main

Код: Выделить всё

package CrissCross{    import flash.display.Sprite;    import flash.events.Event;    import flash.events.MouseEvent;    import flash.text.TextField;        /**     * ...     * @author Lampy     */    public class Main extends Sprite     {                private var Criss1:NewCriss; // Добавляю экземпляр класса "крестик" без параметров, параметры указываются внутри функций                private var Circle1:Cirlce;  // Добавляю экземпляр класса "крестик" без параметров, параметры указываются внутри функций                private var TextWin:TextField = new TextField();// добавляю экземпляр класса  для вывода текса "вы победили"                private var WinInit:uint = 1; // Добавляю 18 переменых, чтобы отслеживать  выигрышные условия        private var WinInit1:uint = 1;        private var WinInit2:uint = 1;        private var WinInit3:uint = 1;        private var WinInit4:uint = 1;        private var WinInit5:uint = 1;        private var WinInit6:uint = 1;        private var WinInit7:uint = 1;        private var WinInit8:uint = 1;                private var WinInit10:uint = 1;        private var WinInit11:uint = 1;        private var WinInit12:uint = 1;        private var WinInit13:uint = 1;        private var WinInit14:uint = 1;        private var WinInit15:uint = 1;        private var WinInit16:uint = 1;        private var WinInit17:uint = 1;        private var WinInit18:uint = 1;                private var addGrille:Grille = new Grille(100,100); // Добавление решетки        private var addGrille1:Grille = new Grille(150,100);        private var addGrille2:Grille = new Grille(200,100);        private var addGrille3:Grille = new Grille(100,150);        private var addGrille4:Grille = new Grille(150,150);        private var addGrille5:Grille = new Grille(200,150);        private var addGrille6:Grille = new Grille(100,200);        private var addGrille7:Grille = new Grille(150,200);        private var addGrille8:Grille = new Grille(200, 200);                private var ChoiseX:Grille = new Grille(400, 50); // Добавление 2ух кнопок, для выбора крестика или нолика        private var ChoiseO:Grille = new Grille(450, 50);                public function Main():void         {                        Criss1 = new NewCriss (410, 60); // добавляю в кнопку крестик и нолик            addChild(Criss1);            Circle1 = new Cirlce (475, 75)            addChild(Circle1);                        ChoiseX.addEventListener(MouseEvent.CLICK, ChoiseCriss);        // Добавляю события на кнопки крестика и нолика               ChoiseO.addEventListener(MouseEvent.CLICK , ChoiseCross);            addChild(ChoiseX); // Добавляю в список отображения  кнопки            addChild(ChoiseO);                        addChild(addGrille); // Добавляю ячейки решетки в список отображений            addChild(addGrille1);            addChild(addGrille2);            addChild(addGrille3);            addChild(addGrille4);            addChild(addGrille5);            addChild(addGrille6);            addChild(addGrille7);            addChild(addGrille8);                                                                                addEventListener(MouseEvent.CLICK, Winfunc); // Добавляю событие на клик мышки при котором запускается функция  отслеживания выигрышного результата            addEventListener(MouseEvent.CLICK, Winfunc1);                            }                private function ChoiseCross (e:MouseEvent):void {  // Функция при выборе которой яцейкам добавляется событие на клик мышки, которое отображает нолик            addGrille.addEventListener(MouseEvent.CLICK , VisibleCross1);            addGrille1.addEventListener(MouseEvent.CLICK , VisibleCross2);            addGrille2.addEventListener(MouseEvent.CLICK , VisibleCross3);            addGrille3.addEventListener(MouseEvent.CLICK , VisibleCross4);            addGrille4.addEventListener(MouseEvent.CLICK , VisibleCross5);            addGrille5.addEventListener(MouseEvent.CLICK , VisibleCross6);            addGrille6.addEventListener(MouseEvent.CLICK , VisibleCross7);            addGrille7.addEventListener(MouseEvent.CLICK , VisibleCross8);            addGrille8.addEventListener(MouseEvent.CLICK , VisibleCross9);                                    }                private function ChoiseCriss (e:MouseEvent) : void { // Функция при выборе которой яцейкам добавляется событие на клик мышки, которое отображает крестик                        addGrille.addEventListener(MouseEvent.CLICK , VisibleCriss);            addGrille1.addEventListener(MouseEvent.CLICK , VisibleCriss1);            addGrille2.addEventListener(MouseEvent.CLICK , VisibleCriss2);            addGrille3.addEventListener(MouseEvent.CLICK , VisibleCriss3);            addGrille4.addEventListener(MouseEvent.CLICK , VisibleCriss4);            addGrille5.addEventListener(MouseEvent.CLICK , VisibleCriss5);            addGrille6.addEventListener(MouseEvent.CLICK , VisibleCriss6);            addGrille7.addEventListener(MouseEvent.CLICK , VisibleCriss7);            addGrille8.addEventListener(MouseEvent.CLICK , VisibleCriss8);            }                private function Winfunc (e:Event):void { // Функция, проверки  выигрышной ситуации            if (WinInit == 2 && WinInit1 == 2 && WinInit2 == 2 || WinInit == 2 && WinInit3 == 2 && WinInit6 == 2 ||             WinInit == 2 && WinInit4 == 2 && WinInit8 == 2 || WinInit1 == 2 && WinInit4 == 2 && WinInit7 == 2 ||             WinInit2 == 2 && WinInit4 == 2 && WinInit6 == 2 || WinInit2 == 2 && WinInit5 == 2 && WinInit8 == 2 || WinInit3              == 2 && WinInit4 == 2 && WinInit5 == 2 || WinInit6 == 2 && WinInit7 == 2 && WinInit8 == 2)             {            TextWin.text = "Крестики победили" // Задаю переменой TextWin  значение "You Win"            addChild(TextWin); // добавление в список отображений  чаилда текса            removeEventListener(MouseEvent.CLICK, Winfunc); // убераю событие на клик мыши            removeEventListener(MouseEvent.CLICK, Winfunc1);            ChoiseO.removeEventListener(MouseEvent.CLICK, ChoiseCross);            ChoiseX.removeEventListener(MouseEvent.CLICK, ChoiseCriss);                        }        }        private function Winfunc1 (e:Event):void { // Функция, проверки  выигрышной ситуации            if (WinInit10 == 2 && WinInit11 == 2 && WinInit12 == 2 || WinInit10 == 2 && WinInit13 == 2 && WinInit16 == 2 ||             WinInit10 == 2 && WinInit14 == 2 && WinInit18 == 2 || WinInit11 == 2 && WinInit14 == 2 && WinInit17 == 2 ||             WinInit12 == 2 && WinInit14 == 2 && WinInit16 == 2 || WinInit12 == 2 && WinInit15 == 2 && WinInit18 == 2 || WinInit13              == 2 && WinInit14 == 2 && WinInit15 == 2 || WinInit16 == 2 && WinInit17 == 2 && WinInit18 == 2)             {            TextWin.text = "Нолики победили" // Задаю переменой TextWin  значение "You Win"            addChild(TextWin); // добавление в список отображений  чаилда текса            removeEventListener(MouseEvent.CLICK, Winfunc1); // убераю событие на клик мыши            removeEventListener(MouseEvent.CLICK, Winfunc);            ChoiseO.removeEventListener(MouseEvent.CLICK, ChoiseCross);            ChoiseX.removeEventListener(MouseEvent.CLICK, ChoiseCriss);            }                        }        private function VisibleCross1 (e:MouseEvent): void { // девять функция, при которых, добавляется в ячейку нолик и дается переменой ВинИнит значение                         Circle1 = new Cirlce(120, 120);            addChild(Circle1);            WinInit10 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                }        private function VisibleCross2 (e:MouseEvent): void {            Circle1 = new Cirlce(170, 120);            addChild(Circle1);            WinInit11 += 1;            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                                }        private function VisibleCross3 (e:MouseEvent): void {            Circle1 = new Cirlce(220, 120);            addChild(Circle1);            WinInit12 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                                }        private function VisibleCross4 (e:MouseEvent): void {            Circle1 = new Cirlce(120, 170);            addChild(Circle1);            WinInit13 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                                }        private function VisibleCross5 (e:MouseEvent): void {            Circle1 = new Cirlce(170, 170);            addChild(Circle1);            WinInit14 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                                }        private function VisibleCross6 (e:MouseEvent): void {            Circle1 = new Cirlce(220, 170);            addChild(Circle1);            WinInit15 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                                }        private function VisibleCross7 (e:MouseEvent): void {            Circle1 = new Cirlce(120, 220);            addChild(Circle1);            WinInit16 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                                }        private function VisibleCross8 (e:MouseEvent): void {            Circle1 = new Cirlce(170, 220);            addChild(Circle1);            WinInit17 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);                                }        private function VisibleCross9 (e:MouseEvent): void {            Circle1 = new Cirlce(220, 220);            addChild(Circle1);            WinInit18 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);                                }                                                    private function VisibleCriss (e:MouseEvent): void { // девять функция, при которых, добавляется в ячейку нолик и дается переменой ВинИнит значение             Criss1= new NewCriss ( 109, 108);            addChild(Criss1);            WinInit += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss1 (e:MouseEvent): void {            Criss1= new NewCriss ( 159, 108);            addChild(Criss1);            WinInit1 += 1;            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss2 (e:MouseEvent): void {            Criss1= new NewCriss ( 209, 108);            addChild(Criss1);            WinInit2 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss3 (e:MouseEvent): void {            Criss1= new NewCriss ( 109, 158);            addChild(Criss1);            WinInit3 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss4 (e:MouseEvent): void {            Criss1= new NewCriss ( 159, 158);            addChild(Criss1);            WinInit4 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss5 (e:MouseEvent): void {            Criss1= new NewCriss ( 209, 158);            addChild(Criss1);            WinInit5 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss6 (e:MouseEvent): void {            Criss1= new NewCriss ( 109, 208);            addChild(Criss1);            WinInit6 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss7 (e:MouseEvent): void {            Criss1= new NewCriss ( 159, 208);            addChild(Criss1);            WinInit7 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);            }        private function VisibleCriss8 (e:MouseEvent): void {            Criss1= new NewCriss ( 209, 208);            addChild(Criss1);            WinInit8 += 1;            addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);            addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);            addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);            addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);            addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);            addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);            addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);            addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);            }    }    }

Класс по созданию ячейк решетки.

Код: Выделить всё

package CrissCross {    import flash.display.Sprite;        /**     * ...     * @author Lampy     */    public class Grille extends Sprite     {                public function Grille(_xposition:uint, _yposition:uint)         {        graphics.lineStyle(2,0);        graphics.beginFill(4, 0.2);        graphics.drawRect(_xposition, _yposition, 50, 50);                        }            } }
Класс, рисующий крестик

Код: Выделить всё

package CrissCross {    import flash.display.Sprite;        /**     * ...     * @author Lampy     */    public class Criss extends Sprite     {                public function Criss()         {        graphics.lineStyle(3, 0 );        graphics.beginFill(2,0);        graphics.moveTo (0, 0);        graphics.lineTo(30, 30);        graphics.moveTo(30, 0);        graphics.lineTo(0, 30);            }            } }
Класс который принимает 2 параметра крестика x, y

Код: Выделить всё

package CrissCross {    import flash.display.Sprite;    import flash.events.MouseEvent;    import flash.events.Event;    import flash.display.MovieClip;        /**     * ...     * @author Lampy     */    public class NewCriss extends Sprite     {        private var CrissAdded:Criss = new Criss;        public function NewCriss(_xposition:uint, _yposition:uint )         {        CrissAdded.x = _xposition;        CrissAdded.y = _yposition;                addChild(CrissAdded);                    }            } }

Класс, рисующий нолик

Код: Выделить всё

package CrissCross {    import flash.display.Sprite;        /**     * ...     * @author Lampy     */    public class Cirlce extends Sprite     {                public function Cirlce(_xposition:uint,_yposition:uint)         {        graphics.lineStyle (2 , 0);        graphics.beginFill(2, 0);        graphics.drawCircle(_xposition , _yposition, 15);        }            } }

И само приложение, уже работающее в контакте
http://vk.com/app3121296_9962397?ref=1
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Criss-Cross или научите быть не быдло кодером

Сообщение Casperovskii »

1. Попробовал приложение - нет установленной очередности хода. Fail.
2. Убирание/добавление слушателей - ужасно реализовано. Лучше сделать булеву переменную, или переменную с номером нажатого квадрата.
3. Зачем 9 функций? Через 2 цикла for i, for j создаешь массив из своих 9ти клеток, на каждый во внутреннем цикле вешаешь один и тот же слушатель(!), если хочется так морочиться с кодом, можно через case по event.target сделать твои 9 проходов, но реально - просто присвоить переменные X и Y через case.
4. В игре баг - можно 2 раза крестики или 2 раза нолики поставить подряд.
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Re: Criss-Cross или научите быть не быдло кодером

Сообщение Lampy »

Спасибо за ответ, нужно еще будет недельку почитать =) Баг видел, уберу. А вот по поводу 3го замечания не совсем понял, точнее первую часть
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Criss-Cross или научите быть не быдло кодером

Сообщение sanych_dv »

Имеется в виду позиционирование объектов по сетке, к примеру:

Код: Выделить всё

 private var _loc:Object = {};//... for (var i:int = 0; i < 9; i++){_loc["mc" + i] = new MovieClip;_loc["mc" + i].i = i; // задаем идентификацию клипу_loc["mc" + i].x = _loc["mc" + i].width * ( i % 3 );_loc["mc" + i].y = _loc["mc" + i].height * Math.floor( i / 3 );_loc["mc" + i].addEventListener(MouseEvent.CLICK , onClick);  addChild(_loc["mc" + i]);} private function onClick (e:MouseEvent): void {trace(e.currentTarget.i) // активный клип// при необходимости удаляем слушатель с клипа:// e.currentTarget.removeEventListener(e.type, arguments.callee);}  
Ваш код можно сократить раз в 10.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Criss-Cross или научите быть не быдло кодером

Сообщение sanych_dv »

Casperovskii
2 цикла тоже излишни )
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Re: Criss-Cross или научите быть не быдло кодером

Сообщение Lampy »

спасибо большое Саныч)
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Criss-Cross или научите быть не быдло кодером

Сообщение Casperovskii »

sanych_dv
Через них удобнее двумерный массив задать. Хотя div (или mod, все время путаю) помогут и одним обойтись.
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Re: Criss-Cross или научите быть не быдло кодером

Сообщение Lampy »

чета не получилось добавить в цикл функции) но завтра выложу "без багов" чуть другой вариант) Интересует вопрос, на сколько большое имет значение упрощение кода? и на что именно влияет? на скорость работы приложения?
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Criss-Cross или научите быть не быдло кодером

Сообщение Casperovskii »

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

О! Гвоздь торчит, где тут мой микроскоп...

Так, прибил, снова к делу: простой и оптимизированный код - то, к чему стоит стремиться. В моем приложении, где элементов то совсем мало, уже где-то 600строк кода. Если б я кодил длинно и непонятно, я бы уже бросил нафиг и шифтделит нажал. Значение гигантское, поверь. Если хочешь делать что-то грандиозное, будь проще.
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Re: Criss-Cross или научите быть не быдло кодером

Сообщение Lampy »

Ну до грандиозного я думаю еще годы и годы, но хотелось бы рассмотреть на примере :

1.

Код: Выделить всё

                         addChild(addGrille); // Добавляю ячейки решетки в список отображений            addChild(addGrille1);            addChild(addGrille2);            addChild(addGrille3);            addChild(addGrille4);            addChild(addGrille5);            addChild(addGrille6);            addChild(addGrille7);            addChild(addGrille8);

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

2.

Код: Выделить всё

ChoiseX.addEventListener(MouseEvent.CLICK, ChoiseCriss);
Это тоже понятно, добавляем так называемую "кнопку" крестика, для выбора.

3. и тут начинаются проблемы

Код: Выделить всё

private function ChoiseCriss (e:MouseEvent) : void { // Функция при выборе которой ячейкам добавляется событие на клик мышки, которое отображает крестик                        addGrille.addEventListener(MouseEvent.CLICK , VisibleCriss);            addGrille1.addEventListener(MouseEvent.CLICK , VisibleCriss1);            addGrille2.addEventListener(MouseEvent.CLICK , VisibleCriss2);            addGrille3.addEventListener(MouseEvent.CLICK , VisibleCriss3);            addGrille4.addEventListener(MouseEvent.CLICK , VisibleCriss4);            addGrille5.addEventListener(MouseEvent.CLICK , VisibleCriss5);            addGrille6.addEventListener(MouseEvent.CLICK , VisibleCriss6);            addGrille7.addEventListener(MouseEvent.CLICK , VisibleCriss7);            addGrille8.addEventListener(MouseEvent.CLICK , VisibleCriss8);            }
Тут тоже вроде все понятно, добавил возможность при выборе крестика, добавить на событие клика мышки еще 9 функций, где последует еще 9 removeEventListener на 9 ячеек. Как я правильно понял, вы предлагаете для улучшения кода это сделать в цикле, как еще не разобрался, прочитал у Мука о массивах, там нет данных примеров и близко, и как я понял нельзя допустим как в as2 динамически задать 9 переменных .
Ответить