美文网首页
9.井字棋

9.井字棋

作者: Jesse1995 | 来源:发表于2017-10-30 18:11 被阅读0次

题目内容:
嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。
你的程序先要读入一个整数n,范围是[3,100],这表示井字棋棋盘的边长。比如n=3就表示是一个3x3的棋盘。然后,要读入n行,每行n个数字,每个数字是1或0,依次表示[0,0]到[n-1,n-1]位置上的棋子。1表示X,0表示O(大写字母O)。
你的程序要判断其中是否存在某一方获胜,获胜的条件是存在整行或整列或整条对角线或整条反对角线上是相同的棋子。如果存在,则输出代表获胜一方字母:X或O(大写字母X或O);如果没有任何一方获胜,则输出NIL(三个大写字母)。
注意:所给的棋盘上的棋子分布可能出现同一个棋子有多处满足获胜的条件,但是不会出现两种棋子都获胜的情况。

输入格式:
一个代表棋盘大小的数字n,后面跟上nxn个数字。

输出格式:
三种输出之一:
X
O
NIL
均为大写字母。

输入样例:
4
1 0 0 1
0 1 0 0
0 0 1 0
1 0 0 1

输出样例:
X

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int SIZE=in.nextInt();
        int board[][]=new int[SIZE][SIZE];
        boolean gotResult= false;
        int numOfX=0;
        int numOfO=0;
        for(int i=0;i<SIZE;i++)
        {
            for(int j=0;j<SIZE;j++)
            {
                board[i][j]=in.nextInt();
            }
        }
        for(int i=0;i<SIZE;i++)
        {
            //检查行
            numOfX=0;
            numOfO=0;
            for(int j=0;j<SIZE;j++)
            {
                if(board[i][j]==1)
                {
                    numOfX++;
                }
                else
                {
                    numOfO++;
                }
                if(numOfX==SIZE || numOfO==SIZE)
                {
                    gotResult=true;
                    break;
                }
            }
            //检查列
            for(int j=0;j<SIZE;j++)
            {
                numOfX=0;
                numOfO=0;
                if(board[j][i]==1)
                {
                    numOfX++;
                }
                else
                {
                    numOfO++;
                }
            
                if(numOfX==SIZE || numOfO==SIZE)
                {
                    gotResult=true;
                    break;
                }
            }
        }
        //检查交叉
        if(!gotResult)
        {
            numOfX=0;
            numOfO=0;
            for(int i=0;i<SIZE;i++)
            {
                if(board[i][i]==1)
                {
                    numOfX++;
                }
                else
                {
                    numOfO++;
                }
                if(numOfX==SIZE || numOfO==SIZE)
                {
                    gotResult=true;
                }
            }
        }
        if(!gotResult)
        {
            numOfX=0;
            numOfO=0;
            for(int i=0;i<SIZE;i++)
            {
                if(board[i][SIZE-1-i]==1)
                {
                    numOfX++;
                }
                else
                {
                    numOfO++;
                }
                if(numOfX==SIZE || numOfO==SIZE)
                {
                    gotResult=true;
                }
            }
        }
        //输出
        if(!gotResult)
        {
            System.out.println("NIL");
        }
        else if(numOfX==SIZE)
        {
            System.out.println("X");
        }
        else if(numOfO==SIZE)
        {
            System.out.println("O");
        }
    }

}

相关文章

  • 9.井字棋

    题目内容:嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。你的程序先要读入一...

  • 井字棋

    package newPaca; import java.util.Scanner; public class j...

  • Vue井字棋

    v-on:click="onClidkCell(0, $event)有v-on:click的绑定事件,有$even...

  • 井字棋源码

  • 设计井字棋

    1、前言 一般的系统设计题都有主体、input、output。但是游戏设计题可能有点违反常规,它主要有以下几点:玩...

  • C++实现的基于α-β剪枝算法的井字棋游戏

    一、井字棋游戏规则 “井字棋”游戏(又叫“三子棋”),是一款十分经典的益智小游戏,操作简单,娱乐性强。两个玩家,一...

  • 多维数组怎么学?看这一篇就够了,带你在游戏中学习。

    tic-tac-toe 游戏 (井字棋游戏) 大家小时候应该都玩过井字棋吧,下课之余和同学来上一把,是多么开心。今...

  • JavaScript新手练习——井字棋

    井字棋是一个很简单的游戏,通过穷举,我们轻易的记录井字棋所有可能的走法。因此我们的AI可以实现的能力是 先手:尽可...

  • R写的三子棋(井字棋)程序

    我家小朋友最近迷上了井字棋,每天都要拉着大人玩两盘,这两天恰好有闲,写个井字棋程序练练手,同时看看能否提起小朋友对...

  • Java 井字棋小结

    1.井字棋获胜的四种情况 横行全为同一符号竖行全为同一符号斜对角线为同一符号反对角线为同一符号 2.编程思路 构建...

网友评论

      本文标题:9.井字棋

      本文链接:https://www.haomeiwen.com/subject/dtdmpxtx.html