3 回答
TA贡献2051条经验 获得超10个赞
你可以做几件事。就像循环两个polelode1、polelode2一样。
for(bool[][] p: Arrays.asList(polelode1, polelode2)){
if((p[x][y] || p[x][y + 1] || p[x][y + 2] || p[x - 1][y + 1] || p[x - 1][y + 2] || p[x][y + 3])!= true){
p[x][y] = true;
p[x][y + 1] = true;
p[x][y + 2] = true;
p[x - 1][y + 1] = true;
p[x - 1][y + 2] = true;
p[x][y + 3] = true;
}
}
你可以制定一个方法。
static void process(bool[][] p){
// repeat code with p.
}
然后你就可以调用这个方法了。
process(polelode1);
process(polelode2);
您可以使用流。
TA贡献2019条经验 获得超9个赞
您可以创建其他方法并调用它;例如 :
public boolean fct1(boolean[][] p){
return !(p[x][y] || p[x][y + 1] || p[x][y + 2] || p[x - 1][y + 1] || p[x - 1][y + 2] || p[x][y + 3]);
}
public void fct2(boolean[][] p){
p[x][y] = true;
p[x][y + 1] = true;
p[x][y + 2] = true;
p[x - 1][y + 1] = true;
p[x - 1][y + 2] = true;
p[x][y + 3] = true;
}
进而
if(fct1(polelode1)){ //kontrola kolize
fct2(polelode1);
pocetparniku = pocetparniku + 1;
}
else {
System.out.println("can't create boat on another boat!");
drawAim();
}
if(fct1(polelode2)){ //kontrola kolize
fct2(polelode2);
}
TA贡献1796条经验 获得超10个赞
好的,我发现您可以创建一个空布尔字段,并且可以复制另一个字段的值。这是迄今为止我最好的解决方案:
if (player == true) {
p = polelode1;
}
else {
p = polelode2;
}
if((p[x][y] || p[x][y + 1] || p[x][y + 2] || p[x - 1][y + 1] || p[x - 1][y + 2] || p[x][y + 3])!= true){
p[x][y] = true;
p[x][y + 1] = true;
p[x][y + 2] = true;
p[x - 1][y + 1] = true;
p[x - 1][y + 2] = true;
p[x][y + 3] = true;
}
进行了一些测试,发现了困难的方法。无论如何谢谢大家!
添加回答
举报