我正在开发一款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是圆形。
我只需要帮助实现电路板,这样我就可以访问它上面的任何单元格。
答案 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是不可能的?