function Deal()
{
var suffledDeck:Array;
var playerOneCards: Array;
var playerTwoCards: Array;
var first:int =0;
var second:int = 1;
suffledDeck = new Array();
playerOneCards = new Array();
playerTwoCards = new Array();
//var CardLeft:int = Deck.length;
for(var i = 0; i < Deck.length; i++)
{
Debug.Log(Deck.length);
var ranNum = Random.Range(1,Deck.length);
suffledDeck.Add(Deck[ranNum]);
Debug.Log("suffled deck: " + suffledDeck.length);
}
//var halfDeck: int = (suffledDeck.length / 2);
for(var j = 0; j <=26 ; j++)
{
Debug.Log(first);
Debug.Log(second);
playerOneCards.Add(suffledDeck[first]);
playerTwoCards.Add(suffledDeck[second]);
Debug.Log(playerOneCards[first].img);
Debug.Log(playerTwoCards[second].img);
first += 2;
second += 2;
}
}
当我开始将数组拆分为2个独立的数组时,它开始忽略除第一个元素之外的每个元素。 suffleDeck []有52个Card对象加载,我试图拆分数组,这样每个玩家都可以拥有自己的套牌。
用于调试目的的控制台窗口:http://puu.sh/2dqZm
答案 0 :(得分:0)
我认为问题是var ranNum = Random.Range(1,Deck.length)
。
ranNum
应生成0到Deck.length - 1
之间的随机索引,因为数组索引从0开始(不是1)。
答案 1 :(得分:0)
问题在于这些日志记录语句:
Debug.Log(playerOneCards[first].img);
Debug.Log(playerTwoCards[second].img);
first
和second
是suffledDeck
的有效索引,但每个玩家的牌组只有一半的牌。尝试使用j
作为两个日志记录语句中的下标,而不是first
或second
。
您还应该将循环限制为j < 26
,而不是j <= 26
。实际上,你试图在每个玩家的牌组中放置27张牌。
答案 2 :(得分:0)
,因为:
Debug.Log(playerTwoCards[second].img);
此处second
值为1,而您的数组只包含一个零项。导致ArgumentoutofRangeException
。
所以试试:
for(var j = 0; j <=26 ; j++)
{
Debug.Log(first);
Debug.Log(second);
playerOneCards.Add(suffledDeck[first]);
playerTwoCards.Add(suffledDeck[second]);
Debug.Log(playerOneCards[j].img);
Debug.Log(playerTwoCards[j].img);
first += 2;
second += 2;
}