2013-03-13 60 views
0

我一直在努力编写Unity中的纸牌游戏战争,有些在战争功能中,我输了2张牌。有没有更简单的方法来做到这一点,或者是否有人让我知道我做错了什么?我怎样才能写出纸牌游戏的功能,战争,更清洁?

while(Flipped1[Flipped1.length-1].CardValue == Flipped2[Flipped2.length-1].CardValue) 
{ 
    for(var i= 0; i < 3; i++) 
    { 
     //adds a card from the players hand to the flipped pile 
     Flipped1.Add(playerOneCards[0]); 
     Flipped2.Add(playerTwoCards[0]); 

     //removes card from the array. 
     playerOneCards.RemoveAt(0); 
     playerTwoCards.RemoveAt(0); 
    } 

    p1War = Flipped1[Flipped1.length-1].img; 
    p2War = Flipped2[Flipped2.length-1].img; 

    Debug.Log(Flipped1[i].CardValue); 
    Debug.Log(Flipped2[i].CardValue); 

    Debug.Log(Flipped1[0].CardValue); 
    Debug.Log(Flipped2[0].CardValue); 

    if(Flipped1[i].CardValue < Flipped2[i].CardValue) 
    {               
     for(var j =0; j < Flipped1.length +2 || j < Flipped2.length+2; j++) 
     { 
      playerTwoCards.Add(Flipped1[0]); 
      playerTwoCards.Add(Flipped2[0]); 

      //removes card from the array. 
      Flipped1.RemoveAt(0); 
      Flipped2.RemoveAt(0); 
     } 
    } 

    else 
    { 
     for(var q =0; q < Flipped1.length+2|| q < Flipped2.length+2; q++) 
     { 
      playerOneCards.Add(Flipped2[0]); 
      playerOneCards.Add(Flipped1[0]); 

      //removes card from the array. 
      Flipped1.RemoveAt(0); 
      Flipped2.RemoveAt(0); 
     } 
    } 
} 
+0

您的'for'循环遍历'i',然后关闭。向下几行,你做if语句:'if(Flipped1 [i] .CardValue Joetjah 2013-03-14 08:00:27

回答

0

你的问题是在for循环(在if/else内)的逻辑中。你实际上想做出类似于while (Flipped1.length > 0)的东西,因为你要做的是清空Flipped数组,而不是有效地将它与增量变量var和常量比较。

+0

做出这样的改变后,我结束了一个索引小于0或莫尔大于或等于列表数 – 2013-03-13 20:22:09

+0

索引?什么索引?您只需循环翻转列表,每次从底部拉一个,并将其添加到玩家卡列表中。对于这个问题,如果你不介意顺序有点不同,你可以使用内置的连接函数。另外,我非常肯定你想在if检查之前关闭第一个while循环。 – 2013-03-14 13:36:57

+0

多数民众赞成多多少少我想我结束了弄清楚,我有一个循环运行时间更长,然后我需要。 – 2013-03-15 04:14:43