JAVA中的随机动作

时间:2013-02-18 13:02:26

标签: java random chess

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

我的问题是,我从未处理过随机动作。 在板上移动一块的方法,需要接收4个输入: 单位的两个整数,以及董事会目的地的两个整数。

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

但是如何随机获得这4个整数?如何使它们尽可能接近“真实”输入(所以我不会花很多时间来取消不良输入)?

非常感谢:D

3 个答案:

答案 0 :(得分:2)

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

http://docs.oracle.com/javase/6/docs/api/java/util/Random.html http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#random()

E.g。得到以4为界的随机int值:

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

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

>> 2 3

答案 1 :(得分:1)

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

  1. 随机选择棋盘上现有的一个棋子
  2. 计算该棋子可以移动的所有合法目的地
  3. 如果没有合法目的地,请在之前未选择的作品中选择一个新作品
  4. 随机选择一个计算出的合法目的地
  5. 然而,让计算机玩家随意移动是相当愚蠢的。计算机播放器需要具有某种形式的逻辑来比较两个动作中的哪一个更好。实现这样的逻辑可能相当复杂,你可能最好不要像评论中建议的那样使用国际象棋库。

答案 2 :(得分:0)

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

这样做的一种方式:

  1. 迭代棋盘上的棋子。
  2. 对于每件作品,确定其可用动作并将所有可用动作粘贴在列表中。
  3. 随机从列表中选择一个移动(如果您有这种倾向,则选择非随机移动)。