2013-03-07 136 views
0
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

的统一标记是微软统一。请不要滥用它。 – 2013-03-08 06:50:24

回答

0

我相信问题是var ranNum = Random.Range(1,Deck.length)

ranNum应该生成一个介于0到Deck.length - 1之间的随机索引,因为数组索引从0(不是1)开始。

0

问题是与这些日志记录语句:

Debug.Log(playerOneCards[first].img); 
Debug.Log(playerTwoCards[second].img); 

firstsecond是有效的指标为suffledDeck,但每个玩家的甲板上只有一半的卡。在两个日志语句中使用j作为下标,而不是firstsecond

你也应该限制你的循环到j < 26,而不是j <= 26。事实上,你正试图在每个玩家的套牌中放置27张牌。

+0

但众生的数组从0开始,这意味着当我点击第26个元素时,它会结束 – 2013-03-07 05:37:12

+0

@JoshBanks - 您的循环当前尝试处理27个元素:索引值0,1,2,...,26。最后一次迭代为'j == 25',而不是'j == 26'。 – 2013-03-07 05:53:24

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;   
    } 
+0

我感到哑巴现在我早些时候做了同样的事情,感谢您的帮助。 – 2013-03-07 05:45:14

+0

我的快乐:)给我一个忙,请通过点击绿色打勾和答案来接受所有问题的正确答案。它鼓励用户帮助你。 – 2013-03-07 05:47:50

相关问题