Hi guys, I bought the book Unity Game Development by Example Beginner’s Guide.
And in chapter 5, Making a robot repair game, i keep getting this error
ArgumentOutOfRangeException: Index is less than 0 or more than or equal to the list count.
The error is from 12th line inside Start() Function just below the Random.Range code
I dont know how to solve this issue, Please help…
Here is the code…
var cols:int = 4; // the number of columns in the card grid
var rows:int = 4; // the number of rows in the card grid
var totalCards:int = cols*rows; // I think the answer is 16, but I was never good with numbers.
var matchesNeededToWin:int = totalCards * 0.5; // If there are 16 cards, the player needs to find 8 matches to clear the board
var matchesMade:int = 0; // At the outset, the player has not made any matches
var cardW:int = 100; // Each card's width and height is 100 pixels
var cardH:int = 100;
var aCards:Array; // We'll store all the cards we create in this Array
var aGrid:Array; // This array will keep track of the shuffled, dealt cards
var aCardsFlipped:ArrayList; // This array will store the two cards that the player flips over
var playerCanClick:boolean; // We'll use this flag to prevent the player from clicking buttons when we don't want him to
var playerHasWon:boolean = false; // Store whether or not the player has won. This should probably start out false :)
function Start()
{
playerCanClick = true; // We should let the player play, don't you think?
// Initialize the arrays as empty lists:
aCards = new Array();
aGrid = new Array();
aCardsFlipped = new ArrayList();
for(var i=0; i<rows; i++)
{
aGrid *= new Array(); // Create a new, empty array at index i*
-
for(var j=0; j<cols; j++)*
-
{*
-
var someNum:int = Random.Range(0,aCards.length);*
_ aGrid*[j] = aCards[someNum];_
_ aCards.RemoveAt(someNum);_
_ }_
_ }_
_ BuildDeck();_
_}*_
class Card extends System.Object
{
* var isFaceUp:boolean = false;*
* var isMatched:boolean = false;*
* var img:String;*
* function Card(img:String)*
* {*
* this.img = img;*
* }*
}
function OnGUI ()
{
* GUILayout.BeginArea (Rect (0,0,Screen.width,Screen.height));*
* BuildGrid();*
* GUILayout.EndArea();*
* print(“building grid!”);*
}
function BuildGrid()
{
* GUILayout.BeginVertical();*
* GUILayout.FlexibleSpace();*
* for(var i=0; i<rows; i++)*
* {*
* GUILayout.BeginHorizontal();*
* GUILayout.FlexibleSpace();*
* for(var j=0; j<cols; j++)*
* {*
_ var card:Object = aGrid*[j];
if(GUILayout.Button(Resources.Load(card.img),GUILayout.Width(cardW)))
{
Debug.Log(card.img);
}
}
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
}
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
}*_
function BuildDeck() {
* var totalRobots:int = 4; // we’ve got four robots to work with*
* var card:Object; // this stores a reference to a card*
* for(i=0; i<totalRobots; i++)*
* {*
* var aRobotParts : Array = [“Head”, “Arm”, “Leg”];*
* for(j=0; j<2; j++)*
* {*
* var someNum:int = Random.Range(0, aRobotParts.length);*
* var theMissingPart:String = aRobotParts[someNum];*
* aRobotParts.RemoveAt(someNum);*
* card = new Card(“robot” + (i+1) + “Missing” + theMissingPart);*
* aCards.Add(card);*
* card = new Card(“robot” + (i+1) + theMissingPart);*
* aCards.Add(card);*
* }*
* }*
}