« 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");
}