Arrays 我如何为纸牌游戏War cleaner编写函数?

Arrays 我如何为纸牌游戏War cleaner编写函数?,arrays,unity3d,unityscript,Arrays,Unity3d,Unityscript,我一直在写《Unity》中的纸牌游戏war,有些人在war函数中,我输了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

我一直在写《Unity》中的纸牌游戏war,有些人在war函数中,我输了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);
        }
    }
}
while(Flipped1[Flipped1.length-1].CardValue==Flipped2[Flipped2.length-1].CardValue)
{
对于(变量i=0;i<3;i++)
{
//将玩家手上的一张牌添加到翻转的牌堆中
Flipped1.添加(游戏卡[0]);
Flipped2.添加(playerTwoCards[0]);
//从阵列中移除卡。
游戏卡。移除(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);
如果(Flipped1[i].CardValue
您的问题在于for循环中的逻辑(在if/else中)。实际上,您希望将其设置为
while(Flipped1.length>0)
,因为您尝试的是清空翻转的数组,而不是有效地将其与递增的var减去常量进行比较。

在进行更改后,我得到的索引小于0或小于或等于list countIndex?什么指数?你只是在翻转列表中循环,每次从底部拉出一张,并将其添加到玩家卡列表中。因此,如果您不介意顺序有点不同,可以使用内置的连接函数。另外,我很确定您希望在if检查之前关闭第一个while循环。这就是我所想的,我最终发现我有一个循环运行的时间比我需要的时间长。您的
for
循环在
I
上迭代,然后关闭。在下面几行中,执行if语句:
if(Flipped1[i].CardValue
。这不再在
for
循环中。这可能是问题所在吗?