Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 372|回复: 0

[Java基础知识]控制台五子棋的实现(JAVA)

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-9-30 17:41:01 | 显示全部楼层 |阅读模式
    /*
    控制台五子棋游戏
    初始化棋盘
    绘画棋盘
    用户输入下子坐标
    判断输入合法性
    下子
    电脑下子
    判断输赢

    */



    1. import java.util.Scanner;
    2. public class WuZiQi
    3. {
    4.    //定义棋盘的大小
    5.    static int SIZE = 15;
    6.    //用二维数组表示棋盘
    7.    static String[][] BROAD = new String[SIZE][SIZE];
    8.    //初始化棋盘
    9.    public static void init()
    10.    {
    11.        for(int i = 0; i< SIZE; i++)
    12.        {
    13.            for(int j = 0; j < SIZE; j++)
    14.            {
    15.                BROAD[i][j] = "十";
    16.            }
    17.        }
    18.    }
    19.    //绘画棋盘
    20.    public static void paintBroad()
    21.    {
    22.        for(int i = 0; i< SIZE; i++)
    23.        {
    24.            for(int j = 0; j < SIZE; j++)
    25.            {
    26.                //输出一行,不要换行
    27.                System.out.print(BROAD[i][j]);
    28.            }
    29.            //换行输出下一行
    30.            System.out.println();
    31.        }
    32.    }
    33.    //判断输入坐标的合法性
    34.    public static boolean isLegal(int i, int j)
    35.    {
    36.        //输入不能超出棋盘范围
    37.        if(i > 15 || i < 0 || j > 15 || j< 0)
    38.        {
    39.            return false;
    40.        }
    41.        //坐标位置必须是还未下子
    42.        if(BROAD[i-1][j-1] != "十")
    43.        {
    44.            return false;
    45.        }
    46.        return true;
    47.    }
    48.    //生成随机数模拟电脑下子
    49.    public static int[] computer()
    50.    {
    51.        int[]  coordinate = new int[2];
    52.        coordinate[0] =(int)( Math.random()*15 + 1);
    53.        coordinate[1] =(int)( Math.random()*15 + 1);
    54.        while(!isLegal(coordinate[0],coordinate[1]))
    55.        {
    56.            coordinate[0] =(int)( Math.random()*15 + 1);
    57.            coordinate[1] =(int)( Math.random()*15 + 1);
    58.        }
    59.        return coordinate;
    60.    }
    61.    /**判断输赢
    62.    *返回值:
    63.        1:黑子赢了
    64.        0:白字赢了
    65.        -1:未分胜负
    66.    */
    67.    public static int isWin()
    68.    {
    69.        //横向判断
    70.        //纵向判断
    71.        //反斜杠判断
    72.        //斜杠判断
    73. for(int i = 0; i < SIZE-4; i++)
    74.   {
    75.     for(int j = 0; j < SIZE-4; j++)
    76.     {
    77.        if(BROAD[i][j] == "●" && BROAD[i+1][j+1] == "●"&&BROAD[i+2][j+2] ==
    78.                  "●"&&BROAD[i+3][j+3] == "●"&&BROAD[i+4][j+4] == "●")
    79.               return 1;
    80.        else if(BROAD[i][j] == "○" && BROAD[i+1][j+1] == "○"&&BROAD[i+2][j+2] ==
    81.              "○"&&BROAD[i+3][j+3] == "○"&&BROAD[i+4][j+4] == "○")
    82.                return 0;
    83.            }
    84.        }
    85.        return -1;
    86.    }
    87.    public static void main(String[] args)
    88.    {
    89.        init();
    90.        paintBroad();
    91.        do{
    92.            System.out.println("请输入下子的坐标:");
    93.            Scanner sn = new Scanner(System.in);
    94.            int i = sn.nextInt();
    95.            int j = sn.nextInt();
    96.            while(!isLegal(i,j))
    97.            {
    98.                System.out.println("输入非法,请重新输入下子的坐标:");
    99.                sn = new Scanner(System.in);
    100.                i = sn.nextInt();
    101.                j = sn.nextInt();
    102.            }
    103.            BROAD[i-1][j-1] = "●";
    104.            paintBroad();
    105.            int[] coordinate = computer();
    106.            int c1 = coordinate[0];
    107.            int c2 = coordinate[1];
    108.            BROAD[c1-1][c2-1] = "○";
    109.            System.out.println("电脑下子: " + c1 + " " + c2);
    110.            paintBroad();
    111.            if(isWin() ==1)
    112.            {
    113.                System.out.println("恭喜您赢了");
    114.                break;
    115.            }
    116.            if(isWin() ==0)
    117.            {
    118.                System.out.println("很遗憾,您输了");
    119.                break;
    120.            }
    121.        }while(isWin() == -1);
    122.    }
    123. }
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-20 20:00 , Processed in 0.353829 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表