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);
}
在xpos和ypos位置放置O
。没有额外的验证。
public void placeO(int xpos, int ypos) {
if(isEmpty(xpos, ypos)) {
position[xpos][ypos]='O';
}
}
答案 0 :(得分:1)
首先,您应该测试xpos
和ypos
介于0-2之间:
boolean isPosWithinRange = xpos>=0 && xpos<3 && ypos>=0 && ypos<3;
其次,如果不是,则不应检查单元格的值,因为它是无效的。使用&&
的{{3}}属性,通过更改return语句中的检查顺序:
return isPosWithinRange && position[xpos][ypos] == ' ';