连接4从右到左的对角线检查

时间:2017-03-22 21:01:05

标签: java android methods

这可能是一个非常简单的解决方案,但我无法弄清楚我做错了什么。我正在用连接4的android studio制作一个小游戏。有一个5x7矩阵的单个单元格,以及5个上面的图像视图,当点击时放置一个正确的位置。到目前为止,一切正常。然而,当我必须检查是否有人获胜时,我想我可以在4个主要功能中分解过程:一个是水平检查,一个是垂直检查,一个是对角线从左到右,另一个是从右到左。现在他们都完美地工作,除了从右到左。我将发布以下代码:

private void checkRightLeftDiagonally() {
    int winCondition = 0;
    boolean goingRight = true;
    int y = 1;
    int i = 4;
    int j = 0;
    while (y < 6 && won == false) {
        while (i > 0 && j < 7 && won == false) {
            if (cells[j][i].getFull() == true && players[playerTurn].getFicheColor() == cells[j][i].getFicheColor()) {
                winCondition++;
                winningCells.add(cells[j][i]);
            } else {
                winCondition = 0;
                winningCells.clear();
            }

            if (winCondition == 4) {
                won = true;
                for (int x = 0; x < 4; x++) {
                    winningCells.get(x).won();
                }
            }
            i--;
            j++;
        }

        if(goingRight == true)
        {
            if(y<=4)
            {
                i=4-y;
                j=0;
                y++;
            }
            else
            {
                goingRight = false;
                y=0;
                i=0;
                j=0+y;
            }
        }

        if(goingRight == false)
        {
            i=0;
            j=0+y;
            y++;
        }

        if(won == false)
        {
            winCondition = 0;
            winningCells.clear();
        }


    }
    if(won == false) {
        winCondition = 0;
        winningCells.clear();
    }

    }

这是箭头imageview代码之一:

imgArrows[0].setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(cells[0][0].getFull() == false && won == false)
            {
                int i = 0;
                while(cells[i][0].getFull() == false)
                {
                    i++;
        if(i>6) break;
                }

        i--;

                cells[i][0].ficheDown(players[playerTurn]);

                checkVertically();
                checkHorizantally();
                checkLeftRightDiagonally();
                checkRightLeftDiagonally();





                playerTurn++;
                if(playerTurn==2)
                {
                    playerTurn = 0;
                }


            }
        }
    });

我还制作了细胞类,如果可以帮到你的话就在这里

public class Cell {
private boolean full;
private Player.FicheColor ficheColor;
private ImageView fiche;

public Cell(Player currentPlayer, ImageView img)
{
    full = false;
    ficheColor = currentPlayer.getFicheColor();
    fiche = img;
    img.setAlpha(0f);
}

public void ficheDown(Player currentPlayer)
{
    full = true;
    ficheColor = currentPlayer.getFicheColor();
    switch(ficheColor)
    {
        case red:
            fiche.setImageResource(R.drawable.redfiche);
            break;

        case blue:
            fiche.setImageResource(R.drawable.bluefiche);
            break;

        case green:
            fiche.setImageResource(R.drawable.greenfiche);
            break;

        case white:
            fiche.setImageResource(R.drawable.whitefiche);
            break;

        case black:
            fiche.setImageResource(R.drawable.whitefiche);
            break;
    }
    fiche.setAlpha(1f);

}

public Player.FicheColor getFicheColor()
{
    return ficheColor;
}

public boolean getFull()
{
    return full;
}

public void won(){
    fiche.setColorFilter(Color.GREEN);
}

public void reset()
{
    fiche.clearColorFilter();
}

}

非常感谢,即使只是为了阅读

1 个答案:

答案 0 :(得分:0)

最后问题是在第一段代码中,我需要将int设置为4并解决它。感谢所有试图帮助我的人