Собственно 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); } } }
Код: Выделить всё
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