首页 > 其他 > 详细

井字游戏

时间:2021-08-05 22:22:28      阅读:34      评论:0      收藏:0      [点我收藏+]

用字符串数组作为井字游戏版board,判断该游戏板有没有可能最终形成

游戏板是一个3x3数组,由字符"","X"和"O"组成。字符""代表一个空位。
两个玩家轮流将字符放入空位,一个玩家执X棋,另一个玩家执O棋
"X"和"O"只允许放置在空位中,不允许对以放有字符的位置进行填充。
当有3个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,board生成

public class TicTacToe {
    public static void main(String[] args) {
        System.out.println(validBoard(new String[]{"XXX","OXO","O O"}));
    }
    public static boolean validBoard(String[] board){
        //X赢了, X-O=1
        //O赢了, X-O=0
        //胜负未分
        int xCount=0,oCount=0;
        for (String row : board){
            for (char column : row.toCharArray()){
                if (column==‘X‘){
                    xCount++;
                }
                if (column==‘O‘){
                    oCount++;
                }
            }
        }
        if (xCount != oCount && xCount-oCount !=1){
            return false;
        }
        if (win(board,"XXX")&& xCount-oCount !=1){
            return false;
        }
        if (win(board,"OOO")&& xCount-oCount !=0){
            return false;
        }
        return true;
    }
    static boolean win(String[] board,String flag){
        for (int i = 0;i<3;i++){
            //穷举,纵向3连
            if (flag.equals(""+board[0].charAt(i)+board[1].charAt(i)+board[2].charAt(i))){
                return true;
            }
            //横向
            if (flag.equals(board[i])){
                return true;
            }
        }
        //斜向
        if (flag.equals(""+board[0].charAt(0)+board[1].charAt(1)+board[2].charAt(2))){
            return true;
        }
        if (flag.equals(""+board[2].charAt(2)+board[1].charAt(1)+board[0].charAt(0))){
            return true;
        }
        return false;
    }
}

井字游戏

原文:https://www.cnblogs.com/cfs322/p/15105323.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!