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

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.

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

Сообщение Lampy » 21 ноя 2012, 14:26

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

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

  1. package CrissCross
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.events.Event;
  5.     import flash.events.MouseEvent;
  6.     import flash.text.TextField;
  7.    
  8.     /**
  9.      * ...
  10.      * @author Lampy
  11.      */
  12.     public class Main extends Sprite
  13.     {
  14.        
  15.         private var Criss1:NewCriss; // Добавляю экземпляр класса "крестик" без параметров, параметры указываются внутри функций
  16.        
  17.         private var Circle1:Cirlce;  // Добавляю экземпляр класса "крестик" без параметров, параметры указываются внутри функций
  18.        
  19.         private var TextWin:TextField = new TextField();// добавляю экземпляр класса  для вывода текса "вы победили"
  20.        
  21.         private var WinInit:uint = 1; // Добавляю 18 переменых, чтобы отслеживать  выигрышные условия
  22.         private var WinInit1:uint = 1;
  23.         private var WinInit2:uint = 1;
  24.         private var WinInit3:uint = 1;
  25.         private var WinInit4:uint = 1;
  26.         private var WinInit5:uint = 1;
  27.         private var WinInit6:uint = 1;
  28.         private var WinInit7:uint = 1;
  29.         private var WinInit8:uint = 1;
  30.        
  31.         private var WinInit10:uint = 1;
  32.         private var WinInit11:uint = 1;
  33.         private var WinInit12:uint = 1;
  34.         private var WinInit13:uint = 1;
  35.         private var WinInit14:uint = 1;
  36.         private var WinInit15:uint = 1;
  37.         private var WinInit16:uint = 1;
  38.         private var WinInit17:uint = 1;
  39.         private var WinInit18:uint = 1;
  40.        
  41.         private var addGrille:Grille = new Grille(100,100); // Добавление решетки
  42.         private var addGrille1:Grille = new Grille(150,100);
  43.         private var addGrille2:Grille = new Grille(200,100);
  44.         private var addGrille3:Grille = new Grille(100,150);
  45.         private var addGrille4:Grille = new Grille(150,150);
  46.         private var addGrille5:Grille = new Grille(200,150);
  47.         private var addGrille6:Grille = new Grille(100,200);
  48.         private var addGrille7:Grille = new Grille(150,200);
  49.         private var addGrille8:Grille = new Grille(200, 200);
  50.        
  51.         private var ChoiseX:Grille = new Grille(400, 50); // Добавление 2ух кнопок, для выбора крестика или нолика
  52.         private var ChoiseO:Grille = new Grille(450, 50);
  53.        
  54.         public function Main():void
  55.         {
  56.            
  57.             Criss1 = new NewCriss (410, 60); // добавляю в кнопку крестик и нолик
  58.             addChild(Criss1);
  59.             Circle1 = new Cirlce (475, 75)
  60.             addChild(Circle1);
  61.            
  62.             ChoiseX.addEventListener(MouseEvent.CLICK, ChoiseCriss);        // Добавляю события на кнопки крестика и нолика   
  63.             ChoiseO.addEventListener(MouseEvent.CLICK , ChoiseCross);
  64.             addChild(ChoiseX); // Добавляю в список отображения  кнопки
  65.             addChild(ChoiseO);
  66.            
  67.             addChild(addGrille); // Добавляю ячейки решетки в список отображений
  68.             addChild(addGrille1);
  69.             addChild(addGrille2);
  70.             addChild(addGrille3);
  71.             addChild(addGrille4);
  72.             addChild(addGrille5);
  73.             addChild(addGrille6);
  74.             addChild(addGrille7);
  75.             addChild(addGrille8);
  76.            
  77.            
  78.        
  79.            
  80.            
  81.            
  82.             addEventListener(MouseEvent.CLICK, Winfunc); // Добавляю событие на клик мышки при котором запускается функция  отслеживания выигрышного результата
  83.             addEventListener(MouseEvent.CLICK, Winfunc1);
  84.        
  85.            
  86.         }
  87.        
  88.         private function ChoiseCross (e:MouseEvent):void {  // Функция при выборе которой яцейкам добавляется событие на клик мышки, которое отображает нолик
  89.             addGrille.addEventListener(MouseEvent.CLICK , VisibleCross1);
  90.             addGrille1.addEventListener(MouseEvent.CLICK , VisibleCross2);
  91.             addGrille2.addEventListener(MouseEvent.CLICK , VisibleCross3);
  92.             addGrille3.addEventListener(MouseEvent.CLICK , VisibleCross4);
  93.             addGrille4.addEventListener(MouseEvent.CLICK , VisibleCross5);
  94.             addGrille5.addEventListener(MouseEvent.CLICK , VisibleCross6);
  95.             addGrille6.addEventListener(MouseEvent.CLICK , VisibleCross7);
  96.             addGrille7.addEventListener(MouseEvent.CLICK , VisibleCross8);
  97.             addGrille8.addEventListener(MouseEvent.CLICK , VisibleCross9);
  98.            
  99.            
  100.             }
  101.        
  102.         private function ChoiseCriss (e:MouseEvent) : void { // Функция при выборе которой яцейкам добавляется событие на клик мышки, которое отображает крестик
  103.            
  104.             addGrille.addEventListener(MouseEvent.CLICK , VisibleCriss);
  105.             addGrille1.addEventListener(MouseEvent.CLICK , VisibleCriss1);
  106.             addGrille2.addEventListener(MouseEvent.CLICK , VisibleCriss2);
  107.             addGrille3.addEventListener(MouseEvent.CLICK , VisibleCriss3);
  108.             addGrille4.addEventListener(MouseEvent.CLICK , VisibleCriss4);
  109.             addGrille5.addEventListener(MouseEvent.CLICK , VisibleCriss5);
  110.             addGrille6.addEventListener(MouseEvent.CLICK , VisibleCriss6);
  111.             addGrille7.addEventListener(MouseEvent.CLICK , VisibleCriss7);
  112.             addGrille8.addEventListener(MouseEvent.CLICK , VisibleCriss8);
  113.             }
  114.        
  115.         private function Winfunc (e:Event):void { // Функция, проверки  выигрышной ситуации
  116.             if (WinInit == 2 && WinInit1 == 2 && WinInit2 == 2 || WinInit == 2 && WinInit3 == 2 && WinInit6 == 2 ||
  117.             WinInit == 2 && WinInit4 == 2 && WinInit8 == 2 || WinInit1 == 2 && WinInit4 == 2 && WinInit7 == 2 ||
  118.             WinInit2 == 2 && WinInit4 == 2 && WinInit6 == 2 || WinInit2 == 2 && WinInit5 == 2 && WinInit8 == 2 || WinInit3
  119.              == 2 && WinInit4 == 2 && WinInit5 == 2 || WinInit6 == 2 && WinInit7 == 2 && WinInit8 == 2)
  120.             {
  121.             TextWin.text = "Крестики победили" // Задаю переменой TextWin  значение "You Win"
  122.             addChild(TextWin); // добавление в список отображений  чаилда текса
  123.             removeEventListener(MouseEvent.CLICK, Winfunc); // убераю событие на клик мыши
  124.             removeEventListener(MouseEvent.CLICK, Winfunc1);
  125.             ChoiseO.removeEventListener(MouseEvent.CLICK, ChoiseCross);
  126.             ChoiseX.removeEventListener(MouseEvent.CLICK, ChoiseCriss);
  127.            
  128.             }
  129.         }
  130.         private function Winfunc1 (e:Event):void { // Функция, проверки  выигрышной ситуации
  131.             if (WinInit10 == 2 && WinInit11 == 2 && WinInit12 == 2 || WinInit10 == 2 && WinInit13 == 2 && WinInit16 == 2 ||
  132.             WinInit10 == 2 && WinInit14 == 2 && WinInit18 == 2 || WinInit11 == 2 && WinInit14 == 2 && WinInit17 == 2 ||
  133.             WinInit12 == 2 && WinInit14 == 2 && WinInit16 == 2 || WinInit12 == 2 && WinInit15 == 2 && WinInit18 == 2 || WinInit13
  134.              == 2 && WinInit14 == 2 && WinInit15 == 2 || WinInit16 == 2 && WinInit17 == 2 && WinInit18 == 2)
  135.             {
  136.             TextWin.text = "Нолики победили" // Задаю переменой TextWin  значение "You Win"
  137.             addChild(TextWin); // добавление в список отображений  чаилда текса
  138.             removeEventListener(MouseEvent.CLICK, Winfunc1); // убераю событие на клик мыши
  139.             removeEventListener(MouseEvent.CLICK, Winfunc);
  140.             ChoiseO.removeEventListener(MouseEvent.CLICK, ChoiseCross);
  141.             ChoiseX.removeEventListener(MouseEvent.CLICK, ChoiseCriss);
  142.             }
  143.            
  144.             }
  145.         private function VisibleCross1 (e:MouseEvent): void { // девять функция, при которых, добавляется в ячейку нолик и дается переменой ВинИнит значение
  146.            
  147.             Circle1 = new Cirlce(120, 120);
  148.             addChild(Circle1);
  149.             WinInit10 += 1;
  150.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  151.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  152.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  153.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  154.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  155.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  156.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  157.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);
  158.                 }
  159.         private function VisibleCross2 (e:MouseEvent): void {
  160.             Circle1 = new Cirlce(170, 120);
  161.             addChild(Circle1);
  162.             WinInit11 += 1;
  163.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1); // убираем с других  ячеек слушателя событий
  164.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  165.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  166.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  167.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  168.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  169.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  170.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);
  171.                
  172.                 }
  173.         private function VisibleCross3 (e:MouseEvent): void {
  174.             Circle1 = new Cirlce(220, 120);
  175.             addChild(Circle1);
  176.             WinInit12 += 1;
  177.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  178.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);
  179.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  180.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  181.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  182.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  183.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  184.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);
  185.                
  186.                 }
  187.         private function VisibleCross4 (e:MouseEvent): void {
  188.             Circle1 = new Cirlce(120, 170);
  189.             addChild(Circle1);
  190.             WinInit13 += 1;
  191.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  192.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  193.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);
  194.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  195.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  196.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  197.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  198.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);
  199.                
  200.                 }
  201.         private function VisibleCross5 (e:MouseEvent): void {
  202.             Circle1 = new Cirlce(170, 170);
  203.             addChild(Circle1);
  204.             WinInit14 += 1;
  205.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  206.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  207.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  208.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);
  209.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  210.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  211.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  212.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);
  213.                
  214.                 }
  215.         private function VisibleCross6 (e:MouseEvent): void {
  216.             Circle1 = new Cirlce(220, 170);
  217.             addChild(Circle1);
  218.             WinInit15 += 1;
  219.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  220.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  221.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  222.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  223.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);
  224.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  225.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  226.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);
  227.                
  228.                 }
  229.         private function VisibleCross7 (e:MouseEvent): void {
  230.             Circle1 = new Cirlce(120, 220);
  231.             addChild(Circle1);
  232.             WinInit16 += 1;
  233.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  234.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  235.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  236.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  237.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  238.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);
  239.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  240.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);               
  241.                 }
  242.         private function VisibleCross8 (e:MouseEvent): void {
  243.             Circle1 = new Cirlce(170, 220);
  244.             addChild(Circle1);
  245.             WinInit17 += 1;
  246.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  247.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  248.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  249.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  250.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  251.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  252.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);
  253.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCross9);
  254.                
  255.                 }
  256.         private function VisibleCross9 (e:MouseEvent): void {
  257.             Circle1 = new Cirlce(220, 220);
  258.             addChild(Circle1);
  259.             WinInit18 += 1;
  260.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCross2); // убираем с других  ячеек слушателя событий
  261.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCross3);
  262.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCross4);
  263.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCross5);
  264.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCross6);
  265.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCross7);
  266.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCross8);
  267.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCross1);
  268.                
  269.                 }
  270.        
  271.            
  272.            
  273.            
  274.         private function VisibleCriss (e:MouseEvent): void { // девять функция, при которых, добавляется в ячейку нолик и дается переменой ВинИнит значение
  275.             Criss1= new NewCriss ( 109, 108);
  276.             addChild(Criss1);
  277.             WinInit += 1;
  278.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  279.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  280.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  281.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  282.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  283.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  284.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  285.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  286.             }
  287.         private function VisibleCriss1 (e:MouseEvent): void {
  288.             Criss1= new NewCriss ( 159, 108);
  289.             addChild(Criss1);
  290.             WinInit1 += 1;
  291.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  292.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  293.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  294.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  295.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  296.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  297.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  298.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  299.             }
  300.         private function VisibleCriss2 (e:MouseEvent): void {
  301.             Criss1= new NewCriss ( 209, 108);
  302.             addChild(Criss1);
  303.             WinInit2 += 1;
  304.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  305.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  306.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  307.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  308.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  309.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  310.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  311.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  312.             }
  313.         private function VisibleCriss3 (e:MouseEvent): void {
  314.             Criss1= new NewCriss ( 109, 158);
  315.             addChild(Criss1);
  316.             WinInit3 += 1;
  317.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  318.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  319.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  320.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  321.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  322.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  323.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  324.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  325.             }
  326.         private function VisibleCriss4 (e:MouseEvent): void {
  327.             Criss1= new NewCriss ( 159, 158);
  328.             addChild(Criss1);
  329.             WinInit4 += 1;
  330.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  331.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  332.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  333.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  334.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  335.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  336.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  337.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  338.             }
  339.         private function VisibleCriss5 (e:MouseEvent): void {
  340.             Criss1= new NewCriss ( 209, 158);
  341.             addChild(Criss1);
  342.             WinInit5 += 1;
  343.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  344.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  345.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  346.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  347.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  348.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  349.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  350.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  351.             }
  352.         private function VisibleCriss6 (e:MouseEvent): void {
  353.             Criss1= new NewCriss ( 109, 208);
  354.             addChild(Criss1);
  355.             WinInit6 += 1;
  356.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  357.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  358.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  359.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  360.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  361.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  362.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  363.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  364.             }
  365.         private function VisibleCriss7 (e:MouseEvent): void {
  366.             Criss1= new NewCriss ( 159, 208);
  367.             addChild(Criss1);
  368.             WinInit7 += 1;
  369.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  370.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  371.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  372.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  373.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  374.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  375.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  376.             addGrille8.removeEventListener(MouseEvent.CLICK, VisibleCriss8);
  377.             }
  378.         private function VisibleCriss8 (e:MouseEvent): void {
  379.             Criss1= new NewCriss ( 209, 208);
  380.             addChild(Criss1);
  381.             WinInit8 += 1;
  382.             addGrille1.removeEventListener(MouseEvent.CLICK, VisibleCriss1);
  383.             addGrille2.removeEventListener(MouseEvent.CLICK, VisibleCriss2);
  384.             addGrille3.removeEventListener(MouseEvent.CLICK, VisibleCriss3);
  385.             addGrille4.removeEventListener(MouseEvent.CLICK, VisibleCriss4);
  386.             addGrille5.removeEventListener(MouseEvent.CLICK, VisibleCriss5);
  387.             addGrille6.removeEventListener(MouseEvent.CLICK, VisibleCriss6);
  388.             addGrille7.removeEventListener(MouseEvent.CLICK, VisibleCriss7);
  389.             addGrille.removeEventListener(MouseEvent.CLICK, VisibleCriss);
  390.             }
  391.     }
  392.    
  393. }



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

  1. package CrissCross
  2. {
  3.     import flash.display.Sprite;
  4.    
  5.     /**
  6.      * ...
  7.      * @author Lampy
  8.      */
  9.     public class Grille extends Sprite
  10.     {
  11.        
  12.         public function Grille(_xposition:uint, _yposition:uint)
  13.         {
  14.         graphics.lineStyle(2,0);
  15.         graphics.beginFill(4, 0.2);
  16.         graphics.drawRect(_xposition, _yposition, 50, 50);
  17.        
  18.        
  19.         }
  20.        
  21.     }
  22.  
  23. }


Класс, рисующий крестик
  1. package CrissCross
  2. {
  3.     import flash.display.Sprite;
  4.    
  5.     /**
  6.      * ...
  7.      * @author Lampy
  8.      */
  9.     public class Criss extends Sprite
  10.     {
  11.        
  12.         public function Criss()
  13.         {
  14.         graphics.lineStyle(3, 0 );
  15.         graphics.beginFill(2,0);
  16.         graphics.moveTo (0, 0);
  17.         graphics.lineTo(30, 30);
  18.         graphics.moveTo(30, 0);
  19.         graphics.lineTo(0, 30);
  20.    
  21.         }
  22.        
  23.     }
  24.  
  25. }


Класс который принимает 2 параметра крестика x, y
  1. package CrissCross
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.events.MouseEvent;
  5.     import flash.events.Event;
  6.     import flash.display.MovieClip;
  7.    
  8.     /**
  9.      * ...
  10.      * @author Lampy
  11.      */
  12.     public class NewCriss extends Sprite
  13.     {
  14.         private var CrissAdded:Criss = new Criss;
  15.         public function NewCriss(_xposition:uint, _yposition:uint )
  16.         {
  17.         CrissAdded.x = _xposition;
  18.         CrissAdded.y = _yposition;
  19.        
  20.         addChild(CrissAdded);
  21.            
  22.         }
  23.        
  24.     }
  25.  
  26. }


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

  1. package CrissCross
  2. {
  3.     import flash.display.Sprite;
  4.    
  5.     /**
  6.      * ...
  7.      * @author Lampy
  8.      */
  9.     public class Cirlce extends Sprite
  10.     {
  11.        
  12.         public function Cirlce(_xposition:uint,_yposition:uint)
  13.         {
  14.         graphics.lineStyle (2 , 0);
  15.         graphics.beginFill(2, 0);
  16.         graphics.drawCircle(_xposition , _yposition, 15);
  17.         }
  18.        
  19.     }
  20.  
  21. }



И само приложение, уже работающее в контакте
http://vk.com/app3121296_9962397?ref=1
Lampy

 
Автор темы
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение Casperovskii » 21 ноя 2012, 22:42

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

За это сообщение автора Casperovskii поблагодарил:
Lampy
Casperovskii

 
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50
Благодарил (а): 11 раз.
Поблагодарили: 43 раз.

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

Сообщение Lampy » 21 ноя 2012, 23:36

Спасибо за ответ, нужно еще будет недельку почитать =) Баг видел, уберу. А вот по поводу 3го замечания не совсем понял, точнее первую часть
Lampy

 
Автор темы
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

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

Сообщение sanych_dv » 22 ноя 2012, 00:28

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

  1.  
  2. private var _loc:Object = {};
  3. //...
  4.  
  5. for (var i:int = 0; i < 9; i++)
  6. {
  7. _loc["mc" + i] = new MovieClip;
  8. _loc["mc" + i].i = i; // задаем идентификацию клипу
  9. _loc["mc" + i].x = _loc["mc" + i].width * ( i % 3 );
  10. _loc["mc" + i].y = _loc["mc" + i].height * Math.floor( i / 3 );
  11. _loc["mc" + i].addEventListener(MouseEvent.CLICK , onClick);
  12.   addChild(_loc["mc" + i]);
  13. }
  14.  
  15. private function onClick (e:MouseEvent): void {
  16. trace(e.currentTarget.i) // активный клип
  17. // при необходимости удаляем слушатель с клипа:
  18. // e.currentTarget.removeEventListener(e.type, arguments.callee);
  19. }
  20.  
  21.  


Ваш код можно сократить раз в 10.

За это сообщение автора sanych_dv поблагодарил:
Lampy
sanych_dv
Разработчик
Разработчик
 
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52
Благодарил (а): 1 раз.
Поблагодарили: 77 раз.

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

Сообщение sanych_dv » 22 ноя 2012, 00:44

Casperovskii
2 цикла тоже излишни )
sanych_dv
Разработчик
Разработчик
 
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52
Благодарил (а): 1 раз.
Поблагодарили: 77 раз.

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

Сообщение Lampy » 22 ноя 2012, 01:11

спасибо большое Саныч)
Lampy

 
Автор темы
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

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

Сообщение Casperovskii » 22 ноя 2012, 09:49

sanych_dv
Через них удобнее двумерный массив задать. Хотя div (или mod, все время путаю) помогут и одним обойтись.
Casperovskii

 
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50
Благодарил (а): 11 раз.
Поблагодарили: 43 раз.

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

Сообщение Lampy » 26 ноя 2012, 22:09

чета не получилось добавить в цикл функции) но завтра выложу "без багов" чуть другой вариант) Интересует вопрос, на сколько большое имет значение упрощение кода? и на что именно влияет? на скорость работы приложения?
Lampy

 
Автор темы
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

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

Сообщение Casperovskii » 26 ноя 2012, 22:36

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

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

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

За это сообщение автора Casperovskii поблагодарил:
Lampy
Casperovskii

 
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50
Благодарил (а): 11 раз.
Поблагодарили: 43 раз.

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

Сообщение Lampy » 26 ноя 2012, 23:27

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

1.
  1.  
  2.                         addChild(addGrille); // Добавляю ячейки решетки в список отображений
  3.             addChild(addGrille1);
  4.             addChild(addGrille2);
  5.             addChild(addGrille3);
  6.             addChild(addGrille4);
  7.             addChild(addGrille5);
  8.             addChild(addGrille6);
  9.             addChild(addGrille7);
  10.             addChild(addGrille8);


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

2.

  1. ChoiseX.addEventListener(MouseEvent.CLICK, ChoiseCriss);


Это тоже понятно, добавляем так называемую "кнопку" крестика, для выбора.

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

  1. private function ChoiseCriss (e:MouseEvent) : void { // Функция при выборе которой ячейкам добавляется событие на клик мышки, которое отображает крестик
  2.            
  3.             addGrille.addEventListener(MouseEvent.CLICK , VisibleCriss);
  4.             addGrille1.addEventListener(MouseEvent.CLICK , VisibleCriss1);
  5.             addGrille2.addEventListener(MouseEvent.CLICK , VisibleCriss2);
  6.             addGrille3.addEventListener(MouseEvent.CLICK , VisibleCriss3);
  7.             addGrille4.addEventListener(MouseEvent.CLICK , VisibleCriss4);
  8.             addGrille5.addEventListener(MouseEvent.CLICK , VisibleCriss5);
  9.             addGrille6.addEventListener(MouseEvent.CLICK , VisibleCriss6);
  10.             addGrille7.addEventListener(MouseEvent.CLICK , VisibleCriss7);
  11.             addGrille8.addEventListener(MouseEvent.CLICK , VisibleCriss8);
  12.             }


Тут тоже вроде все понятно, добавил возможность при выборе крестика, добавить на событие клика мышки еще 9 функций, где последует еще 9 removeEventListener на 9 ячеек. Как я правильно понял, вы предлагаете для улучшения кода это сделать в цикле, как еще не разобрался, прочитал у Мука о массивах, там нет данных примеров и близко, и как я понял нельзя допустим как в as2 динамически задать 9 переменных .
Lampy

 
Автор темы
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

След.

Вернуться в Программирование на Flash



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron