点主要在一个方向上移动而不是随机移动

时间:2018-05-23 00:40:47

标签: java

我正在尝试编写Code Bullet's AI tutorial的Java版本,虽然我已经设法构建了JFrame并且我得到了正确渲染的点,但它们的行为并不像预期的那样。

对于上下文,当点的数量被初始化时,它们用"大脑"来初始化。这是1000个方向的随机列表,告诉他们如何在每一步移动。这些指示由以下代码生成:

//Further up they are initialized with 1000 as the argument
//Also, an int array called directions is an attribute
public Brain(int size){
  directions = new int[size];
  Random dir = new Random();
  for (int i = 0; i < size; i++){
    directions[i] = dir.nextInt(8);
  }
}

生成0到7(含)的原因是因为点的移动被编码为以下switch语句(其中x和y是网格上的点的位置:

switch (direction){ //Slightly simplified here.
  case 0: this.y--;
  case 1: this.y--; this.x++;
  case 2: this.x++;
  case 3: this.x++; this.y++;
  case 4: this.y++;
  case 5: this.y++; this.x--;
  case 6: this.x--;
  case 7: this.x--; this.y--;
}

理论上,随着方向随机初始化,点应从其起始位置随机移动到整个网格。但是,当我运行代码时,它们都只是向下移动并向左移动。谁能帮我?可以找到完整代码here,相关行为55-256。提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果没有break语句,则继续执行下一个案例块...

结果,总是执行情况7,偏向屏幕左下方的移动。