基本上我在java中创建一个棋盘游戏,并设法使用数组创建一个看起来像10x10网格的单元格。现在我把它们编号为从左到右从上到下(如图) 我正在创造一个类似于蛇和梯子游戏的游戏,但它有自己的转折。
问题是:如何制作类似于蛇和蛇的锯齿形板梯板?
目前的情况如下:
下面的代码是创建数组并打印并编号的必要条件。
名为Game的对象:
private Cell[][] cell = new Cell[10][10];
public Game(String nameIt)
{
super(nameIt);
JPanel x = new JPanel();
x.setLayout(new GridLayout(10, 10, 2, 2));
for (int r = 0; ir< 10; r++)
for (int c= 0; c < 10; c++)
x.add(cell[r][c] = new Cell(r, c, this));
}
对象命名为单元格:
private int row;
private int col;
private int cellNum;
static int count = 0;
public Cell(int row, int column, Game guy)
{
this.ro = row;
this.col = column;
this.parent = guy;
count = count+1;
cellNum = count;
setBorder(new LineBorder(Color.BLUE, 1)); // Set cell's border
}
protected void paintComponent(Graphics p)
{
super.paintComponent(p);
p.drawString(String.valueOf(" " + cellNo), 24, 24);
}
答案 0 :(得分:5)
好的,所以我不会为您编写确切的代码,但我会向您展示如何使用常规2D数组执行此操作的示例。我现在只有一个C ++编译器可用,但它应该足够清楚:
所以基本上你需要循环遍历行从头到尾。这就是为什么第一个外部循环从9变为0.这将从底行开始并在顶行完成,从而反转。
for (int i = 9; i >= 0; i--) {
// now the trick to making a "zig-zag" is to alternate between two ways
// of printing out each row. if i is even, you print out from right to left
if (i % 2)
for (int j = 9; j >= 0; j--)
cout << numbers[i][j] << "\t";
// and if i is odd, you print it out from left to right
else
for (int j = 0; j < 10; j++)
cout << numbers[i][j] << "\t";
cout << endl;
}
结果: