package { //import built in Flash classes import flash.display.MovieClip; import flash.events.MouseEvent; import flash.utils.Timer; import flash.events.TimerEvent; import flash.text.*; import fl.transitions.easing.*; import flash.geom.ColorTransform; import flash.filters.BitmapFilterQuality; import flash.filters.GlowFilter; import flash.media.Sound; import flash.events.Event; import fl.transitions.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.URLRequestMethod; //import made classes import Board; import Card; import CardType01; import CardType02; import CardType03; import CardType04; import CardType05; import CardType06; import CardType07; import CardType08; import CardType09; import CardType10; import CardType11; import CardType12; import CardType13; import CardType14; import CardType15; import CardType16; import CardType17; import CardType18; import CardType19; import CardType20; import CustomMatchMenu; import MainMenu; import Multiplier; import ScoreBoxP1; import ScoreBoxP2; import ScoreBoxP3; import ScoreBoxP4; import SinglePlayerVSMenu; import TimeAttackMenu; import DynTimer; import TypeCover; import DifCover; import DisplayHighScores; import EnterHighScore; import GameOver; import GameOverTime; import DirectionsMenu; import MainMenuBtnSm; public class Memory extends MovieClip { // variables private var _card:Card; private var _mainMenu:MainMenu; private var _customMatchMenu:CustomMatchMenu; private var _singlePlayerVSMenu:SinglePlayerVSMenu; private var _timeAttackMenu:TimeAttackMenu; private var _directionsMenu:DirectionsMenu; private var _board:Board; private var _cardX:Number; private var _cardY:Number; private var _firstCard:*; private var _secondCard:*; private var _totalMatches:Number = 20; private var _currentMatches:Number; private var _flipTimer = new Timer(2800, 0); private var _gameType:Number; // 1 = Time Attack, 2 = Single Player VS, 3 = Custom Match private var _curPlayer:Number = 0; private var _dynTimer:DynTimer; private var _timeAttackTimer:Timer //= new Timer(1000, 0); private var _timeAttackSeconds:Number = 0; private var _multiplier:Multiplier; private var _multi:Number; private var _numPlayers:Number; private var _playerTypes:Array = new Array(0, 0, 0, 0); // 0 = None, 1 = Hum, 2 = Cpu private var _playerDiff:Array = new Array(0, 0, 0, 0); // 0 = None, 1 = Easy, 2 = Normal, 3 = Hard, 4 = Impossible private var _playerScores:Array = new Array(0, 0, 0, 0); private var _scoreToAdd:Number; private var _playerAddScore:Number; private var _scoreAddTimer:Timer; //= new Timer(100, 0); private var _scoreBoxP1:ScoreBoxP1; private var _scoreBoxP2:ScoreBoxP2; private var _scoreBoxP3:ScoreBoxP3; private var _scoreBoxP4:ScoreBoxP4; private var _cpuTurnTimer:Timer; private var _cpuSendCardTimer:Timer; private var _die:Number; private var _diffTarget:Array = new Array(0, -1, 1, 3, 9) //Sets difficulty targets private var _diffTargetTurn:Array = new Array(0, 0, 2, 4, 9) //Sets difficulty targets for that players turn private var _player1Mem:Array = new Array(); private var _player2Mem:Array = new Array(); private var _player3Mem:Array = new Array(); private var _player4Mem:Array = new Array(); private var _currentPlayer:Number; private var _gameEnd:Boolean = false; public var _num:Number = 0; public var _cards:Array; private var _matchedCards:Array = new Array(); private var _cardFilpEnabled:Boolean = false; private var _glow:GlowFilter = new GlowFilter(); private var _cpuPickedCard1:Boolean; private var _cpuPickedCard2:Boolean; private var _cpuPickedCardNum1:Number; private var _cpuPickedCardNum2:Number; private var _sendFirstCardTimer:Timer; private var _sendSecondCardTimer:Timer; private var _card2Send:*; private var _humSend2ndCardTimer:Timer;// = new Timer(1800, 0); private var _noneP2Cover:TypeCover; private var _noneP3Cover:TypeCover; private var _noneP4Cover:TypeCover; private var _humP2Cover:TypeCover; private var _humP3Cover:TypeCover; private var _humP4Cover:TypeCover; private var _cpuP2Cover:TypeCover; private var _cpuP3Cover:TypeCover; private var _cpuP4Cover:TypeCover; private var _easyP1Cover:DifCover; private var _easyP2Cover:DifCover; private var _easyP3Cover:DifCover; private var _easyP4Cover:DifCover; private var _mediumP1Cover:DifCover; private var _mediumP2Cover:DifCover; private var _mediumP3Cover:DifCover; private var _mediumP4Cover:DifCover; private var _hardP1Cover:DifCover; private var _hardP2Cover:DifCover; private var _hardP3Cover:DifCover; private var _hardP4Cover:DifCover; private var _impossibleP1Cover:DifCover; private var _impossibleP2Cover:DifCover; private var _impossibleP3Cover:DifCover; private var _impossibleP4Cover:DifCover; private var _typeCoversP2:Boolean; private var _typeCoversP3:Boolean; private var _typeCoversP4:Boolean; private var _difCoversP1:Boolean; private var _difCoversP2:Boolean; private var _difCoversP3:Boolean; private var _difCoversP4:Boolean; private var _displayHighScores:DisplayHighScores; private var _gameOver:GameOver; private var _gameOverTime:GameOverTime; private var music:Sound = new Sound(new URLRequest("music.mp3")); private var _scrollUpTimer:Timer; private var _scrollDownTimer:Timer; private var _directions:TextField; private var _mainMenuBtnSm:MainMenuBtnSm; private var _enterHighScore:EnterHighScore; //cards private var _cardType01:CardType01; private var _cardType02:CardType02; private var _cardType03:CardType03; private var _cardType04:CardType04; private var _cardType05:CardType05; private var _cardType06:CardType06; private var _cardType07:CardType07; private var _cardType08:CardType08; private var _cardType09:CardType09; private var _cardType10:CardType10; private var _cardType11:CardType11; private var _cardType12:CardType12; private var _cardType13:CardType13; private var _cardType14:CardType14; private var _cardType15:CardType15; private var _cardType16:CardType16; private var _cardType17:CardType17; private var _cardType18:CardType18; private var _cardType19:CardType19; private var _cardType20:CardType20; public function Memory() { displayMainMenu(); music.play(0, 100); } //################################################## //###### Functions to load Menus ################### //################################################## //display main menu private function displayMainMenu() { // Setups and Displays Main Menu _mainMenu = new MainMenu(); addChild(_mainMenu); _mainMenu.x = 375; _mainMenu.y = 272.8; // Adds eventlisteners to MainMenu's Buttons _mainMenu.timeAttack_btn.addEventListener(MouseEvent.CLICK, displayTimeAttackMenu); _mainMenu.singlePlayerVS_btn.addEventListener(MouseEvent.CLICK, displaySinglePlayerVSMenu); _mainMenu.customMatch_btn.addEventListener(MouseEvent.CLICK, displayCustomMatchMenu); //_mainMenu.leaderBoards_btn.addEventListener(MouseEvent.CLICK, dsiplayLeaderBoardsMenu); _mainMenu.directions_btn.addEventListener(MouseEvent.CLICK, displayDirectionsMenu); } // Displays Time Attack Menu private function displayTimeAttackMenu(event:MouseEvent):void { //setup The Time attack Menu removeChild(_mainMenu); _timeAttackMenu = new TimeAttackMenu; _timeAttackMenu.x = 395.5; _timeAttackMenu.y = 150.1; addChild(_timeAttackMenu); //add event listeners to buttons _timeAttackMenu.start_btn.addEventListener(MouseEvent.CLICK, setupTimeAttack); _mainMenuBtnSm = new MainMenuBtnSm(); _mainMenuBtnSm.x = 59; _mainMenuBtnSm.y = 19.4; _mainMenuBtnSm.name = 'timeAttack'; addChild(_mainMenuBtnSm); _mainMenuBtnSm.addEventListener(MouseEvent.CLICK, backToMainMenu); } // displays Single Player VS Menu private function displaySinglePlayerVSMenu(event:MouseEvent):void { //setup The Single Player VS Menu removeChild(_mainMenu); _singlePlayerVSMenu = new SinglePlayerVSMenu; _singlePlayerVSMenu.x = 402.0; _singlePlayerVSMenu.y = 247.1; addChild(_singlePlayerVSMenu); //add event listeners to buttons _singlePlayerVSMenu.numPlayersBox2.addEventListener(MouseEvent.CLICK, setPlayersVS); _singlePlayerVSMenu.numPlayersBox2.buttonMode = true; _singlePlayerVSMenu.numPlayersBox4.addEventListener(MouseEvent.CLICK, setPlayersVS); _singlePlayerVSMenu.numPlayersBox4.buttonMode = true; _singlePlayerVSMenu.difEasy.addEventListener(MouseEvent.CLICK, setDifVS); _singlePlayerVSMenu.difEasy.buttonMode = true; _singlePlayerVSMenu.difMedium.addEventListener(MouseEvent.CLICK, setDifVS); _singlePlayerVSMenu.difMedium.buttonMode = true; _singlePlayerVSMenu.difHard.addEventListener(MouseEvent.CLICK, setDifVS); _singlePlayerVSMenu.difHard.buttonMode = true; _singlePlayerVSMenu.difImpossible.addEventListener(MouseEvent.CLICK, setDifVS); _singlePlayerVSMenu.difImpossible.buttonMode = true; _mainMenuBtnSm = new MainMenuBtnSm(); _mainMenuBtnSm.x = 59; _mainMenuBtnSm.y = 19.4; _mainMenuBtnSm.name = 'singlePlayerVS'; addChild(_mainMenuBtnSm); _mainMenuBtnSm.addEventListener(MouseEvent.CLICK, backToMainMenu); } // displays Custom Match Menu private function displayCustomMatchMenu(event:MouseEvent):void { //setup The Custom Match Menu removeChild(_mainMenu); _customMatchMenu = new CustomMatchMenu; _customMatchMenu.x = 375; _customMatchMenu.y = 269.1; addChild(_customMatchMenu); _mainMenuBtnSm = new MainMenuBtnSm(); _mainMenuBtnSm.x = 59; _mainMenuBtnSm.y = 19.4; _mainMenuBtnSm.name = 'customMatch'; addChild(_mainMenuBtnSm); _mainMenuBtnSm.addEventListener(MouseEvent.CLICK, backToMainMenu); _numPlayers = 0; //add event listeners to buttons _customMatchMenu.typeNoneP1.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeNoneP1.buttonMode = true; _customMatchMenu.typeHumP1.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeHumP1.buttonMode = true; _customMatchMenu.typeCpuP1.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeCpuP1.buttonMode = true; _customMatchMenu.typeNoneP2.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeNoneP2.buttonMode = true; _customMatchMenu.typeHumP2.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeHumP2.buttonMode = true; _customMatchMenu.typeCpuP2.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeCpuP2.buttonMode = true; _customMatchMenu.typeNoneP3.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeNoneP3.buttonMode = true; _customMatchMenu.typeHumP3.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeHumP3.buttonMode = true; _customMatchMenu.typeCpuP3.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeCpuP3.buttonMode = true; _customMatchMenu.typeNoneP4.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeNoneP4.buttonMode = true; _customMatchMenu.typeHumP4.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeHumP4.buttonMode = true; _customMatchMenu.typeCpuP4.addEventListener(MouseEvent.CLICK, setTypeCus); _customMatchMenu.typeCpuP4.buttonMode = true; _noneP2Cover = new TypeCover(); _noneP2Cover.alpha = .75; _noneP2Cover.x = -161.9; _noneP2Cover.y = 16.3; _customMatchMenu.addChild(_noneP2Cover); _noneP3Cover = new TypeCover(); _noneP3Cover.alpha = .75; _noneP3Cover.x = -161.9; _noneP3Cover.y = 87.5; _customMatchMenu.addChild(_noneP3Cover); _noneP4Cover = new TypeCover(); _noneP4Cover.alpha = .75; _noneP4Cover.x = -161.9; _noneP4Cover.y = 155.3; _customMatchMenu.addChild(_noneP4Cover); _humP2Cover = new TypeCover(); _humP2Cover.alpha = .75; _humP2Cover.x = -100.7; _humP2Cover.y = 16.3; _customMatchMenu.addChild(_humP2Cover); _humP3Cover = new TypeCover(); _humP3Cover.alpha = .75; _humP3Cover.x = -100.7; _humP3Cover.y = 87.5; _customMatchMenu.addChild(_humP3Cover); _humP4Cover = new TypeCover(); _humP4Cover.alpha = .75; _humP4Cover.x = -100.7; _humP4Cover.y = 155.3; _customMatchMenu.addChild(_humP4Cover); _cpuP2Cover = new TypeCover(); _cpuP2Cover.alpha = .75; _cpuP2Cover.x = -39.4; _cpuP2Cover.y = 16.3; _customMatchMenu.addChild(_cpuP2Cover); _cpuP3Cover = new TypeCover(); _cpuP3Cover.alpha = .75; _cpuP3Cover.x = -39.4; _cpuP3Cover.y = 87.5; _customMatchMenu.addChild(_cpuP3Cover); _cpuP4Cover = new TypeCover(); _cpuP4Cover.alpha = .75; _cpuP4Cover.x = -39.4; _cpuP4Cover.y = 155.3; _customMatchMenu.addChild(_cpuP4Cover); _typeCoversP2 = true; _typeCoversP3 = true; _typeCoversP4 = true; _customMatchMenu.difEasyP1.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difEasyP1.buttonMode = true; _customMatchMenu.difEasyP2.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difEasyP2.buttonMode = true; _customMatchMenu.difEasyP3.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difEasyP3.buttonMode = true; _customMatchMenu.difEasyP4.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difEasyP4.buttonMode = true; _customMatchMenu.difMediumP1.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difMediumP1.buttonMode = true; _customMatchMenu.difMediumP2.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difMediumP2.buttonMode = true; _customMatchMenu.difMediumP3.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difMediumP3.buttonMode = true; _customMatchMenu.difMediumP4.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difMediumP4.buttonMode = true; _customMatchMenu.difHardP1.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difHardP1.buttonMode = true; _customMatchMenu.difHardP2.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difHardP2.buttonMode = true; _customMatchMenu.difHardP3.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difHardP3.buttonMode = true; _customMatchMenu.difHardP4.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difHardP4.buttonMode = true; _customMatchMenu.difImpossibleP1.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difImpossibleP1.buttonMode = true; _customMatchMenu.difImpossibleP2.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difImpossibleP2.buttonMode = true; _customMatchMenu.difImpossibleP3.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difImpossibleP3.buttonMode = true; _customMatchMenu.difImpossibleP4.addEventListener(MouseEvent.CLICK, setDifCus); _customMatchMenu.difImpossibleP4.buttonMode = true; _easyP1Cover = new DifCover(); _easyP1Cover.alpha = .75; _easyP1Cover.x = 81.4; _easyP1Cover.y = -58.7; _customMatchMenu.addChild(_easyP1Cover); _easyP2Cover = new DifCover(); _easyP2Cover.alpha = .75; _easyP2Cover.x = 81.4; _easyP2Cover.y = 13.9; _customMatchMenu.addChild(_easyP2Cover); _easyP3Cover = new DifCover(); _easyP3Cover.alpha = .75; _easyP3Cover.x = 81.4; _easyP3Cover.y = 85.2; _customMatchMenu.addChild(_easyP3Cover); _easyP4Cover = new DifCover(); _easyP4Cover.alpha = .75; _easyP4Cover.x = 81.4; _easyP4Cover.y = 153.1; _customMatchMenu.addChild(_easyP4Cover); _mediumP1Cover = new DifCover(); _mediumP1Cover.alpha = .75; _mediumP1Cover.x = 180.4; _mediumP1Cover.y = -58.7; _customMatchMenu.addChild(_mediumP1Cover); _mediumP2Cover = new DifCover(); _mediumP2Cover.alpha = .75; _mediumP2Cover.x = 180.4; _mediumP2Cover.y = 13.9; _customMatchMenu.addChild(_mediumP2Cover); _mediumP3Cover = new DifCover(); _mediumP3Cover.alpha = .75; _mediumP3Cover.x = 180.4; _mediumP3Cover.y = 85.2; _customMatchMenu.addChild(_mediumP3Cover); _mediumP4Cover = new DifCover(); _mediumP4Cover.alpha = .75; _mediumP4Cover.x = 180.4; _mediumP4Cover.y = 153.1; _customMatchMenu.addChild(_mediumP4Cover); _hardP1Cover = new DifCover(); _hardP1Cover.alpha = .75; _hardP1Cover.x = 81.4; _hardP1Cover.y = -33.8; _customMatchMenu.addChild(_hardP1Cover); _hardP2Cover = new DifCover(); _hardP2Cover.alpha = .75; _hardP2Cover.x = 81.4; _hardP2Cover.y = 39.0; _customMatchMenu.addChild(_hardP2Cover); _hardP3Cover = new DifCover(); _hardP3Cover.alpha = .75; _hardP3Cover.x = 81.4; _hardP3Cover.y = 110.2; _customMatchMenu.addChild(_hardP3Cover); _hardP4Cover = new DifCover(); _hardP4Cover.alpha = .75; _hardP4Cover.x = 81.4; _hardP4Cover.y = 178.1; _customMatchMenu.addChild(_hardP4Cover); _impossibleP1Cover = new DifCover(); _impossibleP1Cover.alpha = .75; _impossibleP1Cover.x = 180.4; _impossibleP1Cover.y = -33.8; _customMatchMenu.addChild(_impossibleP1Cover); _impossibleP2Cover = new DifCover(); _impossibleP2Cover.alpha = .75; _impossibleP2Cover.x = 180.4; _impossibleP2Cover.y = 39.0; _customMatchMenu.addChild(_impossibleP2Cover); _impossibleP3Cover = new DifCover(); _impossibleP3Cover.alpha = .75; _impossibleP3Cover.x = 180.4; _impossibleP3Cover.y = 110.2; _customMatchMenu.addChild(_impossibleP3Cover); _impossibleP4Cover = new DifCover(); _impossibleP4Cover.alpha = .75; _impossibleP4Cover.x = 180.4; _impossibleP4Cover.y = 178.1; _customMatchMenu.addChild(_impossibleP4Cover); _difCoversP1 = true; _difCoversP2 = true; _difCoversP3 = true; _difCoversP4 = true; } //display Directions Menu private function displayDirectionsMenu(event:MouseEvent):void { //setup the menu removeChild(_mainMenu); _directionsMenu = new DirectionsMenu; _directionsMenu.x = 375; _directionsMenu.y = 269.1; addChild(_directionsMenu); _directions = new TextField(); _directions.wordWrap = true; _directions.multiline = true; _directions.embedFonts = true; _directions.htmlText = '

How to play:

The objective in Memory is to find all matching pairs of cards that are on the board and score the most points, or find all the matching cards in the shortest amount of time. When it is your turn, you click on two cards to see if they are a matching pair.

Time Attack:


Time Attack places you against the clock. The faster you match all the cards, the better you are.

Single Player VS:


This mode pits you against either 1 or 3 computer opponents to see who can get the most points. In Single Player VS, you are able to choose the difficulty setting of Easy, Medium, Hard, or, if you are up to a real challenge, Impossible.


Points are rewarded by matching a pair of cards. The point value of the paired cards is 100 times the multiplier. The multiplier doubles every time you make a matching pair. But watch out, when you choose a non-matching pair, your multiplier resets back to one and it is now the other player’s turn. When your score box glows blue, it is your turn.


The game ends when all matching pairs have been found, and the winner is the player with the most points.



Custom Match:

In Custom Match any combination of human and computer players, up to 4, can play. You can set each computer player to any difficulty level that you like. The rules of Custom Match are the same as the rules in Single Player VS.

'; _directions.width = 434; _directions.height = 342; _directions.x = -233.9; _directions.y = -138.8; _directionsMenu.addChild(_directions); _scrollUpTimer = new Timer(75, 0); _scrollDownTimer = new Timer(75, 0); _directionsMenu.scrollUp_btn.addEventListener(MouseEvent.MOUSE_OVER, startScrollUp); _directionsMenu.scrollDown_btn.addEventListener(MouseEvent.MOUSE_OVER, startScrollDown); _directionsMenu.scrollUp_btn.addEventListener(MouseEvent.MOUSE_OUT, stopScrollUp); _directionsMenu.scrollDown_btn.addEventListener(MouseEvent.MOUSE_OUT, stopScrollDown); _scrollUpTimer.addEventListener(TimerEvent.TIMER, scrollUp); _scrollDownTimer.addEventListener(TimerEvent.TIMER, scrollDown); _mainMenuBtnSm = new MainMenuBtnSm(); _mainMenuBtnSm.x = 59; _mainMenuBtnSm.y = 19.4; _mainMenuBtnSm.name = 'directions'; addChild(_mainMenuBtnSm); _mainMenuBtnSm.addEventListener(MouseEvent.CLICK, backToMainMenu); } private function scrollUp(event:TimerEvent):void { _directions.scrollV --; } private function scrollDown(event:TimerEvent):void { _directions.scrollV ++; } private function startScrollUp(event:MouseEvent):void { _scrollUpTimer.start(); } private function startScrollDown(event:MouseEvent):void { _scrollDownTimer.start(); } private function stopScrollUp(event:MouseEvent):void { _scrollUpTimer.stop(); } private function stopScrollDown(event:MouseEvent):void { _scrollDownTimer.stop(); } //sends user back to main menu private function backToMainMenu(event:MouseEvent):void { if(event.currentTarget.name == 'timeAttack') { removeChild(_timeAttackMenu); } if(event.currentTarget.name == 'singlePlayerVS') { removeChild(_singlePlayerVSMenu); } if(event.currentTarget.name == 'customMatch') { removeChild(_customMatchMenu); }if(event.currentTarget.name == 'directions') { removeChild(_directionsMenu); } _timeAttackSeconds = 0; _numPlayers = 0; for(var o:Number = 0; o < _playerDiff.length; o++) { _playerTypes[o] = 0; } for(var p:Number = 0; p < _playerDiff.length; p++) { _playerDiff[p] = 0; } for(var a:Number = 0; a < _playerScores.length; a++) { _playerScores[a] = 0; } removeChild(_mainMenuBtnSm); displayMainMenu(); } //################################################## //###### Functions to Setup Games ################## //################################################## //Sets up Time Attack private function setupTimeAttack(event:MouseEvent):void { removeChild(_mainMenuBtnSm); _gameType = 1; removeChild(_timeAttackMenu); createBoard(); } //Sets up Single Player VS private function setupSinglePlayerVS(event:MouseEvent):void { _gameType = 2; removeChild(_mainMenuBtnSm); removeChild(_singlePlayerVSMenu); createBoard(); } private function setPlayersVS(event:MouseEvent):void { var buttonPressed:String = String(event.currentTarget); var colorPlayersBox2:ColorTransform = _singlePlayerVSMenu.numPlayersBox2.transform.colorTransform; var colorPlayersBox4:ColorTransform = _singlePlayerVSMenu.numPlayersBox4.transform.colorTransform; if (buttonPressed == String(_singlePlayerVSMenu.numPlayersBox2)) { _numPlayers = 2; _playerTypes[0] = 1; _playerTypes[1] = 2; _playerTypes[2] = 0; _playerTypes[3] = 0; colorPlayersBox2.color = 0x399c34; //green _singlePlayerVSMenu.numPlayersBox2.transform.colorTransform = colorPlayersBox2; colorPlayersBox4.color = 0x404242; //gray _singlePlayerVSMenu.numPlayersBox4.transform.colorTransform = colorPlayersBox4; } if (String(buttonPressed) == String(_singlePlayerVSMenu.numPlayersBox4)) { _numPlayers = 4; _playerTypes[0] = 1; _playerTypes[1] = 2; _playerTypes[2] = 2; _playerTypes[3] = 2; colorPlayersBox4.color = 0x399c34; //green _singlePlayerVSMenu.numPlayersBox4.transform.colorTransform = colorPlayersBox4; colorPlayersBox2.color = 0x404242; //gray _singlePlayerVSMenu.numPlayersBox2.transform.colorTransform = colorPlayersBox2; } checkStartVS(); } private function setDifVS(event:MouseEvent):void { var buttonPressed:String = String(event.currentTarget); var colorEasyBox:ColorTransform = _singlePlayerVSMenu.difEasy.transform.colorTransform; var colorMediumBox:ColorTransform = _singlePlayerVSMenu.difMedium.transform.colorTransform; var colorHardBox:ColorTransform = _singlePlayerVSMenu.difHard.transform.colorTransform; var colorImpossibleBox:ColorTransform = _singlePlayerVSMenu.difImpossible.transform.colorTransform; switch (buttonPressed) { case String(_singlePlayerVSMenu.difEasy): _playerDiff[0] = 0; _playerDiff[1] = 1; _playerDiff[2] = 1; _playerDiff[3] = 1; colorEasyBox.color = 0x399c34; //green _singlePlayerVSMenu.difEasy.transform.colorTransform = colorEasyBox; colorMediumBox.color = 0x404242; //gray _singlePlayerVSMenu.difMedium.transform.colorTransform = colorMediumBox; colorHardBox.color = 0x404242; //gray _singlePlayerVSMenu.difHard.transform.colorTransform = colorHardBox; colorImpossibleBox.color = 0x404242; //gray _singlePlayerVSMenu.difImpossible.transform.colorTransform = colorImpossibleBox; break; case String(_singlePlayerVSMenu.difMedium): _playerDiff[0] = 0; _playerDiff[1] = 2; _playerDiff[2] = 2; _playerDiff[3] = 2; colorEasyBox.color = 0x404242; //gray _singlePlayerVSMenu.difEasy.transform.colorTransform = colorEasyBox; colorMediumBox.color = 0x399c34; //green _singlePlayerVSMenu.difMedium.transform.colorTransform = colorMediumBox; colorHardBox.color = 0x404242; //gray _singlePlayerVSMenu.difHard.transform.colorTransform = colorHardBox; colorImpossibleBox.color = 0x404242; //gray _singlePlayerVSMenu.difImpossible.transform.colorTransform = colorImpossibleBox; break; case String(_singlePlayerVSMenu.difHard): _playerDiff[0] = 0; _playerDiff[1] = 3; _playerDiff[2] = 3; _playerDiff[3] = 3; colorEasyBox.color = 0x404242; //gray _singlePlayerVSMenu.difEasy.transform.colorTransform = colorEasyBox; colorMediumBox.color = 0x404242; //gray _singlePlayerVSMenu.difMedium.transform.colorTransform = colorMediumBox; colorHardBox.color = 0x399c34; //green _singlePlayerVSMenu.difHard.transform.colorTransform = colorHardBox; colorImpossibleBox.color = 0x404242; //gray _singlePlayerVSMenu.difImpossible.transform.colorTransform = colorImpossibleBox; break; case String(_singlePlayerVSMenu.difImpossible): _playerDiff[0] = 0; _playerDiff[1] = 4; _playerDiff[2] = 4; _playerDiff[3] = 4; colorEasyBox.color = 0x404242; //gray _singlePlayerVSMenu.difEasy.transform.colorTransform = colorEasyBox; colorMediumBox.color = 0x404242; //gray _singlePlayerVSMenu.difMedium.transform.colorTransform = colorMediumBox; colorHardBox.color = 0x404242; //gray _singlePlayerVSMenu.difHard.transform.colorTransform = colorHardBox; colorImpossibleBox.color = 0x399c34; //green _singlePlayerVSMenu.difImpossible.transform.colorTransform = colorImpossibleBox; break; } checkStartVS(); } private function checkStartVS():void { var numPlayersSet:Boolean = false; var diffSet:Boolean = false; var playerTypeTestNum:Number = _playerTypes[0] + _playerTypes[1] + _playerTypes[2] + _playerTypes[3]; var playerDiffTestNum:Number = _playerDiff[0] + _playerDiff[1] + _playerDiff[2] + _playerDiff[3]; if ((_numPlayers == 2 && playerTypeTestNum == 3) ||(_numPlayers == 4 && playerTypeTestNum == 7) ) { numPlayersSet = true; } if ((_numPlayers == 2 && _playerDiff[1] != 0) || _numPlayers == 4 && _playerDiff[1] != 0 && _playerDiff[2] != 0 && _playerDiff[3] != 0) { diffSet = true; } if (numPlayersSet == true && diffSet == true) { _singlePlayerVSMenu.start_btn.alpha = 100; _singlePlayerVSMenu.start_btn.addEventListener(MouseEvent.CLICK, setupSinglePlayerVS); } } //Sets up Custom Match private function setupCustomMatch(event:MouseEvent):void { _gameType = 3; removeChild(_mainMenuBtnSm); removeChild(_customMatchMenu); createBoard(); } //sets player types in CustomMatch private function setTypeCus(event:MouseEvent):void { var buttonPressed:String = String(event.currentTarget.name); var colorTypeNoneP1:ColorTransform = _customMatchMenu.typeNoneP1.transform.colorTransform; var colorTypeNoneP2:ColorTransform = _customMatchMenu.typeNoneP2.transform.colorTransform; var colorTypeNoneP3:ColorTransform = _customMatchMenu.typeNoneP3.transform.colorTransform; var colorTypeNoneP4:ColorTransform = _customMatchMenu.typeNoneP4.transform.colorTransform; var colorTypeHumP1:ColorTransform = _customMatchMenu.typeHumP1.transform.colorTransform; var colorTypeHumP2:ColorTransform = _customMatchMenu.typeHumP2.transform.colorTransform; var colorTypeHumP3:ColorTransform = _customMatchMenu.typeHumP3.transform.colorTransform; var colorTypeHumP4:ColorTransform = _customMatchMenu.typeHumP4.transform.colorTransform; var colorTypeCpuP1:ColorTransform = _customMatchMenu.typeCpuP1.transform.colorTransform; var colorTypeCpuP2:ColorTransform = _customMatchMenu.typeCpuP2.transform.colorTransform; var colorTypeCpuP3:ColorTransform = _customMatchMenu.typeCpuP3.transform.colorTransform; var colorTypeCpuP4:ColorTransform = _customMatchMenu.typeCpuP4.transform.colorTransform; var colorDifEasyP1:ColorTransform = _customMatchMenu.difEasyP1.transform.colorTransform; var colorDifEasyP2:ColorTransform = _customMatchMenu.difEasyP2.transform.colorTransform; var colorDifEasyP3:ColorTransform = _customMatchMenu.difEasyP3.transform.colorTransform; var colorDifEasyP4:ColorTransform = _customMatchMenu.difEasyP4.transform.colorTransform; var colorDifMediumP1:ColorTransform = _customMatchMenu.difMediumP1.transform.colorTransform; var colorDifMediumP2:ColorTransform = _customMatchMenu.difMediumP2.transform.colorTransform; var colorDifMediumP3:ColorTransform = _customMatchMenu.difMediumP3.transform.colorTransform; var colorDifMediumP4:ColorTransform = _customMatchMenu.difMediumP4.transform.colorTransform; var colorDifHardP1:ColorTransform = _customMatchMenu.difHardP1.transform.colorTransform; var colorDifHardP2:ColorTransform = _customMatchMenu.difHardP2.transform.colorTransform; var colorDifHardP3:ColorTransform = _customMatchMenu.difHardP3.transform.colorTransform; var colorDifHardP4:ColorTransform = _customMatchMenu.difHardP4.transform.colorTransform; var colorDifImpossibleP1:ColorTransform = _customMatchMenu.difImpossibleP1.transform.colorTransform; var colorDifImpossibleP2:ColorTransform = _customMatchMenu.difImpossibleP2.transform.colorTransform; var colorDifImpossibleP3:ColorTransform = _customMatchMenu.difImpossibleP3.transform.colorTransform; var colorDifImpossibleP4:ColorTransform = _customMatchMenu.difImpossibleP4.transform.colorTransform; switch (buttonPressed) { case String(_customMatchMenu.typeHumP1.name): if (_numPlayers < 1) { _numPlayers = 1; } _playerTypes[0] = 1; _playerDiff[0] = 0; colorTypeNoneP1.color = 0x404242; //gray _customMatchMenu.typeNoneP1.transform.colorTransform = colorTypeNoneP1; colorTypeHumP1.color = 0x399c34; //green _customMatchMenu.typeHumP1.transform.colorTransform = colorTypeHumP1; colorTypeCpuP1.color = 0x404242; //gray _customMatchMenu.typeCpuP1.transform.colorTransform = colorTypeCpuP1; if (_playerTypes[1] == 0) { colorTypeNoneP2.color = 0x399c34; //green _customMatchMenu.typeNoneP2.transform.colorTransform = colorTypeNoneP2; } if (_typeCoversP2) { _customMatchMenu.removeChild(_noneP2Cover); _customMatchMenu.removeChild(_humP2Cover); _customMatchMenu.removeChild(_cpuP2Cover); _typeCoversP2 = false; } if (!_difCoversP1) { _customMatchMenu.addChild(_easyP1Cover); _customMatchMenu.addChild(_mediumP1Cover); _customMatchMenu.addChild(_hardP1Cover); _customMatchMenu.addChild(_impossibleP1Cover); _difCoversP1 = true; } break; case String(_customMatchMenu.typeHumP2.name): if (_numPlayers < 2) { _numPlayers = 2; } _playerTypes[1] = 1; _playerDiff[1] = 0; colorTypeNoneP2.color = 0x404242; //gray _customMatchMenu.typeNoneP2.transform.colorTransform = colorTypeNoneP2; colorTypeHumP2.color = 0x399c34; //green _customMatchMenu.typeHumP2.transform.colorTransform = colorTypeHumP2; colorTypeCpuP2.color = 0x404242; //gray _customMatchMenu.typeCpuP2.transform.colorTransform = colorTypeCpuP2; if (_playerTypes[2] == 0) { colorTypeNoneP3.color = 0x399c34; //green _customMatchMenu.typeNoneP3.transform.colorTransform = colorTypeNoneP3; } if(_typeCoversP3) { _customMatchMenu.removeChild(_noneP3Cover); _customMatchMenu.removeChild(_humP3Cover); _customMatchMenu.removeChild(_cpuP3Cover); _typeCoversP3 = false; } if (!_difCoversP2) { _customMatchMenu.addChild(_easyP2Cover); _customMatchMenu.addChild(_mediumP2Cover); _customMatchMenu.addChild(_hardP2Cover); _customMatchMenu.addChild(_impossibleP2Cover); _difCoversP2 = true; } break; case String(_customMatchMenu.typeHumP3.name): if (_numPlayers < 3) { _numPlayers = 3; } _playerTypes[2] = 1; _playerDiff[2] = 0; colorTypeNoneP3.color = 0x404242; //gray _customMatchMenu.typeNoneP3.transform.colorTransform = colorTypeNoneP3; colorTypeHumP3.color = 0x399c34; //green _customMatchMenu.typeHumP3.transform.colorTransform = colorTypeHumP3; colorTypeCpuP3.color = 0x404242; //gray _customMatchMenu.typeCpuP3.transform.colorTransform = colorTypeCpuP3; if (_playerTypes[3] == 0) { colorTypeNoneP4.color = 0x399c34; //green _customMatchMenu.typeNoneP4.transform.colorTransform = colorTypeNoneP4; } if (_typeCoversP4) { _customMatchMenu.removeChild(_noneP4Cover); _customMatchMenu.removeChild(_humP4Cover); _customMatchMenu.removeChild(_cpuP4Cover); _typeCoversP4 = false; } if (!_difCoversP3) { _customMatchMenu.addChild(_easyP3Cover); _customMatchMenu.addChild(_mediumP3Cover); _customMatchMenu.addChild(_hardP3Cover); _customMatchMenu.addChild(_impossibleP3Cover); _difCoversP3 = true; } break; case String(_customMatchMenu.typeHumP4.name): if (_numPlayers < 4) { _numPlayers = 4; } _playerTypes[3] = 1; _playerDiff[3] = 0; colorTypeNoneP4.color = 0x404242; //gray _customMatchMenu.typeNoneP4.transform.colorTransform = colorTypeNoneP4; colorTypeHumP4.color = 0x399c34; //green _customMatchMenu.typeHumP4.transform.colorTransform = colorTypeHumP4; colorTypeCpuP4.color = 0x404242; //gray _customMatchMenu.typeCpuP4.transform.colorTransform = colorTypeCpuP4; if (!_difCoversP4) { _customMatchMenu.addChild(_easyP4Cover); _customMatchMenu.addChild(_mediumP4Cover); _customMatchMenu.addChild(_hardP4Cover); _customMatchMenu.addChild(_impossibleP4Cover); _difCoversP4 = true; } break; case String(_customMatchMenu.typeCpuP1.name): if (_numPlayers < 1) { _numPlayers = 1; } _playerTypes[0] = 2; _playerDiff[0] = 1; colorTypeNoneP1.color = 0x404242; //gray _customMatchMenu.typeNoneP1.transform.colorTransform = colorTypeNoneP1; colorTypeHumP1.color = 0x404242; //gray _customMatchMenu.typeHumP1.transform.colorTransform = colorTypeHumP1; colorTypeCpuP1.color = 0x399c34; //green _customMatchMenu.typeCpuP1.transform.colorTransform = colorTypeCpuP1; colorDifEasyP1.color = 0x399c34; //green _customMatchMenu.difEasyP1.transform.colorTransform = colorDifEasyP1; colorDifMediumP1.color = 0x404242; //gray _customMatchMenu.difMediumP1.transform.colorTransform = colorDifMediumP1; colorDifHardP1.color = 0x404242; //gray _customMatchMenu.difHardP1.transform.colorTransform = colorDifHardP1; colorDifImpossibleP1.color = 0x404242; //gray _customMatchMenu.difImpossibleP1.transform.colorTransform = colorDifImpossibleP1; if (_playerTypes[1] == 0) { colorTypeNoneP2.color = 0x399c34; //green _customMatchMenu.typeNoneP2.transform.colorTransform = colorTypeNoneP2; } if (_difCoversP1) { _customMatchMenu.removeChild(_easyP1Cover); _customMatchMenu.removeChild(_mediumP1Cover); _customMatchMenu.removeChild(_hardP1Cover); _customMatchMenu.removeChild(_impossibleP1Cover); _difCoversP1 = false; } if (_typeCoversP2) { _customMatchMenu.removeChild(_noneP2Cover); _customMatchMenu.removeChild(_humP2Cover); _customMatchMenu.removeChild(_cpuP2Cover); _typeCoversP2 = false; } break; case String(_customMatchMenu.typeCpuP2.name): if (_numPlayers < 2) { _numPlayers = 2; } _playerTypes[1] = 2; _playerDiff[1] = 1; colorTypeNoneP2.color = 0x404242; //gray _customMatchMenu.typeNoneP2.transform.colorTransform = colorTypeNoneP2; colorTypeHumP2.color = 0x404242; //gray _customMatchMenu.typeHumP2.transform.colorTransform = colorTypeHumP2; colorTypeCpuP2.color = 0x399c34; //green _customMatchMenu.typeCpuP2.transform.colorTransform = colorTypeCpuP2; colorDifEasyP2.color = 0x399c34; //green _customMatchMenu.difEasyP2.transform.colorTransform = colorDifEasyP2; colorDifMediumP2.color = 0x404242; //gray _customMatchMenu.difMediumP2.transform.colorTransform = colorDifMediumP2; colorDifHardP2.color = 0x404242; //gray _customMatchMenu.difHardP2.transform.colorTransform = colorDifHardP2; colorDifImpossibleP2.color = 0x404242; //gray _customMatchMenu.difImpossibleP2.transform.colorTransform = colorDifImpossibleP2; if (_playerTypes[2] == 0) { colorTypeNoneP3.color = 0x399c34; //green _customMatchMenu.typeNoneP3.transform.colorTransform = colorTypeNoneP3; } if (_difCoversP2) { _customMatchMenu.removeChild(_easyP2Cover); _customMatchMenu.removeChild(_mediumP2Cover); _customMatchMenu.removeChild(_hardP2Cover); _customMatchMenu.removeChild(_impossibleP2Cover); _difCoversP2 = false; } if (_typeCoversP3) { _customMatchMenu.removeChild(_noneP3Cover); _customMatchMenu.removeChild(_humP3Cover); _customMatchMenu.removeChild(_cpuP3Cover); _typeCoversP3 = false; } break; case String(_customMatchMenu.typeCpuP3.name): if (_numPlayers < 3) { _numPlayers = 3; } _playerTypes[2] = 2; _playerDiff[2] = 1; colorTypeNoneP3.color = 0x404242; //gray _customMatchMenu.typeNoneP3.transform.colorTransform = colorTypeNoneP3; colorTypeHumP3.color = 0x404242; //gray _customMatchMenu.typeHumP3.transform.colorTransform = colorTypeHumP3; colorTypeCpuP3.color = 0x399c34; //green _customMatchMenu.typeCpuP3.transform.colorTransform = colorTypeCpuP3; colorDifEasyP3.color = 0x399c34; //green _customMatchMenu.difEasyP3.transform.colorTransform = colorDifEasyP3; colorDifMediumP3.color = 0x404242; //gray _customMatchMenu.difMediumP3.transform.colorTransform = colorDifMediumP3; colorDifHardP3.color = 0x404242; //gray _customMatchMenu.difHardP3.transform.colorTransform = colorDifHardP3; colorDifImpossibleP3.color = 0x404242; //gray _customMatchMenu.difImpossibleP3.transform.colorTransform = colorDifImpossibleP3; if (_playerTypes[3] == 0) { colorTypeNoneP4.color = 0x399c34; //green _customMatchMenu.typeNoneP4.transform.colorTransform = colorTypeNoneP4; } if (_difCoversP3) { _customMatchMenu.removeChild(_easyP3Cover); _customMatchMenu.removeChild(_mediumP3Cover); _customMatchMenu.removeChild(_hardP3Cover); _customMatchMenu.removeChild(_impossibleP3Cover); _difCoversP3 = false; } if (_typeCoversP4) { _customMatchMenu.removeChild(_noneP4Cover); _customMatchMenu.removeChild(_humP4Cover); _customMatchMenu.removeChild(_cpuP4Cover); _typeCoversP4 = false; } break; case String(_customMatchMenu.typeCpuP4.name): if (_numPlayers < 4) { _numPlayers = 4; } _playerTypes[3] = 2; _playerDiff[3] = 1; colorTypeNoneP4.color = 0x404242; //gray _customMatchMenu.typeNoneP4.transform.colorTransform = colorTypeNoneP4; colorTypeHumP4.color = 0x404242; //gray _customMatchMenu.typeHumP4.transform.colorTransform = colorTypeHumP4; colorTypeCpuP4.color = 0x399c34; //green _customMatchMenu.typeCpuP4.transform.colorTransform = colorTypeCpuP4; colorDifEasyP4.color = 0x399c34; //green _customMatchMenu.difEasyP4.transform.colorTransform = colorDifEasyP4; colorDifMediumP4.color = 0x404242; //gray _customMatchMenu.difMediumP4.transform.colorTransform = colorDifMediumP4; colorDifHardP4.color = 0x404242; //gray _customMatchMenu.difHardP1.transform.colorTransform = colorDifHardP4; colorDifImpossibleP4.color = 0x404242; //gray _customMatchMenu.difImpossibleP4.transform.colorTransform = colorDifImpossibleP4; if (_difCoversP4) { _customMatchMenu.removeChild(_easyP4Cover); _customMatchMenu.removeChild(_mediumP4Cover); _customMatchMenu.removeChild(_hardP4Cover); _customMatchMenu.removeChild(_impossibleP4Cover); _difCoversP4 = false; } break; case String(_customMatchMenu.typeNoneP1.name): _playerTypes[0] = 0; _playerDiff[0] = 0; colorTypeNoneP1.color = 0x399c34; //green _customMatchMenu.typeNoneP1.transform.colorTransform = colorTypeNoneP1; colorTypeHumP1.color = 0x404242; //gray _customMatchMenu.typeHumP1.transform.colorTransform = colorTypeHumP1; colorTypeCpuP1.color = 0x404242; //gray _customMatchMenu.typeCpuP1.transform.colorTransform = colorTypeCpuP1; colorDifEasyP1.color = 0x404242; //gray _customMatchMenu.difEasyP1.transform.colorTransform = colorDifEasyP1; colorDifMediumP1.color = 0x404242; //gray _customMatchMenu.difMediumP1.transform.colorTransform = colorDifMediumP1; colorDifHardP1.color = 0x404242; //gray _customMatchMenu.difHardP1.transform.colorTransform = colorDifHardP1; colorDifImpossibleP1.color = 0x404242; //gray _customMatchMenu.difImpossibleP1.transform.colorTransform = colorDifImpossibleP1; if (!_typeCoversP2) { _customMatchMenu.addChild(_noneP2Cover); _customMatchMenu.addChild(_humP2Cover); _customMatchMenu.addChild(_cpuP2Cover); _typeCoversP2 = true; } if (!_difCoversP1) { _customMatchMenu.addChild(_easyP1Cover); _customMatchMenu.addChild(_mediumP1Cover); _customMatchMenu.addChild(_hardP1Cover); _customMatchMenu.addChild(_impossibleP1Cover); _difCoversP1 = true; } case String(_customMatchMenu.typeNoneP2.name): _playerTypes[1] = 0; _playerDiff[1] = 0; colorTypeNoneP2.color = 0x399c34; //green _customMatchMenu.typeNoneP2.transform.colorTransform = colorTypeNoneP2; colorTypeHumP2.color = 0x404242; //gray _customMatchMenu.typeHumP2.transform.colorTransform = colorTypeHumP2; colorTypeCpuP2.color = 0x404242; //gray _customMatchMenu.typeCpuP2.transform.colorTransform = colorTypeCpuP2; colorDifEasyP2.color = 0x404242; //gray _customMatchMenu.difEasyP2.transform.colorTransform = colorDifEasyP2; colorDifMediumP2.color = 0x404242; //gray _customMatchMenu.difMediumP2.transform.colorTransform = colorDifMediumP2; colorDifHardP2.color = 0x404242; //gray _customMatchMenu.difHardP2.transform.colorTransform = colorDifHardP2; colorDifImpossibleP2.color = 0x404242; //gray _customMatchMenu.difImpossibleP2.transform.colorTransform = colorDifImpossibleP2; if (!_typeCoversP3) { _customMatchMenu.addChild(_noneP3Cover); _customMatchMenu.addChild(_humP3Cover); _customMatchMenu.addChild(_cpuP3Cover); _typeCoversP3 = true; } if (!_difCoversP2) { _customMatchMenu.addChild(_easyP2Cover); _customMatchMenu.addChild(_mediumP2Cover); _customMatchMenu.addChild(_hardP2Cover); _customMatchMenu.addChild(_impossibleP2Cover); _difCoversP2 = true; } case String(_customMatchMenu.typeNoneP3.name): _playerTypes[2] = 0; _playerDiff[2] = 0; colorTypeNoneP3.color = 0x399c34; //green _customMatchMenu.typeNoneP3.transform.colorTransform = colorTypeNoneP3; colorTypeHumP3.color = 0x404242; //gray _customMatchMenu.typeHumP3.transform.colorTransform = colorTypeHumP3; colorTypeCpuP3.color = 0x404242; //gray _customMatchMenu.typeCpuP3.transform.colorTransform = colorTypeCpuP3; colorDifEasyP3.color = 0x404242; //gray _customMatchMenu.difEasyP3.transform.colorTransform = colorDifEasyP3; colorDifMediumP3.color = 0x404242; //gray _customMatchMenu.difMediumP3.transform.colorTransform = colorDifMediumP3; colorDifHardP3.color = 0x404242; //gray _customMatchMenu.difHardP3.transform.colorTransform = colorDifHardP3; colorDifImpossibleP3.color = 0x404242; //gray _customMatchMenu.difImpossibleP3.transform.colorTransform = colorDifImpossibleP3; if (!_typeCoversP4) { _customMatchMenu.addChild(_noneP4Cover); _customMatchMenu.addChild(_humP4Cover); _customMatchMenu.addChild(_cpuP4Cover); _typeCoversP4 = true; } if (!_difCoversP3) { _customMatchMenu.addChild(_easyP3Cover); _customMatchMenu.addChild(_mediumP3Cover); _customMatchMenu.addChild(_hardP3Cover); _customMatchMenu.addChild(_impossibleP3Cover); _difCoversP3 = true; } case String(_customMatchMenu.typeNoneP4.name): _playerTypes[3] = 0; _playerDiff[3] = 0; colorTypeNoneP4.color = 0x399c34; //green _customMatchMenu.typeNoneP4.transform.colorTransform = colorTypeNoneP4; colorTypeHumP4.color = 0x404242; //gray _customMatchMenu.typeHumP4.transform.colorTransform = colorTypeHumP4; colorTypeCpuP4.color = 0x404242; //gray _customMatchMenu.typeCpuP4.transform.colorTransform = colorTypeCpuP4; colorDifEasyP4.color = 0x404242; //gray _customMatchMenu.difEasyP4.transform.colorTransform = colorDifEasyP4; colorDifMediumP4.color = 0x404242; //gray _customMatchMenu.difMediumP4.transform.colorTransform = colorDifMediumP4; colorDifHardP4.color = 0x404242; //gray _customMatchMenu.difHardP4.transform.colorTransform = colorDifHardP4; colorDifImpossibleP4.color = 0x404242; //gray _customMatchMenu.difImpossibleP4.transform.colorTransform = colorDifImpossibleP4; if (!_difCoversP4) { _customMatchMenu.addChild(_easyP4Cover); _customMatchMenu.addChild(_mediumP4Cover); _customMatchMenu.addChild(_hardP4Cover); _customMatchMenu.addChild(_impossibleP4Cover); _difCoversP4 = true; } _numPlayers = 0; for (var i:Number = 0; i < _playerTypes.length; i++) { if (_playerTypes[i] != 0) { _numPlayers++; } } break; } if (_numPlayers > 0) { _customMatchMenu.start_btn.alpha = 1; _customMatchMenu.start_btn.addEventListener(MouseEvent.CLICK, setupCustomMatch); } else { _customMatchMenu.start_btn.alpha = .15; _customMatchMenu.start_btn.removeEventListener(MouseEvent.CLICK, setupCustomMatch); } } //sets difficulty settings in Custom Match private function setDifCus(event:MouseEvent):void { var buttonPressed:String = String(event.currentTarget.name); var colorDifEasyP1:ColorTransform = _customMatchMenu.difEasyP1.transform.colorTransform; var colorDifEasyP2:ColorTransform = _customMatchMenu.difEasyP2.transform.colorTransform; var colorDifEasyP3:ColorTransform = _customMatchMenu.difEasyP3.transform.colorTransform; var colorDifEasyP4:ColorTransform = _customMatchMenu.difEasyP4.transform.colorTransform; var colorDifMediumP1:ColorTransform = _customMatchMenu.difMediumP1.transform.colorTransform; var colorDifMediumP2:ColorTransform = _customMatchMenu.difMediumP2.transform.colorTransform; var colorDifMediumP3:ColorTransform = _customMatchMenu.difMediumP3.transform.colorTransform; var colorDifMediumP4:ColorTransform = _customMatchMenu.difMediumP4.transform.colorTransform; var colorDifHardP1:ColorTransform = _customMatchMenu.difHardP1.transform.colorTransform; var colorDifHardP2:ColorTransform = _customMatchMenu.difHardP2.transform.colorTransform; var colorDifHardP3:ColorTransform = _customMatchMenu.difHardP3.transform.colorTransform; var colorDifHardP4:ColorTransform = _customMatchMenu.difHardP4.transform.colorTransform; var colorDifImpossibleP1:ColorTransform = _customMatchMenu.difImpossibleP1.transform.colorTransform; var colorDifImpossibleP2:ColorTransform = _customMatchMenu.difImpossibleP2.transform.colorTransform; var colorDifImpossibleP3:ColorTransform = _customMatchMenu.difImpossibleP3.transform.colorTransform; var colorDifImpossibleP4:ColorTransform = _customMatchMenu.difImpossibleP4.transform.colorTransform; switch (buttonPressed) { case String(_customMatchMenu.difEasyP1.name): _playerDiff[0] = 1; colorDifEasyP1.color = 0x399c34; //green _customMatchMenu.difEasyP1.transform.colorTransform = colorDifEasyP1; colorDifMediumP1.color = 0x404242; //gray _customMatchMenu.difMediumP1.transform.colorTransform = colorDifMediumP1; colorDifHardP1.color = 0x404242; //gray _customMatchMenu.difHardP1.transform.colorTransform = colorDifHardP1; colorDifImpossibleP1.color = 0x404242; //gray _customMatchMenu.difImpossibleP1.transform.colorTransform = colorDifImpossibleP1; break; case String(_customMatchMenu.difEasyP2.name): _playerDiff[1] = 1; colorDifEasyP2.color = 0x399c34; //green _customMatchMenu.difEasyP2.transform.colorTransform = colorDifEasyP2; colorDifMediumP2.color = 0x404242; //gray _customMatchMenu.difMediumP2.transform.colorTransform = colorDifMediumP2; colorDifHardP2.color = 0x404242; //gray _customMatchMenu.difHardP2.transform.colorTransform = colorDifHardP2; colorDifImpossibleP2.color = 0x404242; //gray _customMatchMenu.difImpossibleP2.transform.colorTransform = colorDifImpossibleP2; break; case String(_customMatchMenu.difEasyP3.name): _playerDiff[2] = 1; colorDifEasyP3.color = 0x399c34; //green _customMatchMenu.difEasyP3.transform.colorTransform = colorDifEasyP3; colorDifMediumP3.color = 0x404242; //gray _customMatchMenu.difMediumP3.transform.colorTransform = colorDifMediumP3; colorDifHardP3.color = 0x404242; //gray _customMatchMenu.difHardP3.transform.colorTransform = colorDifHardP3; colorDifImpossibleP3.color = 0x404242; //gray _customMatchMenu.difImpossibleP3.transform.colorTransform = colorDifImpossibleP3; break; case String(_customMatchMenu.difEasyP4.name): _playerDiff[3] = 1; colorDifEasyP4.color = 0x399c34; //green _customMatchMenu.difEasyP4.transform.colorTransform = colorDifEasyP4; colorDifMediumP4.color = 0x404242; //gray _customMatchMenu.difMediumP4.transform.colorTransform = colorDifMediumP4; colorDifHardP4.color = 0x404242; //gray _customMatchMenu.difHardP4.transform.colorTransform = colorDifHardP4; colorDifImpossibleP4.color = 0x404242; //gray _customMatchMenu.difImpossibleP4.transform.colorTransform = colorDifImpossibleP4; break; case String(_customMatchMenu.difMediumP1.name): _playerDiff[0] = 2; colorDifEasyP1.color = 0x404242; //gray _customMatchMenu.difEasyP1.transform.colorTransform = colorDifEasyP1; colorDifMediumP1.color = 0x399c34; //green _customMatchMenu.difMediumP1.transform.colorTransform = colorDifMediumP1; colorDifHardP1.color = 0x404242; //gray _customMatchMenu.difHardP1.transform.colorTransform = colorDifHardP1; colorDifImpossibleP1.color = 0x404242; //gray _customMatchMenu.difImpossibleP1.transform.colorTransform = colorDifImpossibleP1; break; case String(_customMatchMenu.difMediumP2.name): _playerDiff[1] = 2; colorDifEasyP2.color = 0x404242; //gray _customMatchMenu.difEasyP2.transform.colorTransform = colorDifEasyP2; colorDifMediumP2.color = 0x399c34; //green _customMatchMenu.difMediumP2.transform.colorTransform = colorDifMediumP2; colorDifHardP2.color = 0x404242; //gray _customMatchMenu.difHardP2.transform.colorTransform = colorDifHardP2; colorDifImpossibleP2.color = 0x404242; //gray _customMatchMenu.difImpossibleP2.transform.colorTransform = colorDifImpossibleP2; break; case String(_customMatchMenu.difMediumP3.name): _playerDiff[2] = 2; colorDifEasyP3.color = 0x404242; //gray _customMatchMenu.difEasyP3.transform.colorTransform = colorDifEasyP3; colorDifMediumP3.color = 0x399c34; //green _customMatchMenu.difMediumP3.transform.colorTransform = colorDifMediumP3; colorDifHardP3.color = 0x404242; //gray _customMatchMenu.difHardP3.transform.colorTransform = colorDifHardP3; colorDifImpossibleP3.color = 0x404242; //gray _customMatchMenu.difImpossibleP3.transform.colorTransform = colorDifImpossibleP3; break; case String(_customMatchMenu.difMediumP4.name): _playerDiff[3] = 2; colorDifEasyP4.color = 0x404242; //gray _customMatchMenu.difEasyP4.transform.colorTransform = colorDifEasyP4; colorDifMediumP4.color = 0x399c34; //green _customMatchMenu.difMediumP4.transform.colorTransform = colorDifMediumP4; colorDifHardP4.color = 0x404242; //gray _customMatchMenu.difHardP4.transform.colorTransform = colorDifHardP4; colorDifImpossibleP4.color = 0x404242; //gray _customMatchMenu.difImpossibleP4.transform.colorTransform = colorDifImpossibleP4; break; case String(_customMatchMenu.difHardP1.name): _playerDiff[0] = 3; colorDifEasyP1.color = 0x404242; //gray _customMatchMenu.difEasyP1.transform.colorTransform = colorDifEasyP1; colorDifMediumP1.color = 0x404242; //gray _customMatchMenu.difMediumP1.transform.colorTransform = colorDifMediumP1; colorDifHardP1.color = 0x399c34; //green _customMatchMenu.difHardP1.transform.colorTransform = colorDifHardP1; colorDifImpossibleP1.color = 0x404242; //gray _customMatchMenu.difImpossibleP1.transform.colorTransform = colorDifImpossibleP1; break; case String(_customMatchMenu.difHardP2.name): _playerDiff[1] = 3; colorDifEasyP2.color = 0x404242; //gray _customMatchMenu.difEasyP2.transform.colorTransform = colorDifEasyP2; colorDifMediumP2.color = 0x404242; //gray _customMatchMenu.difMediumP2.transform.colorTransform = colorDifMediumP2; colorDifHardP2.color =0x399c34; //green _customMatchMenu.difHardP2.transform.colorTransform = colorDifHardP2; colorDifImpossibleP2.color = 0x404242; //gray _customMatchMenu.difImpossibleP2.transform.colorTransform = colorDifImpossibleP2; break; case String(_customMatchMenu.difHardP3.name): _playerDiff[2] = 3; colorDifEasyP3.color = 0x404242; //gray _customMatchMenu.difEasyP3.transform.colorTransform = colorDifEasyP3; colorDifMediumP3.color = 0x404242; //gray _customMatchMenu.difMediumP3.transform.colorTransform = colorDifMediumP3; colorDifHardP3.color = 0x399c34; //green _customMatchMenu.difHardP3.transform.colorTransform = colorDifHardP3; colorDifImpossibleP3.color = 0x404242; //gray _customMatchMenu.difImpossibleP3.transform.colorTransform = colorDifImpossibleP3; break; case String(_customMatchMenu.difHardP4.name): _playerDiff[3] = 3; colorDifEasyP4.color = 0x404242; //gray _customMatchMenu.difEasyP4.transform.colorTransform = colorDifEasyP4; colorDifMediumP4.color = 0x404242; //gray _customMatchMenu.difMediumP4.transform.colorTransform = colorDifMediumP4; colorDifHardP4.color = 0x399c34; //green _customMatchMenu.difHardP4.transform.colorTransform = colorDifHardP4; colorDifImpossibleP4.color = 0x404242; //gray _customMatchMenu.difImpossibleP4.transform.colorTransform = colorDifImpossibleP4; break; case String(_customMatchMenu.difImpossibleP1.name): _playerDiff[0] = 4; colorDifEasyP1.color = 0x404242; //gray _customMatchMenu.difEasyP1.transform.colorTransform = colorDifEasyP1; colorDifMediumP1.color = 0x404242; //gray _customMatchMenu.difMediumP1.transform.colorTransform = colorDifMediumP1; colorDifHardP1.color = 0x404242; //gray _customMatchMenu.difHardP1.transform.colorTransform = colorDifHardP1; colorDifImpossibleP1.color = 0x399c34; //green _customMatchMenu.difImpossibleP1.transform.colorTransform = colorDifImpossibleP1; break; case String(_customMatchMenu.difImpossibleP2.name): _playerDiff[1] = 4; colorDifEasyP2.color = 0x404242; //gray _customMatchMenu.difEasyP2.transform.colorTransform = colorDifEasyP2; colorDifMediumP2.color = 0x404242; //gray _customMatchMenu.difMediumP2.transform.colorTransform = colorDifMediumP2; colorDifHardP2.color = 0x404242; //gray _customMatchMenu.difHardP2.transform.colorTransform = colorDifHardP2; colorDifImpossibleP2.color = 0x399c34; //green _customMatchMenu.difImpossibleP2.transform.colorTransform = colorDifImpossibleP2; break; case String(_customMatchMenu.difImpossibleP3.name): _playerDiff[2] = 4; colorDifEasyP3.color = 0x404242; //gray _customMatchMenu.difEasyP3.transform.colorTransform = colorDifEasyP3; colorDifMediumP3.color = 0x404242; //gray _customMatchMenu.difMediumP3.transform.colorTransform = colorDifMediumP3; colorDifHardP3.color = 0x404242; //gray _customMatchMenu.difHardP3.transform.colorTransform = colorDifHardP3; colorDifImpossibleP3.color = 0x399c34; //green _customMatchMenu.difImpossibleP3.transform.colorTransform = colorDifImpossibleP3; break; case String(_customMatchMenu.difImpossibleP4.name): _playerDiff[3] = 4; colorDifEasyP4.color = 0x404242; //gray _customMatchMenu.difEasyP4.transform.colorTransform = colorDifEasyP4; colorDifMediumP4.color = 0x404242; //gray _customMatchMenu.difMediumP4.transform.colorTransform = colorDifMediumP4; colorDifHardP4.color = 0x404242; //gray _customMatchMenu.difHardP4.transform.colorTransform = colorDifHardP4; colorDifImpossibleP4.color = 0x399c34; //green _customMatchMenu.difImpossibleP4.transform.colorTransform = colorDifImpossibleP4; break; } } //################################################## //###### Functions to Create Game ################## //################################################## // sets up board and game private function createBoard() { _cards = new Array(); //create function to detect which menu to remove, needs function parameter _currentMatches = 0; _board = new Board; _board.x = 375; _board.y = 275; addChild(_board); //add cards to board; createCards(); _humSend2ndCardTimer = new Timer(1800, 0); _humSend2ndCardTimer.addEventListener(TimerEvent.TIMER, sendHum2ndCard); _cpuPickedCard1 = false; _cpuPickedCard2 = false; _matchedCards = new Array(); for (var mc = 0; mc < _cards.length; mc++) { _matchedCards[mc] = 0; } // if game type is Time Attack if (_gameType == 1) { //add Timer _dynTimer = new DynTimer(); _dynTimer.x = 648; _dynTimer.y = 27; addChild(_dynTimer); _timeAttackTimer = new Timer(1000, 0); _timeAttackSeconds = 0; _timeAttackTimer.addEventListener(TimerEvent.TIMER, updateTimer); _timeAttackTimer.start(); _cardFilpEnabled = true; _numPlayers = 1; _playerTypes[0] = 1; _currentPlayer = 0; } //if game type is Single PLayer VS or Custom Match if (_gameType == 2 || _gameType == 3) { //add multiplier _multiplier = new Multiplier(); _multiplier.x = 375; _multiplier.y = 25; addChild(_multiplier); _multi = 1; if(_playerTypes[0] != 0) { //add Player1 Score Box _scoreBoxP1 = new ScoreBoxP1(); _scoreBoxP1.x = 105; _scoreBoxP1.y = 25; addChild(_scoreBoxP1); } if(_playerTypes[1] != 0) { //add Player2 Score Box _scoreBoxP2 = new ScoreBoxP2(); _scoreBoxP2.x = 645; _scoreBoxP2.y = 25; addChild(_scoreBoxP2); } if(_playerTypes[2] != 0) { //add Player3 Score Box _scoreBoxP3 = new ScoreBoxP3(); _scoreBoxP3.x = 105; _scoreBoxP3.y = 525; addChild(_scoreBoxP3); } if(_playerTypes[3] != 0) { //add Player4 Score Box _scoreBoxP4 = new ScoreBoxP4(); _scoreBoxP4.x = 645; _scoreBoxP4.y = 525; addChild(_scoreBoxP4); } //Sets all scores to zero for(var s:Number = 0; s < 4; s++) { _playerScores[s] = 0; } //Set up CPU's memory //player 1 memory for(var m1:Number = 0; m1 < _cards.length; m1++) { _player1Mem[m1] = ''; } //player 2 memory for(var m2:Number = 0; m2 < _cards.length; m2++) { _player2Mem[m2] = ''; } //player 3 memory for(var m3:Number = 0; m3 < _cards.length; m3++) { _player3Mem[m3] = ''; } //player 4 memory for(var m4:Number = 0; m4 < _cards.length; m4++) { _player4Mem[m4] = ''; } // sets glow filter for score boxes _glow.color = 0x58a5f5; _glow.alpha = 1; _glow.blurX = 15; _glow.blurY = 15; _glow.quality = BitmapFilterQuality.MEDIUM; _glow.strength = 3; //sets current player to P1 _currentPlayer = 0; _cardFilpEnabled = true; //Timers _scoreAddTimer = new Timer(50, 0); _scoreAddTimer.addEventListener(TimerEvent.TIMER, updateScore); _cpuTurnTimer = new Timer(3000, 0); _cpuTurnTimer.addEventListener(TimerEvent.TIMER, cpuTurn); _sendFirstCardTimer = new Timer(3000, 0); _sendFirstCardTimer.addEventListener(TimerEvent.TIMER, sendFirstCard); _sendSecondCardTimer = new Timer(3000, 0); _sendSecondCardTimer.addEventListener(TimerEvent.TIMER, sendSecondCard); //starts game nextTurn("start"); } } //creates cards and adds them to the board private function createCards() { _cardX = 85; _cardY = 97.4; for(var i:Number = 0; i < 2; i++) { _card = new Card(); addChild(_card); _cardType01 = new CardType01(); _card.setType(_cardType01); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var j:Number = 0; j < 2; j++) { _card = new Card(); addChild(_card); _cardType02 = new CardType02(); _card.setType(_cardType02); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var k:Number = 0; k < 2; k++) { _card = new Card(); addChild(_card); _cardType03 = new CardType03(); _card.setType(_cardType03); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var l:Number = 0; l < 2; l++) { _card = new Card(); addChild(_card); _cardType04 = new CardType04(); _card.setType(_cardType04); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } _cardX = 85; _cardY += _card.height + 12.94; for(var c:Number = 0; c < 2; c++) { _card = new Card(); addChild(_card); _cardType05 = new CardType05(); _card.setType(_cardType05); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var v:Number = 0; v < 2; v++) { _card = new Card(); addChild(_card); _cardType06 = new CardType06(); _card.setType(_cardType06); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var b:Number = 0; b < 2; b++) { _card = new Card(); addChild(_card); _cardType07 = new CardType07(); _card.setType(_cardType07); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var n:Number = 0; n < 2; n++) { _card = new Card(); addChild(_card); _cardType08 = new CardType08(); _card.setType(_cardType08); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } _cardX = 85; _cardY += _card.height + 12.94; for(var m:Number = 0; m < 2; m++) { _card = new Card(); addChild(_card); _cardType09 = new CardType09(); _card.setType(_cardType09); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var q:Number = 0; q < 2; q++) { _card = new Card(); addChild(_card); _cardType10 = new CardType10(); _card.setType(_cardType10); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var w:Number = 0; w < 2; w++) { _card = new Card(); addChild(_card); _cardType11 = new CardType11(); _card.setType(_cardType11); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var e:Number = 0; e < 2; e++) { _card = new Card(); addChild(_card); _cardType12 = new CardType12(); _card.setType(_cardType12); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } _cardX = 85; _cardY += _card.height + 12.94; for(var r:Number = 0; r < 2; r++) { _card = new Card(); addChild(_card); _cardType13 = new CardType13(); _card.setType(_cardType13); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var t:Number = 0; t < 2; t++) { _card = new Card(); addChild(_card); _cardType14 = new CardType14(); _card.setType(_cardType14); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var u:Number = 0; u < 2; u++) { _card = new Card(); addChild(_card); _cardType15 = new CardType15(); _card.setType(_cardType15); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var o:Number = 0; o < 2; o++) { _card = new Card(); addChild(_card); _cardType16 = new CardType16(); _card.setType(_cardType16); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } _cardX = 85; _cardY += _card.height + 12.94; for(var p:Number = 0; p < 2; p++) { _card = new Card(); addChild(_card); _cardType17 = new CardType17(); _card.setType(_cardType17); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var a:Number = 0; a < 2; a++) { _card = new Card(); addChild(_card); _cardType18 = new CardType18(); _card.setType(_cardType18); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var s:Number = 0; s < 2; s++) { _card = new Card(); addChild(_card); _cardType19 = new CardType19(); _card.setType(_cardType19); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } for(var d:Number = 0; d < 2; d++) { _card = new Card(); addChild(_card); _cardType20 = new CardType20(); _card.setType(_cardType20); _card.x = _cardX; _card.y = _cardY; _cardX += _card.width + 33; _cardY = _card.y; _card.addEventListener(MouseEvent.CLICK, sendCard); _card.name = 'card' + _num; _cards.push(_card); _num ++; } randomizeCards(_cards); } //randomizes the cards private function randomizeCards(cards:Array):void { var randomCard1:Number; var randomCard2:Number; var card1X:Number; var card1Y:Number; for (var i:Number = 0; i < 80; i++) { randomCard1 = Math.floor(Math.random() * cards.length); randomCard2 = Math.floor(Math.random() * cards.length); card1X = cards[randomCard1].x; card1Y = cards[randomCard1].y; cards[randomCard1].x = cards[randomCard2].x; cards[randomCard1].y = cards[randomCard2].y; cards[randomCard2].x = card1X; cards[randomCard2].y = card1Y; } } //################################################## //###### Gameplay Functions ######################## //################################################## // mouse click on a card private function sendCard(event:MouseEvent) { _card2Send = event.currentTarget; if (_cardFilpEnabled) { if (_card2Send.currentFrame != 1) { _card2Send.gotoAndPlay("flipStart"); } if (_firstCard != undefined) { _cardFilpEnabled = false; for (var i:Number = 0; i < _cards.length; i++) { _cards[i].removeEventListener(MouseEvent.CLICK, _cards[i].onClick); _cards[i].removeEventListener(MouseEvent.CLICK, sendCard); _cards[i].buttonMode = false; } _humSend2ndCardTimer.start(); } if (_firstCard == undefined) { //_card2Send.gotoAndPlay("flipStart"); _card2Send.removeEventListener(MouseEvent.CLICK, sendCard); checkCards(_card2Send); } } } // send the second chosen human card to checkCards private function sendHum2ndCard(event:TimerEvent):void { _humSend2ndCardTimer.stop(); checkCards(_card2Send); } // sends the first chosen computer card to checkCards private function sendFirstCard(event:TimerEvent):void { _sendFirstCardTimer.stop(); _sendFirstCardTimer.reset(); checkCards(_cards[_cpuPickedCardNum1]); } //sends the second Chosen computer card to checkCards private function sendSecondCard(event:TimerEvent):void { _sendSecondCardTimer.stop(); _sendSecondCardTimer.reset(); checkCards(_cards[_cpuPickedCardNum2]); } //cpu flips over a card private function cpuSendCard():void { if (_cpuPickedCard1 == true && _firstCard == undefined) { _cards[_cpuPickedCardNum1].gotoAndPlay("flipStart"); _sendFirstCardTimer.start(); } if (_cpuPickedCard1 == true && _cpuPickedCard2 == true && _firstCard != undefined) { _cards[_cpuPickedCardNum2].gotoAndPlay("flipStart"); _sendSecondCardTimer.start(); } if (_cpuPickedCard1 == true && _cpuPickedCard2 == false && _firstCard != undefined) { cpuPickCards(); } } // checks the Cards for a match private function checkCards(sentCard:*):void { var firstCardType:String; var secondCardType:String; if(_firstCard == undefined) { _firstCard = sentCard; if (_playerTypes[_currentPlayer] == 2) { cpuSendCard(); } } else if(String(_firstCard._type) == String(sentCard._type)) { var fadeFirst:Tween = new Tween(_firstCard.screen, "alpha", Regular.easeIn, 0, .75, 4, true); var fadeSecond:Tween = new Tween(sentCard.screen, "alpha", Regular.easeIn, 0, .75, 4, true); for (var mc:Number = 0; mc < _cards.length; mc++) { if((String(_cards[mc].name) == String(_firstCard.name)) || (String(_cards[mc].name) == String(sentCard.name))) { _matchedCards[mc] = 1; } } //allows human players to click on cards again if(_playerTypes[_currentPlayer] == 1) { _cardFilpEnabled = true; for (var i:Number = 0; i < _cards.length; i++) { if (_matchedCards[i] == 0) { _cards[i].addEventListener(MouseEvent.CLICK, _cards[i].onClick); _cards[i].addEventListener(MouseEvent.CLICK, sendCard); _cards[i].buttonMode = true; } } } //add score and remeber matched cards if (_gameType == 2 || _gameType == 3) { firstCardType = String(_firstCard._type); secondCardType = String(sentCard._type); _scoreToAdd = 100 * _multi; if (_multi < 64) { _multi = _multi * 2; } else { _multi = 100; } _multiplier.multiplierTxt.text = "100 x " + String(_multi); _playerScores[_currentPlayer] += _scoreToAdd; _playerAddScore = _currentPlayer; _scoreAddTimer.start(); _cpuPickedCard1 = false; _cpuPickedCard2 = false; } _firstCard = undefined; _currentMatches = _currentMatches + 1; if(_currentMatches >= _totalMatches) { endGame(); } else if (_playerTypes[_currentPlayer] == 2) { _cpuTurnTimer.start(); } } else { // if the game type is time attack or if only one play is playing Custom Match make the cickable again if (_gameType == 1 || (_gameType == 3 && _numPlayers == 1)) { _cardFilpEnabled = true; for (var i2:Number = 0; i2 < _cards.length; i2++) { if (_matchedCards[i2] == 0) { _cards[i2].addEventListener(MouseEvent.CLICK, _cards[i2].onClick); _cards[i2].addEventListener(MouseEvent.CLICK, sendCard); _cards[i2].buttonMode = true; } } } _firstCard.gotoAndPlay("flipBack"); sentCard.gotoAndPlay("flipBack"); _firstCard.addEventListener(MouseEvent.CLICK, sendCard); sentCard.addEventListener(MouseEvent.CLICK, sendCard); // remember cards and reset mulitplier if (_gameType == 2 || _gameType == 3) { firstCardType = String(_firstCard._type); secondCardType = String(sentCard._type); rememberCards(String(_firstCard.name), firstCardType); rememberCards(String(sentCard.name), secondCardType); _firstCard = undefined; _cpuPickedCard1 = false; _cpuPickedCard2 = false; _multi = 1; _multiplier.multiplierTxt.text = "100 x " + String(_multi); nextTurn("newPlayer"); } else { _firstCard = undefined; } } } // Ends Current Game private function endGame():void { if (_gameType == 1) { _timeAttackTimer.stop(); _timeAttackTimer.reset(); removeChild(_dynTimer); //displayGameOverTime(); checkHighScore(); } if (_gameType == 2) { _scoreAddTimer.stop(); _scoreAddTimer.reset(); removeChild(_scoreBoxP1); removeChild(_multiplier); if (_numPlayers > 1) { removeChild(_scoreBoxP2); } if (_numPlayers > 2) { removeChild(_scoreBoxP3); } if (_numPlayers > 3) { removeChild(_scoreBoxP4); } checkHighScore(); } if (_gameType == 3) { _scoreAddTimer.stop(); _scoreAddTimer.reset(); removeChild(_scoreBoxP1); removeChild(_multiplier); if (_numPlayers > 1) { removeChild(_scoreBoxP2); } if (_numPlayers > 2) { removeChild(_scoreBoxP3); } if (_numPlayers > 3) { removeChild(_scoreBoxP4); } displayGameOver(); } } private function checkHighScore():void { var checkURL:URLRequest = new URLRequest ("http://www.phatt.net/memory/memory.php"); checkURL.method = URLRequestMethod.GET; var variables:URLVariables = new URLVariables(); variables.reqType = "check"; variables.gameType = _gameType; variables.numPlayers = _numPlayers; variables.difficulty = _playerDiff[1]; if (_gameType == 1) { variables.score = _timeAttackSeconds; } else { variables.score = _playerScores[0]; } checkURL.data = variables; var loader:URLLoader = new URLLoader (checkURL); loader.addEventListener(Event.COMPLETE, checkHighScore2); loader.load(checkURL); } private function checkHighScore2(event:Event):void { //var returnCheck:URLVariables = new URLVariables(); if (event.target.data == "highScore") { displayEnterHighScore(); } else { if (_gameType == 1) { displayGameOverTime(); } if (_gameType == 2) { displayGameOver(); } } } private function displayEnterHighScore() { _enterHighScore = new EnterHighScore(); _enterHighScore.x = 375; _enterHighScore.y = 275; addChild(_enterHighScore); _enterHighScore.nameTxt.text = ''; _enterHighScore.enter_btn.addEventListener(MouseEvent.CLICK, enterHighScore); } private function enterHighScore(event:MouseEvent) { if(_enterHighScore.nameTxt.text != '') { var addURL:URLRequest = new URLRequest ("http://www.phatt.net/memory/memory.php"); addURL.method = URLRequestMethod.GET; var variables:URLVariables = new URLVariables(); variables.reqType = "add"; variables.gameType = _gameType; variables.numPlayers = _numPlayers; variables.difficulty = _playerDiff[1]; variables.plyName = _enterHighScore.nameTxt.text; if (_gameType == 1) { variables.score = _timeAttackSeconds; } else { variables.score = _playerScores[0]; } addURL.data = variables; var loader:URLLoader = new URLLoader (addURL); loader.addEventListener(Event.COMPLETE, loadHighScores); loader.load(addURL); } } private function loadHighScores(event:Event):void { var addURL:URLRequest = new URLRequest ("http://www.phatt.net/memory/memory.php"); addURL.method = URLRequestMethod.GET; var variables:URLVariables = new URLVariables(); variables.reqType = "get"; variables.gameType = _gameType; variables.numPlayers = _numPlayers; variables.difficulty = _playerDiff[1]; variables.plyName = _enterHighScore.nameTxt.text; if (_gameType == 1) { variables.score = _timeAttackSeconds; } else { variables.score = _playerScores[0]; } addURL.data = variables; var loader:URLLoader = new URLLoader (addURL); loader.addEventListener(Event.COMPLETE, displayHighScores); loader.load(addURL); } private function displayHighScores(e:Event):void { var highScores:XML = new XML(e.target.data); var scores:Array = new Array(); var seconds:String; var minutes:Number; var secs:Number; _displayHighScores = new DisplayHighScores; _displayHighScores.x = 375; _displayHighScores.y = 275; addChild(_displayHighScores); removeChild(_enterHighScore); trace(highScores.entry.length()); for(var i:Number = 0; i < highScores.entry.length(); i++) { if(_gameType == 1) { minutes = Math.floor(highScores.entry[i].score.text()/60); secs = Number(highScores.entry[i].score.text()); secs = secs%60; if (secs < 10) { seconds = '0' + String(secs); } else { seconds = String(secs); } scores[i] = minutes + ':' + seconds; } else { scores[i] = highScores.entry[i].score.text(); } } _displayHighScores.highScore1.text = highScores.entry[0].plyname.text(); _displayHighScores.highScore1.appendText(" - "); _displayHighScores.highScore1.appendText(scores[0]); _displayHighScores.highScore2.text = highScores.entry[1].plyname.text(); _displayHighScores.highScore2.appendText(" - "); _displayHighScores.highScore2.appendText(scores[1]); _displayHighScores.highScore3.text = highScores.entry[2].plyname.text(); _displayHighScores.highScore3.appendText(" - "); _displayHighScores.highScore3.appendText(scores[2]); _displayHighScores.highScore4.text = highScores.entry[3].plyname.text(); _displayHighScores.highScore4.appendText(" - "); _displayHighScores.highScore4.appendText(scores[3]); _displayHighScores.highScore5.text = highScores.entry[4].plyname.text(); _displayHighScores.highScore5.appendText(" - "); _displayHighScores.highScore5.appendText(scores[4]); _displayHighScores.highScore6.text = highScores.entry[5].plyname.text(); _displayHighScores.highScore6.appendText(" - "); _displayHighScores.highScore6.appendText(scores[5]); _displayHighScores.highScore7.text = highScores.entry[6].plyname.text(); _displayHighScores.highScore7.appendText(" - "); _displayHighScores.highScore7.appendText(scores[6]); _displayHighScores.highScore8.text = highScores.entry[7].plyname.text(); _displayHighScores.highScore8.appendText(" - "); _displayHighScores.highScore8.appendText(scores[7]); _displayHighScores.highScore9.text = highScores.entry[8].plyname.text(); _displayHighScores.highScore9.appendText(" - "); _displayHighScores.highScore9.appendText(scores[8]); _displayHighScores.highScore10.text = highScores.entry[9].plyname.text(); _displayHighScores.highScore10.appendText(" - "); _displayHighScores.highScore10.appendText(scores[9]); _displayHighScores.next_btn.addEventListener(MouseEvent.CLICK, nextScreen) } private function nextScreen(event:MouseEvent) { removeChild(_displayHighScores); if (_gameType == 1) { displayGameOverTime(); } else { displayGameOver(); } } // Displays the gameover splash screen for Time Attack private function displayGameOverTime():void { _gameOverTime = new GameOverTime(); _gameOverTime.x = 375; _gameOverTime.y = 275; addChild(_gameOverTime); //removeChild(_dynTimer); var seconds:String; var timeString:String; var minutes:Number = Math.floor(_timeAttackSeconds/60); var secs:Number = _timeAttackSeconds%60; if (secs < 10) { seconds = '0' + String(secs); } else { seconds = String(secs); } timeString = minutes + ':' + seconds; _gameOverTime.finalTimeTxt.text = timeString; _gameOverTime.playAgain_btn.addEventListener(MouseEvent.CLICK, playAgain); _gameOverTime.newGame_btn.addEventListener(MouseEvent.CLICK, newGame); } // Displays the gameover splash screen for Single Player VS and Custom Match Modes private function displayGameOver():void { var winningScore:Number = 0; var winningIndex:Number = 0; _gameOver = new GameOver(); _gameOver.x = 375; _gameOver.y = 275; addChild(_gameOver); _gameOver.scoreP1.text = String(_playerScores[0]); //removeChild(_scoreBoxP1); //removeChild(_multiplier); if (_numPlayers > 1) { _gameOver.P2.alpha = 1; _gameOver.scoreP2.text = String(_playerScores[1]); } if (_numPlayers > 2) { _gameOver.P3.alpha = 1; _gameOver.scoreP3.text = String(_playerScores[2]); } if (_numPlayers > 3) { _gameOver.P4.alpha = 1; _gameOver.scoreP4.text = String(_playerScores[3]); } for (var i:Number = 0; i < _playerScores.length; i++) { if(_playerScores[i] > winningScore) { winningScore = _playerScores[i]; winningIndex = i; trace(winningScore); trace(winningIndex); } } switch (winningIndex) { case 0: _gameOver.winningPlayerTxt.text = 'Player 1'; break; case 1: _gameOver.winningPlayerTxt.text = 'Player 2'; break; case 2: _gameOver.winningPlayerTxt.text = 'Player 3'; break; case 3: _gameOver.winningPlayerTxt.text = 'Player 4'; break; } _gameOver.playAgain_btn.addEventListener(MouseEvent.CLICK, playAgain); _gameOver.newGame_btn.addEventListener(MouseEvent.CLICK, newGame); } // Sets up the game to play again with the previous settings private function playAgain(event:MouseEvent) { if (_gameType != 1) { removeChild(_gameOver); } else { removeChild(_gameOverTime); _timeAttackSeconds = 0; } removeChild(_board); for(var i:Number = 0; i < _cards.length; i++) { removeChild(_cards[i]); } createBoard(); } // Takes the player back to the main menu after the game ends and New Game is pressed private function newGame(event:MouseEvent) { if (_gameType != 1) { removeChild(_gameOver); } else { removeChild(_gameOverTime); } removeChild(_board); for(var i:Number = 0; i < _cards.length; i++) { removeChild(_cards[i]); } _timeAttackSeconds = 0; _numPlayers = 0; for(var o:Number = 0; o < _playerDiff.length; o++) { _playerTypes[o] = 0; } for(var p:Number = 0; p < _playerDiff.length; p++) { _playerDiff[p] = 0; } for(var a:Number = 0; a < _playerScores.length; a++) { _playerScores[a] = 0; } displayMainMenu(); } // Updates TimeAttack Timer private function updateTimer (event:TimerEvent):void { var seconds:String; var timeString:String; _timeAttackSeconds = _timeAttackSeconds + 1; var minutes:Number = Math.floor(_timeAttackSeconds/60); var secs:Number = _timeAttackSeconds%60; if (secs < 10) { seconds = '0' + String(secs); } else { seconds = String(secs); } timeString = minutes + ':' + seconds; _dynTimer.timeTxt.text = timeString; } //Updates Score Boxes private function updateScore (event:TimerEvent):void { if (_scoreToAdd > 0) { var score:Number = (_playerScores[_playerAddScore] - _scoreToAdd) + 100; switch (_playerAddScore) { case 0: _scoreBoxP1.score.text = String(score); break; case 1: _scoreBoxP2.score.text = String(score); break; case 2: _scoreBoxP3.score.text = String(score); break; case 3: _scoreBoxP4.score.text = String(score); break; } _scoreToAdd = _scoreToAdd - 100; } else { _scoreAddTimer.stop(); _scoreAddTimer.reset(); } } // detects current player, and sets up the play for that player private function nextTurn(gameStart:String) { _cpuPickedCard1 = false; _cpuPickedCard2 = false; if (gameStart == "start") { _scoreBoxP1.pillBox.filters = [_glow]; } if (gameStart == "newPlayer") { // if it is the last players turn it goes back to P1 if (_currentPlayer == _numPlayers - 1) { _currentPlayer = 0; } // turn goes to next player else { _currentPlayer++ } // adds glow to current players turn switch (_currentPlayer) { case 0: _scoreBoxP1.pillBox.filters = [_glow]; if (_scoreBoxP2 != null) { _scoreBoxP2.pillBox.filters = null; } if (_scoreBoxP3 != null) { _scoreBoxP3.pillBox.filters = null; } if (_scoreBoxP4 != null) { _scoreBoxP4.pillBox.filters = null; } break; case 1: _scoreBoxP2.pillBox.filters = [_glow]; if (_scoreBoxP1 != null) { _scoreBoxP1.pillBox.filters = null; } if (_scoreBoxP3 != null) { _scoreBoxP3.pillBox.filters = null; } if (_scoreBoxP4 != null) { _scoreBoxP4.pillBox.filters = null; } break; case 2: _scoreBoxP3.pillBox.filters = [_glow]; if (_scoreBoxP1 != null) { _scoreBoxP1.pillBox.filters = null; } if (_scoreBoxP2 != null) { _scoreBoxP2.pillBox.filters = null; } if (_scoreBoxP4 != null) { _scoreBoxP4.pillBox.filters = null; } break; case 3: _scoreBoxP4.pillBox.filters = [_glow]; if (_scoreBoxP1 != null) { _scoreBoxP1.pillBox.filters = null; } if (_scoreBoxP2 != null) { _scoreBoxP2.pillBox.filters = null; } if (_scoreBoxP3 != null) { _scoreBoxP3.pillBox.filters = null; } break; } } trace("It is now " + _currentPlayer + "'s turn"); if (_playerTypes[_currentPlayer] == 1) { _cardFilpEnabled = true; for (var c1:Number = 0; c1 < _cards.length; c1++) { if (_matchedCards[c1] == 0) { _cards[c1].addEventListener(MouseEvent.CLICK, _cards[c1].onClick); _cards[c1].addEventListener(MouseEvent.CLICK, sendCard); _cards[c1].buttonMode = true; } } } if (_playerTypes[_currentPlayer] == 2) { _cardFilpEnabled = false; for (var c2:Number = 0; c2 < _cards.length; c2++) { _cards[c2].removeEventListener(MouseEvent.CLICK, _cards[c2].onClick); _cards[c2].removeEventListener(MouseEvent.CLICK, sendCard); _cards[c2].buttonMode = false; } _cpuTurnTimer.start(); } } //CPU turn private function cpuTurn(event:TimerEvent):void { _cpuTurnTimer.stop(); _cpuTurnTimer.reset(); cpuPickCards(); } // CPU picks cards private function cpuPickCards() { var mem:Array = new Array(); switch (_currentPlayer) { case 0: mem = _player1Mem; break; case 1: mem = _player2Mem; break; case 2: mem = _player3Mem; break; case 3: mem = _player4Mem; break; } // if no cards has been picked, look for matches in memory if (_cpuPickedCard1 == false && _cpuPickedCard2 == false) { trace('looking for matched cards') for(var i:Number = 0; i < _cards.length; i++) { if (_matchedCards[i] == 0) { for(var o:Number = 0; o < _cards.length; o++) { if(i != o && _matchedCards[o] == 0 && mem[i] == mem[o] && mem[i] != '') { _cpuPickedCardNum1 = i; _cpuPickedCardNum2 = o; _cpuPickedCard1 = true; _cpuPickedCard2 = true; trace('a matched pair has been found'); } } } } } // if no card has been picked yet, choose one card randomly if (_cpuPickedCard1 == false && _cpuPickedCard2 == false) { trace('looked for matched cards, now looking for random card'); var randomCard:Number = 0; while(_cpuPickedCard1 == false) { randomCard = Math.floor(Math.random() * 41); if (mem[randomCard] == '' && _matchedCards[randomCard] == 0) { _cpuPickedCardNum1 = randomCard; _cpuPickedCard1 = true; trace('choose random card 1'); } } } if (_cpuPickedCard1 == true && _cpuPickedCard2 == false && _firstCard != undefined) { // looked to see if the first choosen card is a known type trace('looking to see if the first choosen card is a known type') for (var t:Number = 0 ; t < _cards.length; t++) { if (_cpuPickedCard2 == false) { if((String(_cards[_cpuPickedCardNum1]._type) == mem[t]) && (t != _cpuPickedCardNum1)) { _cpuPickedCardNum2 = t; _cpuPickedCard2 = true; trace('the first choosen card was a known type'); } } } if (_cpuPickedCard2 == false) { trace('no 2nd card matches'); var randomCard2:Number = 0; while(_cpuPickedCard2 == false) { randomCard2 = Math.floor(Math.random() * 41); if (mem[randomCard2] == '' && _matchedCards[randomCard2] == 0 && randomCard2 != _cpuPickedCardNum1) { _cpuPickedCardNum2 = randomCard2; _cpuPickedCard2 = true; trace('choose second card'); } } } } cpuSendCard(); } //CPU opponets remember cards function private function rememberCards(card_:String, cardT_:String) { var card:String = card_; var cardT:String = cardT_; for(var i:Number = 0; i <= 3; i++) { if(_playerTypes[i] == 2) { rollDie(); trace('Player ' + i + ' rolls a ' + _die); var diff:Number = _playerDiff[i]; var target:Number if (_currentPlayer == i) { target = _diffTargetTurn[diff]; } else { target = _diffTarget[diff] } if (_die <= target) { switch (i) { case 0: trace("Player 0 remebers"); storeCard(card, cardT, _player1Mem); break; case 1: trace("Player 1 remebers"); storeCard(card, cardT, _player2Mem); break; case 2: trace("Player 2 remebers"); storeCard(card, cardT, _player3Mem); break; case 3: trace("Player 3 remebers"); storeCard(card, cardT, _player4Mem); break; } } } else { trace('Player ' + i + 'did not roll'); } } } // Stores card info in computer Memory private function storeCard(card_:String, cardT_:String, playerMem:Array) { for (var i:Number = 0; i < _cards.length; i++) { if(_cards[i].name == card_) { playerMem[i] = cardT_; trace(_cards[i].name); } } } //rolls Die private function rollDie():void { _die = Math.floor(Math.random() * 10); } } }