//////////////////////////////////////////////////////////////
// Purpose: This class will setup the Arrays neccessary for
// cards to be displayed on the screen. These cards
// have no functionality, and just being able to see
// the cards will complete this lab
//
// Grade: 100/100
//////////////////////////////////////////////////////////////
class CardArraySetup
{
///////////////////////////////////////////////////////////////////////
// Singleton setup so that this class can be used throughout the
// project
private static var instance : CardArraySetup = new CardArraySetup();
public static function GetInstance() : CardArraySetup
{
return instance;
}
///////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// NOTE: You will be using the variables here for rows and column when
// you are creating the multi-dimensional array later in this lab
private var rows : int = GameScript.rows;
private var cols : int = GameScript.cols;
/////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
// **** TODO **** (20 points)
// You are going to have to create 3 different types of arrays
//////////////////////////////////////////////////////////////////////////////////////
// Code Explanation:
// The first two are going to be Javascript arrays, while the last one
// will be an ArrayList.
// One of the Javascript arrays will be used for storing the total number of cards
// available in this game
// The second array will be used to form the multi-dimensional grid later on in this
// lab.
// The final variable, the ArrayList will be holding only two cards at a time,
// the cards that were actually flipped.
//////////////////////////////////////////////////////////////////////////////////////
// Declare two new Arrays and one new ArrayList here. Make sure you name them appropriate
// to what they will be used for. Make sure they are PRIVATE variable declarations, scope them
// in correctly, and create them as new empty declarations. This means you will need
// to set them equal to new empty Arrays.
// Type your 3 variable declarations right below here:
private var RoboCard : Array = new Array ( ) ;
private var GridRunner : Array = new Array ( ) ;
private var HeelFlips : ArrayList = new ArrayList ( ) ;
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
// Code Explanation
// Accessor function to this class
// In order to be used elsewhere in the code, and to follow with proper object oriented
// principles, we do not want the user to have direct access to the code. So instead, we use
// functions called Accessors to allow for other portions of the code to have access to the
// variables you have created.
// This means that you will be using functions that send your variable to be used elsewhere.
// One way to do this is to return data from a function. Next lab you will be going over functions
// and returns, but with your next todo you need to give access to the variables you created above
// using the return keyword, giving other code found in this project access to the arrays
////////////////////////////////////////////////////////////////////////////////////////////////
// Access to the arrays
function GetCardArray() : Array
{
// TODO (5 points)
// You will need to return the Array that you declared above
// using the return keyword and then the name of the array representing
// the array holding the total number of cards
return RoboCard ;
}
function GetGridArray() : Array
{
// TODO (5 points)
// You will need to return the Array you declared above
// using the return keyword and then the name of the Array representing
// the multi-dimensional grid that will be created later
//return grid :
return GridRunner;
}
function GetCardsFlippedArray() : ArrayList
{
// TODO (5 points)
// You will need to return the arraylist that you declared above
// using the return keyword and the name of the ArrayList representing
// the two cards that have been flipped over
return HeelFlips ;
}
function ResetCardsFlipped()
{
// TODO (5 points)
// You are going to need to reset your arraylist that you declared above.
// In order to reset the arraylist, if you set the variable to a new ArrayList
// again, without needing to re-declare it, it will erase whatever data is found
// inside of the ArrayList. Remember, do not give it a type, or precede it with a
// var keyword for this part.
HeelFlips = new ArrayList ();
}
/////////////////////////////////////////////////////////////////////////////////////
// Code Explanation:
// This function is going to setup the grid array you created earlier to be
// multi-dimensional and will be using two for loops to create both rows and
// columns for the grid
// TIP: This is VERY similar to the lecture notes found for Arrays, and using those
// will be helpful in completing this lab!
function GridSetup()
{
// TODO (20 points)
// Create a multi-dimensional array here to hold the cards for the grid. It should loop
// through the rows and columns sizes given to you at the top of the file. Use the array designated
// for the grid you declared above.
for ( var x : int = 0 ; x < rows ; x ++) {
GridRunner [ x ] = new Array ( );
for ( var y : int = 0; y < cols ; y ++) {
// HINT: Check the lecture notes to see a similar example of setting up a multi-dimensional
// array
// Now within the second nested for loop you need to perform a few other operations found below:
/////////////////////////////////////////////////////////////////////
// Uncomment this line of code, but replace the <> with the array
// name for your total card array you created above.
// Make sure the dot operator (.) remain!!
// This line of code will store a random number into the variable someNum
//////////////////////////////////////////////////////////////////////
// Code Explanation:
// Still within this nested for loop, you need to perform two more
// actions using the random number created above that you
// commented back in. This random number creates an integer between
// 0 and the total number of cards in your total card array
var someNum : int = Random . Range ( 0 , RoboCard . length ) ;
// TODO (20 points)
// A) The first step is to set the current location of multi-dimensional array equal
// to the random index of your total card array using the someNum variable
// Use the counter created in both of the for loops to access the current location
GridRunner [ x ] [ y ] = RoboCard [someNum] ;
// TODO (20 points)
// B) The second step requires you to remove the information from your total
// card array at the same random location. The reason
// is so that we can get rid of the card that was set just before so it wont be used
// again.
// HINT: Use the API scripting reference for Unity 3D and search for Arrays to find
// the correct method to perform this action
RoboCard . RemoveAt ( someNum ) ;
}
}
}
}