Return to Kroll Web Design home page Return to Flash / ActionScript page
« Return

Action Script 2 code for the 'Memory' Flash game:

//------------------------------------------------------------	
//SECTION 1: GAME HAS NOT STARTED YET. IT WILL BEGIN IF USER CLICKS ON THE 'START GAME' BUTTON:

stop();

start_btn.onRelease = function() {
	nextScene();
}
 	
	
//------------------------------------------------------------	
//SECTION 2: GAME HAS BEGUN. INITIALIZE THE PHOTO GRID AND DO OTHER PROCESSING:

// This is the "load_grid" frame

MovieClip.prototype.photo = 7;

// Number of cards in each row. 5 across, for example:
var cardsPerRow:Number = 5;

// Number of rows of cards. 4 down, for example:
var rows:Number = 4;

// Card width:
var cardWidth:Number = 100;

// Card height:
var cardHeight:Number = 90;

// Shift the entire card grid to the right by this amount:
var offsetFromLeftAnswer:Number = -75;
var offsetFromLeftCover:Number = -30;

// Shift the entire card grid down by this amount:
var offsetFromTop:Number = -70;

// Source Data table:
var sourceData = new Array("0","1","2","3","4","5","6","7","8","9");

var duplicatedData = new Array;

var myTimeDelayIsActive:Boolean = false;

var instanceName:String;
var photo1IinstanceName:String;
var photo2InstanceName:String;

var i:Number;
var j:Number;
var totalCards:Number = cardsPerRow * rows;
var cardId:Number = 0;
var clickedCover1:String;
var clickedCover2:String;
var clickedCoverNumber:Number;
var flip2Allowed:Boolean;
var photo1:String;
var photo2:String;
var elapsedSeconds:Number = 0;
var matchedPairs:Number = 0;

//START A TIMER FOR ELAPSED TIME
var myInterval = setInterval(this,"callMe",1000);

function callMe() {	
	elapsedSeconds++;		
	elapsedTime = formatTime(elapsedSeconds);
		
	if (gameOver == true) {
		clearInterval(myInterval);
		nextScene();
		}
}

function formatTime(t:Number):String {
    // returns the minutes and seconds with leading zeros
    // for example: 70 returns 01:10
       var s:Number = Math.round(t);
       var m:Number = 0;
       
       m = Math.floor(t / 60);
       s = t % 60;
       
       if (t = 0)
       {
         return "00:00";
       }
       else
       {
       return String((m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s);
       }
}

//DUPLICATE THE SOURCE DATA INTO AN ARRAY THAT SHOWS EACH ANSWER TWICE:
for (i=0; i 0) //if a card is already visible, don't make it clickable
{
	
	this._alpha = 0;
	_root.clickedCover1 = this._name; // name of the cover that was clicked
		
	clickedCoverNumber = _root.clickedCover1.substr(4);
			
	// by now, cardId is 20 from the looping, so you can't use cardId to build photo1InstanceName.
	// Instead, strip off the number from the end of the cover's instance name and use that:	
	photo1InstanceName = "info" + clickedCoverNumber;		                                         
					 
	_root.photo1 = _root.photonum_mc[photo1InstanceName].photo;
			
	flip2Allowed = true;	
	gotoAndStop("flip2");	

} // end of test for alpha > 0		
} // end of onRelease function
} // end of for loop

stop();


//------------------------------------------------------------
//SECTION 4: PROCESSING FOR WHEN SQUARE TWO OF TWO IS CLICKED ON:

for (cardId=0; cardId 0) //if a card is already visible, don't make it clickable
{	
	
	if (flip2Allowed == true)
	{
	
	this._alpha = 0;
	_root.clickedCover2 = this._name;
		
	// If same card is clicked twice, conceal it and start over:
	if (_root.clickedCover1 == _root.clickedCover2) 
	{		
	this._alpha = 100;
	gotoAndStop("flip1");
	}		
	
	clickedCoverNumber = _root.clickedCover2.substr(4);
			
	photo2InstanceName = "info" + clickedCoverNumber;		                                         
		
	_root.photo2 = _root.photonum_mc[photo2InstanceName].photo;
					
	if (_root.photo1 == _root.photo2) // the photos match, you're all set, leave both visible and
	                                  // return to flip1 to start the next pair.
	{
		matchedPairs++;
		
		if (matchedPairs >= ((cardsPerRow * rows)/2))
        {
			clearInterval(myInterval);
			play();
		}
		else
		{		
		    gotoAndStop("flip1");
		}
	}
	else // the photos don't match, so after one second hide them.
	{
		flip2Allowed = false;		
		myTimeDelay = setInterval(
            function () {	            
            covers_mc[_root.clickedCover1]._alpha = 100;
            covers_mc[_root.clickedCover2]._alpha = 100;            
            clearInterval(myTimeDelay); 
			gotoAndStop("flip1");},800);		
    }
	
	} // end of if (flip2Allowed == true) bracketed code 

} // end of test for cards that are hidden		
} // end of onRelease function
} // end of for loop

stop();


//------------------------------------------------------------
//SECTION 5: GAME IS COMPLETE. RE-START GAME IF USER CLICKS ON THE 'PLAY AGAIN' BUTTON:

stop();

playAgain_btn.onRelease = function() {
	gotoAndStop("load_grid");
}



©2009 Kroll Web Design    davidarthurkroll@verizon.net    781.449.2129

Valid XHTML 1.0 Transitional Valid CSS!