java—五子棋(纯代码,无解说)

java—五子棋

前言

小白正在学c,但专业教材直接学java,并且要求java写一篇五子棋,但c与java相近,并且之前写过井字棋,所以中间也没什么问题,很快就能写出来,之后也有可能出一篇详解代码的部分

代码部分

public static char is_win(char board[][])
	{
		
		//棋盘判断
		int qi_pan=0;
	    	for(int rows=0;rows<10;rows++)
	    	{
	    		for(int cols=0;cols<10;cols++)
	    		{
	    			if(qi_pan==1)
	    				break;
	    			if(board[rows][cols]=='-')
	    			qi_pan=1;
	    		}	
	    	}
	    	//横列判断
	    	char qi_zi='n';
	    	int p1_iswin=0;
	    	int p2_iswin=0;
	    	for(int rows=0;rows<10;rows++)
	    	{
	    		p1_iswin=0;
	    		p2_iswin=0;
	    		for(int cols=0;cols<10;cols++)
	    		{
	    			if(board[rows][cols]=='-')
	    			{
	    				p1_iswin=0;
	    				p2_iswin=0;
	    			}
	    			if(board[rows][cols]=='*')
	    				{
	    				p1_iswin++;
	    				p2_iswin=0;
	    				}
	    			if(p1_iswin==5)
	    			{
	    				qi_zi='*';
	    				break;
	    			}
	    			if(board[rows][cols]=='0')
	    			{
	    				p1_iswin=0;
	    				p2_iswin++;
	    			}
	    			
	    			if(p2_iswin==5)
	    			{
	    				qi_zi='0';
	    				break;
	    			}
	    		}
	    	}
	    	
	    	
	    		//竖列判断
	    	if(qi_zi=='n')
	    	{
		    	
		    	for(int rows=0;rows<10;rows++)
		    	{
		    		p1_iswin=0;
			    	p2_iswin=0;
		    		for(int cols=0;cols<10;cols++)
		    		{
		    			if(board[cols][rows]=='-')
		    			{
		    				p1_iswin=0;
		    				p2_iswin=0;
		    			}
		    			if(board[cols][rows]=='*')
		    				{
		    				p1_iswin++;
		    				p2_iswin=0;
		    				}
		    			if(p1_iswin==5)
		    			{
		    				qi_zi='*';
		    				break;
		    			}
		    			if(board[cols][rows]=='0')
		    			{
		    				p1_iswin=0;
		    				p2_iswin++;
		    			}
		    			
		    			if(p2_iswin==5)
		    			{
		    				qi_zi='0';
		    				break;
		    			}
		    		}
	    		
	    	}
	    	}
	    	//左上对角线判断
	    if(qi_zi=='n')
	    {
	    	
	    	for(int i=0;i<=5;i++)
	    	{
	    		p1_iswin=0;
		    	p2_iswin=0;
	    		int rows=i;
	    		int cols=0;
	    		int rows_right=10;
	    		int cols_right=10-i;
	    		while(rows<rows_right&&cols<cols_right)
	    		{
	    			if(board[rows][cols]=='-')
	    			{
	    				p1_iswin=0;
	    				p2_iswin=0;
	    			}
	    			if(board[cols][rows]=='*')
    				{
    				p1_iswin++;
    				p2_iswin=0;
    				}
    			if(p1_iswin==5)
    			{
    				qi_zi='*';
    				break;
    			}
    			if(board[cols][rows]=='0')
    			{
    				p1_iswin=0;
    				p2_iswin++;
    			}
    			
    			if(p2_iswin==5)
    			{
    				qi_zi='0';
    				break;
    			}
    			rows++;
    			cols++;
	    		}
	    		
	    		
	    	}
	    	
	    	
	    }
	    	//左上上部分对角线判断
	    if(qi_zi=='n')
	    {
	    	for(int i=0;i<=5;i++)
	    	{
	    		p1_iswin=0;
		    	p2_iswin=0;
	    		int rows=0;
	    		int rows_right=10-i;
	    		int cols=i;
	    		int cols_right=10;
	    		while(rows<rows_right&&cols<cols_right)
	    		{
	    			if(board[rows][cols]=='-')
	    			{
	    				p1_iswin=0;
	    				p2_iswin=0;
	    			}
	    			if(board[rows][cols]=='*')
    				{
    				p1_iswin++;
    				p2_iswin=0;
    				}
    			if(p1_iswin==5)
    			{
    				qi_zi='*';
    				break;
    			}
    			if(board[rows][cols]=='0')
    			{
    				p1_iswin=0;
    				p2_iswin++;
    			}
    			
    			if(p2_iswin==5)
    			{
    				qi_zi='0';
    				break;
    			}
    			rows++;
    			cols++;
	    		}
	    		
	    	}
	    	
	    }
	    //右上对角线上半部分判断
	    if(qi_zi=='n')
	    {
	    	for(int i=0;i<=5;i++)
	    	{
	    		p1_iswin=0;
		    	p2_iswin=0;
	    	 int row=i;
	    	 int row_right=9;
	    	 int col=9;
	    	 int col_right=i;
	    		while(row<=row_right&&col>=col_right)
	    		{
	    			if(board[row][col]=='-')
	    			{
	    				p1_iswin=0;
	    				p2_iswin=0;
	    			}
	    			if(board[row][col]=='*')
    				{
    				p1_iswin++;
    				p2_iswin=0;
    				}
    			if(p1_iswin==5)
    			{
    				qi_zi='*';
    				break;
    			}
    			if(board[row][col]=='0')
    			{
    				p1_iswin=0;
    				p2_iswin++;
    			}
    			
    			if(p2_iswin==5)
    			{
    				qi_zi='0';
    				break;
    			}
    			row++;
    			col--;
	    		}
	    		
	    			
	    			
	    		}
	    	}
	    
	    //右上对角线上半部分
	    	if(qi_zi=='n')
	    	{
	    		for(int i=0;i<=5;i++)
	    		{
	    		p1_iswin=0;
		    	p2_iswin=0;
	    	 int rows=0;
	    	 int row_right=9-i;
	    	 int col=9-i;
	    	 int col_right=0;
	    		while(col>=col_right&&rows<=row_right)
	    		{
	    			if(board[rows][col]=='-')
	    			{
	    				p1_iswin=0;
	    				p2_iswin=0;
	    			}
	    			if(board[rows][col]=='*')
    				{
    				p1_iswin++;
    				p2_iswin=0;
    				}
    			if(p1_iswin==5)
    			{
    				qi_zi='*';
    				break;
    			}
    			if(board[rows][col]=='0')
    			{
    				p1_iswin=0;
    				p2_iswin++;
    			}
    			
    			if(p2_iswin==5)
    			{
    				qi_zi='0';
    				break;
    			}
    			rows++;
    			col--;
	    		}
	    		
	    	}
	    	
	    	}
	    	if(qi_zi=='0')
	    		return '0';
		if(qi_zi=='*')
			return'*';
		if(qi_pan==1)
			return 'n';
		if(qi_pan==0)
			return 'y';
		return 'z';
	}
	
	
	
	//游戏开始0 *
	public static int game(char board[][])
	{
		int no=0;
		int flag=0;
		while(flag==0)
		{
			Scanner rua=new Scanner(System.in);
			if(no==0)
			{		
		System.out.println("*:please input the number");
		int zuo_biao=rua.nextInt();
		int cols=zuo_biao%10;
		int rows=zuo_biao/10%10;
		if(board[rows][cols]!='-')
		{
			continue;
		}
		board[rows][cols]='*';
		menu(board);
		char f=is_win(board);
		if(f=='0')
		{
			System.out.println("0 winner!!");
			return 0;
		}
		else if(f=='*')
		{
			System.out.println("* winner!!");
			return 0;
		}
		else if(f=='y')
		{
			System.out.println("no winner");
			return 0;
		}
			}
		System.out.println("0:please input the number");
		int zuo_biao=rua.nextInt();
		int cols=zuo_biao%10;
		int rows=zuo_biao/10%10;
		if(board[rows][cols]!='-')  
		{
			no=1;
			continue;
		}
		else
		{
			no=0;
		}
		board[rows][cols]='0';
		menu(board);
		char r=is_win(board);
		if(r=='0')
		{
			System.out.println("0 winner!!");
		    return 0;
		}
		else if(r=='*')
		{
			System.out.println("* winner!!");
			return 0;
		}
		else if(r=='y')
		{
			System.out.println("no winner");
			return 0;
		}
		}
		return 0;
		
	}
	
	
	
	
	//用户选择开始游戏或退出游戏
	public static int select()
	{
System.out.println("play: 1");
System.out.println("exit 0");	
Scanner sc=new Scanner(System.in);
int flag=sc.nextInt();
	return flag;	
	}
	//棋盘初始化
	public static void init(char board[][])
	{
		for(int u=0;u<10;u++)
		{
			for(int i=0;i<10;i++)
			{
				board[u][i]='-';
			}
		}
	}
	
	//棋盘打印
public static void menu(char board[][])
{
	System.out.print(" ");
	for(int rpw=0;rpw<10;rpw++)
	{
		System.out.print(" ");
		System.out.print(""+rpw);
	}
	System.out.println("");
    for(int rows=0;rows<10;rows++)
    {
    	System.out.print(""+rows);
    	System.out.print(" ");
    	for(int cols=0;cols<10;cols++)
    	{
    		System.out.print(""+board[rows][cols]);
    		System.out.print(" ");
    	}
    	System.out.println("");
    }

}

//主函数
	public static void main(String[] args)
	{
		char[][] board=new char[10][10]; 
		int flag=1;
do
{
	flag=select();
	switch(flag)
	{
	case 1:
	{
		init(board);
		menu(board);
		game(board);
		break;
	}
	case 0:
	{
		
		break;
	}
		default:
		{
			System.out.println("error number,please input the right number again");
		}
	}
	
}
	while(flag!=0);
	}
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想学c啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值