下落棋

import java.util.Scanner;

//  x o  下落棋

public class Start {

    public void minu(){//菜单类

        Scanner sc=new Scanner(System.in);

        System.out.println();

        System.out.println("***************************");

        System.out.println("*  欢迎使用小月半下落棋    *\n" +

                          "*    --1.开始游戏        *\n" +

                          "*    --2.退出游戏        *");

        System.out.println("***************************");

        int choose;

        try {

            choose = sc.nextInt();

            switch (choose){//菜单的选择

                case 1: Referee referee=new Referee();//开始游戏

                    referee.choosfirst();

                    referee.Startgame();

                    break;

                case 2:System.exit(0);//退出

                default:System.out.println("错误的指令!");

            }

        } catch (Exception e) {

            System.out.println("错误的指令!");

        }

    }

    public static void main(String[] args) {

        Start start=new Start();

        while (true){//循环打印菜单

            start.minu();

        }

    }

}

class Player{//玩家

    String name;

    int column;

    String logo;

    public Player(String name,String logo){

        this.name=name;

        this.logo=logo;

    }

    public void playchess(){//落子

        while (true){

            try {

                Scanner sc=new Scanner(System.in);

                System.out.println("请"+name+"输入列坐标:");

                column=sc.nextInt();

                if (column>9){

                    System.out.println("下标越界 请重新输入!");

                }else {

                    return;

                }

            } catch (Exception e) {

                System.out.println("请输入数字 请重新输入!");

            }

        }

    }

}

class Chessboard{//棋盘类

    public String[][] strings=new String[10][9];

    public void printChessboard(int[] count){//打印棋盘

        for (int i = 0; i < 10; i++) {

            for (int j = 0; j < 9; j++) {

                if (i==0){

                    System.out.print( "| "+(j+1)+" ");

                }else{

                    if (strings[i][j]==null){

                        strings[i][j]="_";

                    }

                    System.out.print( "| "+strings[i][j]+" ");

                }

            }

            System.out.println("|");

        }

    }

}

class Referee{//裁判类

    Player A=new Player("A","X");

    Player B=new Player("B","O");

    Chessboard chessboard=new Chessboard();

    int count[]={1,1,1,1,1,1,1,1,1};

    Player turn=null;

    boolean gameover=false;

    public void choosfirst(){//现行

        System.out.println("选择现行棋的棋手:  1.A or 2.B");

        while (true){

            Scanner sc;

            try {

                sc = new Scanner(System.in);

                int name=sc.nextInt();

                switch (name){

                    case 1:turn=A;

                        return;

                    case 2:turn=B;

                        return;

                    default: System.out.println("错误的棋手!");

                }

            } catch (Exception e) {

                System.out.println("错误的棋手!");

            }

        }

    }

    public void Startgame(){

        System.out.println("开始游戏");

        chessboard.printChessboard(count);

        while(!gameover){

            Judg();

        }

        System.out.println();

        System.out.println("恭喜!    "+turn.name+"获得了比赛胜利!!!!");

    }

    public void Judg(){//判决

        put(turn,chessboard);

        chessboard.printChessboard(count);

        for (int i = 4; i < 10; i++) {

            for (int j = 3; j < 9; j++) {

                if((chessboard.strings[i][j]==turn.logo&&chessboard.strings[i-1][j-1]==turn.logo

                    &&chessboard.strings[i-2][j-2]==turn.logo&&chessboard.strings[i-3][j-3]==turn.logo)){

                    gameover=true;

                    return;

                }

            }

        }for (int i = 1; i < 10; i++) {

            for (int j = 3; j < 9; j++) {

                if((chessboard.strings[i][j]==turn.logo&&chessboard.strings[i][j-1]==turn.logo

                                &&chessboard.strings[i][j-2]==turn.logo&&chessboard.strings[i][j-3]==turn.logo)){

                    gameover=true;

                    return;

                }

            }

        }for (int i = 4; i < 10; i++) {

            for (int j = 0; j < 9; j++) {

                if((chessboard.strings[i][j]==turn.logo&&chessboard.strings[i-1][j]==turn.logo

                        &&chessboard.strings[i-2][j]==turn.logo&&chessboard.strings[i-3][j]==turn.logo)){

                    gameover=true;

                    return;

                }

            }

        }

        if(turn==A){

            turn=B;

        }else {

            turn=A;

        }

    }

    public void put(Player player,Chessboard chessboard){

        player.playchess();

        for (int i = 9; i > 0; i--) {

            if(count[player.column-1]>9){

                System.out.println("这一排已经放满了 请重新输入");

                if(turn==A){

                    turn=B;

                }else {

                    turn=A;

                }

                break;

            }else if(chessboard.strings[i][player.column-1]=="_"){

                chessboard.strings[i][player.column-1]=player.logo;

                count[player.column-1]++;

                break;

            }

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,895评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,212评论 18 399
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,542评论 0 41
  • 今天早上,看到简友JJ单单发来的简信,内容是:“你好,我是第一次看你写的文章,写的真好。我想请教一个问题:我不知道...
    林木成荫阅读 1,778评论 8 27
  • 动如疯兔,动如炸弹。没有静的时候。今天是Brownie的生日,也是她领Top奖的日子。可是站在台上的却是Shirl...
    梅凉阅读 4,551评论 16 8

友情链接更多精彩内容