我有一个很大的家庭作业问题,而我试图解决其中一小部分的尝试都没有奏效。该项目是一场生命游戏,因此在每个步骤中,细胞中的有机体都必须考虑其周围的每个细胞。不使用对角线,我想从随机单元格开始考虑。
我已经通过几种方式接近它,但我认为这是最好的。
第一部分 - 找到一个随机的 x 和 y,它们是一边,而不是对角线。我认为作为侧面 abs(x) 和 abs(y) 不能相同。我循环随机尝试,直到 abs()s 不同。
第二部分 - 使用四个 if() 来确定当前边,然后将 x,y 更改为下边(顺时针方向)。
我的结果是循环在奇怪的地方停止,并且从 abs()s 不同。我怀疑 while() 表达式是错误的。我尝试了 abs(x).equals(abs(y)) 但发现该方法不适用于原语。所以我尝试了 abs(x) != abs(y) 但这会导致奇怪的结果。
这是当前的努力。任何帮助,将不胜感激。
public static void main(String[] args) {
//jkbeg
System.out.println("objective in this section is" +
" to get a random side and then move clockwise around to others");
int targetx; //these will hold the next cell to use.
int targety;
// Part One - get random side to be starting cell
// n.b. abs(x) == abs(y) means diagnol cell, not a side
// first get randoms of 0 or 1 into targets.
// keep trying randoms until abs() are not equal
do {
targetx = (int) (Math.round(Math.random()));
targety = (int) (Math.round(Math.random()));
System.out.println("rando, not checked yet"+targetx +","+targety);
System.out.println("abs x "+Math.abs(targetx));
System.out.println("abs y "+Math.abs(targetx));
}while(Math.abs(targetx) == (Math.abs(targety)) );
System.out.println("after check for sides, not corners"+targetx +","+targety);
//Part two - walk around the sides clockwise
System.out.println("random start cell: "+targetx +","+targety);
for(int targetCounter=0; targetCounter<4; targetCounter++){
if ((targetx==1)&&(targety==0)){targetx=0;targety=1;} //top to right
if ((targetx==0)&&(targety==1)){targetx=-1;targety=0;} //right to bottom
if ((targetx==-1)&&(targety==0)){targetx=0;targety=-1;} //bottom to left
if ((targetx==0)&&(targety==-1)){targetx=1;targety=0;} //left to top
System.out.println("next cell clockwise: "+targetx +","+targety);
}
System.out.println("end *random side then walk around* here here");
System.exit(0);
} // main
//jkend