JAVA中的随机操作

JAVA中的随机操作,java,random,chess,Java,Random,Chess,我正在用Java编写自己的第一个国际象棋游戏。 我的代码已经适用于两个玩家,通过键盘手动播放,我想将其扩展到一个对抗电脑游戏的玩家 我的问题是,我从未处理过随机行为。 在板上移动工件的方法需要接收4个输入: 两个整数表示工件位置,两个整数表示线路板上的目的地 选择错误的输入是可以的,因为movePiece方法已经检查了int是否超出了棋盘的边界,它们是否真的达到了当前玩家的颜色,协调中是否有一块,它是否为空,等等 但是我如何随机得到这4个整数呢?我如何使它们尽可能接近真实的输入,这样我就不会花太

我正在用Java编写自己的第一个国际象棋游戏。 我的代码已经适用于两个玩家,通过键盘手动播放,我想将其扩展到一个对抗电脑游戏的玩家

我的问题是,我从未处理过随机行为。 在板上移动工件的方法需要接收4个输入: 两个整数表示工件位置,两个整数表示线路板上的目的地

选择错误的输入是可以的,因为movePiece方法已经检查了int是否超出了棋盘的边界,它们是否真的达到了当前玩家的颜色,协调中是否有一块,它是否为空,等等

但是我如何随机得到这4个整数呢?我如何使它们尽可能接近真实的输入,这样我就不会花太多时间去取消不良输入的资格


非常感谢:D

Java提供了至少两个选项来生成随机值:

例如,要获得以4为界的随机int值:

int x = new Random().nextInt(4);
int y = (int) (Math.random() * 4);

System.out.println(x + " " + y);

>> 2 3

如果你真的想创建一个随机移动的电脑播放器,我认为最好是这样做:

随机选择棋盘上现有的一个棋子 计算棋子可以移动到的所有合法目的地 如果没有合法目的地,请从以前未选择的物品中选择新物品 随机选择一个计算的合法目的地
然而,让电脑播放器随意移动是相当愚蠢的。电脑玩家需要某种形式的逻辑来比较两个动作中哪一个更好。实现这样的逻辑可能相当复杂,您最好按照评论中的建议使用国际象棋库。

您不需要4个整数。你只需要1个

一种方法是:

在棋盘上迭代棋子。 对于每个工件,确定其可用移动,并将所有可用移动粘贴到列表中。 如果你愿意,从列表中随机或非随机选择一个动作。
六羟甲基三聚氰胺六甲醚。。奇怪的方法。国际象棋不应该是棋盘上随机移动的棋子。有很多国际象棋游戏库。你为什么不试着在游戏中使用它们中的一个呢?是的,正如艾弗罗斯所说,你必须让计算机像人类一样思考。我需要随机动作来模拟计算机与玩家的游戏,但我不需要复杂的算法。只是一些可以移动碎片的东西。