想做一个tic tac toe(三子棋)的模拟软件
需要一个3X3的棋盘,这个我需要用2维array模拟,一开始整个棋盘都用空白填充,然后让计算机往里面填x或者o,我想问一下怎样用if使得计算机往里面填的时候可以识别到若这个地方已经被填过(o或者x),会重新随机寻找下一个地方直到空白为止?

解决方案 »

  1.   

    比如你可以定义3个常量来代表每个棋盘格子的状态
    #define TYPE_NULL 0
    #define TYPE_O    1
    #define TYPE_X    2
    比如array[0][0] = TYPE_O;  //第一个单元格填放了"O"
    然后你写个函数每次来遍历一遍2维数组寻找值为TYPE_NULL的就可以了。
      

  2.   

    啊。。刚开始学java,貌似书上后边的索引都没有define,楼上的高手没有办法用if做出来吗?
      

  3.   

    把数组类型定义为 int,用public static final int TYPE_NULL = 0 来定义常量。其实就是定义一个常量,
    不定义常量也行,在注释上说明一下就行了。例如:
    int[][] array = new int[3][3];   //0 代表什么都没放 ,1代表放的是x,2代表放的是o
      

  4.   

    Sorry,没注意是Java社区的,Java里面没有#define关键字
    mengpeiliang说的对,在Java里面用public static final int TYPE_NULL = 0 来定义常量就可以了。我不明白你为什么要用if来实现呢?就是一个数组遍历的过程,值非TYPE_NULL的数组元素都可以放棋子阿。
      

  5.   


    for(int i= 0 ; i < 3; i++){ for(int j = 0; j < 3; j ++){
    if(!("x".equals(arr[i][j]) || "o".equals(arr[i][j]))){
    arr[i][j] = "";//随即分配一个 x 或 o
    }
    }
    }