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

4

3 回答 3

0

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

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

于 2013-03-07T05:30:50.070 回答
0

问题在于这些日志记录语句:

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

firstsecond是 的有效索引suffledDeck,但每个玩家的牌组只有一半的牌。尝试j在两个日志记录语句中使用作为下标而不是firstor second

您还应该将循环限制为j < 26,而不是j <= 26。实际上,您试图在每个玩家的牌组中放置 27 张牌。

于 2013-03-07T05:31:15.703 回答
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;        
  }
于 2013-03-07T05:39:07.403 回答