java实现的简单的五子棋小游戏

import java.util.Scanner;
public class Five{
String [][] arr=new String[16][16];
int[] arr1=new int[16];

//函数:给二维数组赋值为*
void show1(){
    for(int i=0;i<=15;i++){
        arr1[i]=i;
    }
    for(int i=0;i<=15;i++){
        for(int j=0;j<=15;j++){

            arr[i][j]="* ";
        }
        System.out.println();
    }

}
//函数:二维数组的显示
void show(){
    for(int i=0;i<=15;i++){
        System.out.print(" "+Integer.toHexString(arr1[i]));
    }
    System.out.println();
    for(int i=0;i<=15;i++){
        System.out.print(Integer.toHexString(arr1[i])+"");
        for(int j=0;j<=15;j++){

            System.out.print(arr[i][j]);
        }
        System.out.println();
    }

}


//函数:改变二维数组的显示的成员
int change(int i,int x,int y,int j){
    j=0;
    if(arr[x][y].equals("* ")&&i%2==0){
        arr[x][y]="E ";
        show();
    }   
    else if(arr[x][y].equals("* ")&&i%2!=0){
        arr[x][y]="O ";
        show();
    }else{
        System.out.println("输入有误,请重新输入!!");
            j++;
        }
    return j;
}

//函数:一个棋子每当一方下棋后判断是否获胜 
int PanDuan(int x,int y,int j1){
    j1=0;
    //如果该点和它y轴上的相邻的相等的话就继续往下进行
    int yNum=0;
    //实现纵纵坐标上的统计
    for(int i=1;y-i>=0;i++){
        if(arr[x][y].equals(arr[x][y-i]))
            yNum++;
        else 
            break;
    }
    for(int i=1;y+i<=16;i++){
        if(arr[x][y].equals(arr[x][y+i]))
            yNum++;
        else 
            break;
    }

    //如果该点和它x轴上的相邻的相等的话就继续往下进行
    int xNum=0;
    //实现横坐标上的统计
    for(int i=1;x-i>=0;i++){
        if(arr[x][y].equals(arr[x-i][y]))
            xNum++;
        else 
            break;
    }
    for(int i=1;(x+i)<=16;i++){
        if(arr[x][y].equals(arr[x+i][y]))
            xNum++;
        else 
            break;
    }

    //如果该点和它撇轴上的相邻的相等的话就继续往下进行
    int pNum=0;
    //实现撇坐标上的统计
    for(int i=1;x-i>=0&&y+i<=16;i++){
        if(arr[x][y].equals(arr[x-i][y+i]))
            pNum++;
        else 
            break;
    }
    for(int i=1;x+i<=16&&y-i>=0;i++){
        if(arr[x][y].equals(arr[x+i][y-i]))
            pNum++;
        else 
            break;
    }

    //如果该点和它捺轴上的相邻的相等的话就继续往下进行
    int nNum=0;
    //实现捺坐标上的统计
    for(int i=1;y-i>=0&&x-i>=0;i++){
        if(arr[x][y].equals(arr[x-i][y-i]))
            nNum++;
        else 
            break;
    }
    for(int i=1;y+i<=16&&x+i<=16;i++){
        if(arr[x][y].equals(arr[x+i][y+i]))
            nNum++;
        else 
            break;
    }
    if(xNum>=4||yNum>=4||pNum>=4||nNum>=4)
        j1=1;

    return j1;
}


public static void main(String[] args){
    Scanner input=new Scanner(System.in);
    Five f=new Five();  

    int[][] arr=new int[256][2];

    f.show1();      //给棋盘中的元素赋值
    f.show();       //显示棋盘


    System.out.println("请您选择先后手!!");

    int x1=0;
    int y1=0;
    int x2=0;
    int y2=0;
    int j=0;
    int j1=0;
    boolean flag=true;

    for(int i=0;i<arr.length;i++ ){


        if(i%2==0){
            do{
                System.out.println("请输入棋手1下的位置:");//请输入你要下的位置
                x1=input.nextInt();
                y1=input.nextInt();
                j=f.change(i,x1,y1,j);
            }while(j==1);
            j=0;j1=0;
            arr[i][0]=x1;
            arr[i][1]=y1;
            for(int k=0;k<=i;k++){
                j1=f.PanDuan(arr[k][0],arr[k][1],j1);
                if(j1==1){
                    System.out.println("E方胜利!!!");
                    flag=false;
                    break;
                }
            }

        }else{
            do{
                System.out.println("请输入棋手2下的位置:");//请输入你要下的位置
                x2=input.nextInt();
                y2=input.nextInt();
                j=f.change(i,x2,y2,j);
            }while(j==1);
            j=0;j1=0;
            arr[i][0]=x2;
            arr[i][1]=y2;
            for(int k1=0;k1<=i;k1++){
                j1=f.PanDuan(arr[k1][0],arr[k1][1],j1);
                    if(j1==1){
                        System.out.println("O方胜利!!!");
                        flag=false;
                        break;
                    }
            }
        }

        if(!flag){
            break;
        }

    }


}

}

猜你喜欢

转载自blog.csdn.net/JACKCHENG_/article/details/82120669