tictactoe游戏的isEmpty方法

时间:2014-02-04 19:12:44

标签: java loops user-interface methods is-empty

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';
        }

}

1 个答案:

答案 0 :(得分:1)

首先,您应该测试xposypos介于0-2之间:

boolean isPosWithinRange = xpos>=0 && xpos<3 && ypos>=0 && ypos<3;

其次,如果不是,则不应检查单元格的值,因为它是无效的。使用&&的{​​{3}}属性,通过更改return语句中的检查顺序:

return isPosWithinRange && position[xpos][ypos] == ' ';