Android LinearLayout如何访问矩阵中的单元格

时间:2014-11-29 12:34:22

标签: android matrix android-linearlayout

我正在开发一款Tic-Tac-Toe游戏,其尺寸为N * N而不是3 * 3,我正在使用ImageView来实现游戏板。

作为一个开始,我试图将电路板实现为一个矩阵,我可以在其中访问任何单元格,因为我正在使用AI添加单个播放器模式。

在onCreate方法中在屏幕上构建电路板的代码是:

    //defining the board and parameters
    main = new LinearLayout(this);
    main.setOrientation(LinearLayout.VERTICAL);
    LayoutParams params = new LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    main.setLayoutParams(params);
    //implementing the board
    for (int j = 0; j < k; j++) {
        row = new LinearLayout(this);
        row.setOrientation(LinearLayout.HORIZONTAL);
        row.setLayoutParams(params);
        for (int i = 0; i < k; i++) {
            //drawing empty spaces in the squares, player=1 is for the player and player=2 is for the AI
            player=0;
            MyImageView cell = new MyImageView(this,player); //code that draws on the board using MyImageView - a class that extends ImageView
            Board[j][i]=player;
            cell.setLayoutParams(new LayoutParams(width / k, width / k));
            cell.setOnClickListener(this);
            row.addView(cell);
        }
        main.addView(row);
    }
    setContentView(main);

k是电路板矩阵的顺序。

现在,我的问题是我不知道如何通过MainActivity类访问某个单元格并在其中绘制一个Circle,因为播放器是X而AI是圆形。

我只需要帮助实现电路板,这样我就可以访问它上面的任何单元格。

1 个答案:

答案 0 :(得分:0)

您需要一个坐标系统和一种识别不同细胞的方法。例如,每个单元格都可以获得这样的id

cell.setId(numCells++);

其中numCells在第一个for循环之前设置为0.

另一种方法是创建网格并将坐标存储在单元格的标记中:

cell.setTag(tag)

标签是     tag = String.valueOf(j)+“x”+ String.valueOf(i)

或者您可以将所提到的单元格的ID存储在数组网格中,并根据网格中的位置访问右侧单元格。

编辑:

您可以致电:

访问特定销售
cellToDrawIn = findViewById(AI-prefered cell ID);

cellToDrawIn = findViewByTag(AI-prefered cell TAG);

如何获取ID或标签取决于AI如何计算圈子的位置。

记住,这是许多可能的解决方案之一...

GridView是不可能的?