gpt4 book ai didi

java - 重铸 'this'解决方法

转载 作者:行者123 更新时间:2023-12-01 16:59:43 27 4
gpt4 key购买 nike

我正在尝试创建一个简单的国际象棋程序,但在实现典当推广时遇到了一些小问题。我有一个抽象类 Piece 和扩展它的 6 个类(King、Queen、Rook、Knight、Bishop 和 Pawn)。因此,当棋子到达棋盘的另一端时,我希望他变成皇后。

最简单的方法是做这样的事情:

Public class Pawn extends Piece {
...
@Override
public void move(int toCol, int toRow) {
this.col = toCol; this.row = toRow;
if (toRow == endRow)
this = (Queen)this
}
}

这显然是不可能的,因为人们根本无法分配给this

所以我需要检测晋升并从外部进行转换。但由于某些原因,我将片段配置存储了两次。作为棋子的 2D 数组,也作为每个玩家的 2 个棋子列表。这意味着我需要在列表中找到棋子并将其删除,然后添加具有相同坐标的新皇后,然后将她分配给棋盘[col][row]。

我想知道是否有更好的方法。以某种方式从“内部”更改对象的类。

最佳答案

我不明白,你想要完成什么。如果您按照物理国际象棋游戏进行建模,您的棋子将掉落并使用另一个棋子。因此,棋子会从游戏板上移除,并且皇后会插入在棋子之前的位置。 You can not simply change the class of an instance.

关于java - 重铸 'this'解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28639728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com