繁体   English   中英

为什么我的循环只看到第一个数组元素的值?

[英]why is my loop only seeing the value of the first array element?

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

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

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

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

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

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

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

因为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM