【发布时间】:2018-10-04 10:25:21
【问题描述】:
我正在尝试制作一个棋盘,当我尝试插入一个棋子时,之前插入的棋子会被新插入的棋子替换。
例如,如果我插入一座塔,然后再插入一匹马,那么这座塔就会变成一匹马。 (我看不到错误)。
public Board() {
this.board = new Position[row][columns];
}
for (int i = 0; i <= 1; i++) {
for (int j = 0; j <= 3; j++) {
if (i == 0) {
switch (j) {
case 0 : pieza0 = new Pieza (PiezasTipo.TORRE,PiezasColor.NEGRO);
pieza0.setId();
this.tablero[i][j].setPieza(pieza0);
pieza0 = new Pieza(PiezasTipo.TORRE, PiezasColor.NEGRO);
pieza0.setId();
this.tablero[i][fila-j].setPieza(pieza0);
pieza0 = new Pieza(PiezasTipo.TORRE, PiezasColor.BLANCO);
pieza0.setId();
this.tablero[columna-i][j].setPieza(pieza0);
pieza0 = new Pieza(PiezasTipo.TORRE, PiezasColor.BLANCO);
pieza0.setId();
this.tablero[columna-i][fila-j].setPieza(pieza0);
case 1 : pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.NEGRO);
pieza0.setId();
this.tablero[i][j].setPieza(pieza0);
pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.NEGRO);
pieza0.setId();
this.tablero[i][fila-j].setPieza(pieza0);
pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.BLANCO);
pieza0.setId();
this.tablero[columna-i][j].setPieza(pieza0);
pieza0 = new Pieza(PiezasTipo.CABALLO, PiezasColor.BLANCO);
pieza0.setId();
this.tablero[columna-i][fila-j].setPieza(pieza0);
我插入所有塔(4:两个黑色和两个白色),然后插入的马和塔变成马。这是一个实例问题还是所有部分都具有相同的内存方向?我不知道。
【问题讨论】:
-
我在您发布的代码中没有看到任何 columna 和 fila 但我认为因为您使用数组,如果您使用 [] 获取数组中的位置,如果您更改它,更改将替换该位置的旧值。没有插入内置数组(我的意思是位置 [] [])发生。您必须使用新的数组副本自行完成,或者如果您喜欢插入,则可以使用 ArrayList 之类的东西。 (ArrayList 还有很多其他功能。
-
我认为问题在于您将人物插入同一个地方,但如果它是高耸的,则应将其放置在马附近而不是马身上。此外,您可以添加一个方法来检查该位置是否有图形,如果是这样,您不应该在那里放置一个新图形
标签: java arrays switch-statement