我正在制作游戏棋,除了一件事之外我几乎得到了所有东西:我需要做到这一点,以便玩家不可能将棋子移动到支票上.我在如何解决这个问题上遇到了麻烦.
我现在在伪代码中生成有效移动的是:类getMoveLocations(我将一个位置定义为国际象棋中的那些方格之一):如果此位置在边界内,并且此位置的棋子是敌人的棋子,AND模拟的移动不会导致板被检查,然后将此位置添加到块可以移动到的可能位置.
这个问题是我如何检查棋盘是否"正在检查".在我的代码中,它通过收集所有敌人的移动位置,并查看是否有任何敌人的移动位置与国王的位置重叠来认为棋盘处于"检查"状态.
不幸的是,这是无限循环开始的地方; 为了收集所有敌人的电影位置,每个敌人的可能移动位置需要确保其移动不会导致它被检查.为了确保没有任何敌人的位置受到控制,它必须收集所有盟友的潜在移动位置等.
我很难理解如何获得一个有效的算法.虽然我的代码"理论上"具有逻辑意义,但它无法实现.我感兴趣的是A)一种更有效的方法来实现检查所有合法移动的方法,或者B)一种修复这种无限循环的方法
如何将a中的每一行JTextArea转换为ArrayList<String>?也就是说,如何检测JTextArea中的换行符?
这是我目前的伪代码实现:
1.有更简单的方法吗?
2.这种实施方式是否适合规模?(我猜不是)