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個のカードオブジェクトがロードされており、各プレーヤーが独自のデッキを持つことができるように配列を分割しようとしています。

デバッグ用のコンソールウィンドウ:http://puu.sh/2dqZm

4

3 に答える 3

0

問題は、これらのロギングステートメントにあります。

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

firstsecondはへの有効なインデックスですsuffledDeckが、各プレイヤーのデッキにはカードの数が半分しかありません。またはjの代わりに、両方のロギングステートメントで添え字として使用してみてください。firstsecond

また、ループをj < 26ではなく、に制限する必要がありますj <= 26。現状では、各プレイヤーのデッキに27枚のカードを入れようとしています。

于 2013-03-07T05:31:15.703 に答える
0

私は問題があると信じていますvar ranNum = Random.Range(1,Deck.length)

ranNumDeck.length - 1配列インデックスは 0 (1 ではない) から始まるため、0 ~ の間のランダムなインデックスを生成する必要があります。

于 2013-03-07T05:30:50.070 に答える
0

なぜなら:

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

ここでsecondは、配列にゼロの項目が 1 つしか含まれていないのに対し、値は 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 に答える