public class TicTacToeModel {
double xpos,ypos,xr,yr;
char[][] position = {{' ',' ',' '},
{' ',' ',' '},
{' ',' ',' '}};
/**
* Turns row, col into the center of the cells of any screen of resolution h by w.
* This is ideal for the view.
*/
public void computePos(int row, int col, int h, int w){
xpos=(col+0.5)*w/3.0;
ypos=(row+0.5)*h/3.0;
xr=w/8.0;
yr=h/8.0;
}
如果xpos ypos的单元格为空,则
isEmpty()
返回true。这不能验证xpos和ypos是否在范围内,我该怎么做呢?public boolean isEmpty(int xpos, int ypos){
boolean isPosWithinRange = xpos>=0 && xpos<9 && ypos>=0 && ypos<9;
return (position[xpos][ypos] == ' ' && isPosWithinRange);
}
将
O
放在xpos和ypos位置。没有其他验证。public void placeO(int xpos, int ypos) {
if(isEmpty(xpos, ypos)) {
position[xpos][ypos]='O';
}
}
最佳答案
首先,您应该测试xpos
和ypos
在0-2之间:
boolean isPosWithinRange = xpos>=0 && xpos<3 && ypos>=0 && ypos<3;
其次,如果不是,则不应检查该单元格的值,因为它是无效的单元格。通过更改return语句中检查的顺序,使用
&&
的short circuit属性:return isPosWithinRange && position[xpos][ypos] == ' ';