JAVA中的随机动作

Random actions in JAVA

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

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

选择错误的输入是可以的,因为movepiece方法已经检查了ints是否不在棋盘的边界之外,是否真的达到了当前玩家的颜色,是否有一个棋子在协调中,并且它不是空的,等等。

但我如何随机得到这4个整数呢?如何使它们尽可能接近"真实"输入(这样我就不会花费大量时间取消错误输入的资格)?

多谢了:D


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

http://docs.oracle.com/javase/6/docs/api/java/util/random.htmlhttp://DOCS.Oracle .COM/JavaSe/ 6 /DOCS/API/Java/Lang/Maunix.html随机化()

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

1
2
3
4
5
6
int x = new Random().nextInt(4);
int y = (int) (Math.random() * 4);

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

>> 2 3


如果你真的想创造一个随机移动的电脑玩家,我想最好这样做:

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


    你不需要4分。你只需要一个。

    一种方法:

  • 重复板上的部分。
  • 对于每个工件,确定其可用移动并将所有可用移动粘贴到列表中。
  • 从列表中随机选择一个动作(如果你觉得有这种倾向,也可以选择非随机动作)。