Java练习用Java写双人游戏简单四子棋

为了应付Java老师,借鉴了同学思想,自己动手敲了一个四子棋游戏。代码很不规范,为了赶时间。结果写的和C语言一样。源码在本文结尾处

首先看看游戏规则,

游戏规则

 四子棋的棋盘共有6行7列,棋盘是垂直摆放,每名玩者有21只圆形棋子,以不同颜色辨别。两名玩者轮流每次把一只棋子放进棋盘任何未全满的一行中,棋子会占据一行中最底未被占据的位置。两名玩者任何一方先以四只棋子在横,竖或斜方向联成一条直线,便可获胜,游戏亦结束。假如棋盘已完全被棋子填满,但仍未有任何一方成功把四只棋子成一直线,则成为和局。

棋盘

用了一个二维数组6*7的二维数组来构造棋盘。每次选择要下的行号行号即可。

isfour()

用来判断下的棋有没有连成四字,每次下完都判断一次。

judge()

用来判断所下的棋成功与否,即所下位置是否有棋和棋盘是否能放下

主要用了就这么多,只创建了一个类connect类来建立一个四子棋游戏。。。。

package connect;
import java.util.*;

public class connect
{
	public static  void main(String args[])
	{
		int start=0;
	
		int count=0;
		int count_max=42;
		connect_four one=new connect_four();
		
		one.display_board();
	
		do
		{
			System.out.println("请白子先行");
		
			Scanner in=new Scanner(System.in);
			int cow=in.nextInt();
			
			if(one.judge(cow, 1) == 1)
			{
				start=1;count++;
			}
			else
			{
				start=0;
			}
		}
		
		while(start==0);
		one.display_board();
		System.out.println();
		int color=2;
		do
		{
			//one.getcolor();
			
			System.out.println("对手出棋");
			Scanner in=new Scanner(System.in);
			//int raw=in.nextInt();
			int cow=in.nextInt();
			if(one.judge(cow,color)==0)
			{
				System.out.println("出棋失败,请重新出棋");
			}
			else
			{
					count++;
					if(one.is_four(cow, color, 0, 1)==1)
					{
						if(color==1)
							System.out.print("\t\t\t\t圈圈");
						else
							System.out.print("\t\t\t\t叉叉");
						System.out.print("胜出\n");
						one.display_board();
						System.out.println();
						return ;
					}
					if(color==2)color=1;
					else color=2;
			}
			one.display_board();
			
		}
		while(count<count_max);
		if(count==count_max)
			{
				System.out.println("\t\t\t\t\t和局");
				one.display_board();
				System.out.println();
			}
		
	}



}


class  connect_four
{
	private int flag=0;				//
	private int max_i=6;			//最大行
	private int max_j=7;			//最大列
	private int row;				//行值
	private int cow;				//列值
	private int [] []chessboard_status=new int[6][7];//棋盘状态
	private int [] a = new int[7];      			//列的行值
	private int chess_color;		//棋子颜色
	
	public connect_four() 			//构造函数初始化棋盘
	{
		flag=0;
		max_i=6;
		max_j=7;
		row=0;
		cow=0;
		for(int i=0;i<max_i;i++)
		{
			for(int j=0;j<max_j;j++)
			{
				a[j] = 5;
				chessboard_status[i][j]=0;
			}
		}
	}
	public int judge(int j,int color)
	{
		switch(j)
		{
			case 0:	 if(a[j]>=0) {chessboard_status[a[j]][j]=color;a[j]--;break;}//二维数            
                                                                                 //组存放
						else return 0;	
			case 1:	 if(a[j]>=0) {chessboard_status[a[j]][j]=color;a[j]--;break;}
						else return 0;
			case 2:	 if(a[j]>=0) {chessboard_status[a[j]][j]=color;a[j]--;break;}
			 			else return 0;
			case 3:	 if(a[j]>=0) {chessboard_status[a[j]][j]=color;a[j]--;break;}
						else return 0;
			case 4:	 if(a[j]>=0) {chessboard_status[a[j]][j]=color;a[j]--;break;}
			 			else return 0;
			case 5:	 if(a[j]>=0) {chessboard_status[a[j]][j]=color;a[j]--;break;}
			 			else return 0;
			case 6:	 if(a[j]>=0) {chessboard_status[a[j]][j]=color;a[j]--;break;}
			 			else return 0;
			default: ;
		}
		return 1;
	}
	public int judge_status(int i,int j)
	{
		if(i>-1&&i<max_i&&j>-1&&j<max_j)
			if(chessboard_status[i][j]==0)
				return 0;
			else if(chessboard_status[i][j]==1)
				return 1;//白色
			else
				return 2;//黑色
		else return -1;//位置输入超框
	}
	public void getcolor()
	{
		if(flag==1)
			System.out.print("白棋");
		else
			System.out.print("黑棋");
		System.out.println("\n");
	}
	public void display_board()
	{
		char a=1;
		char b=0;
	
		
		System.out.print("  ");
			for(int j=0;j<max_j;j++)
			{
				System.out.print(j+" ");
			
		
			}
			System.out.println();
		
		for(int i=0;i<max_i;i++)
		{
			
			for(int j=0;j<max_j;j++)
			{
				if(j==0)
					System.out.print(i);
				switch(chessboard_status[i][j])
				{
				case 0: System.out.print(" *");break;
				case 1: System.out.print(" ○");break;
				case 2: System.out.print(" ×");break;
				}
			}
			System.out.println();
		}
		
	}
	public int is_four(int j,int color,int num,int direction)
	{
		int m=a[j]+1,n=j;
		do
		{
			switch(direction)
			{
			case 1: m=m+1;n=n;break;
			case 2:	m=m+1;n=n-1;break;
			case 3: m=m;n=n-1;break;
			case 4: m=m-1;n=n-1;break;
			case 5: m=m-1;n=n;break;
			case 6: m=m-1;n=n+1;break;
			case 7: m=m;n=n+1;break;
			case 8: m=m-1;n=n-1;break;
			default :break;
			
			}
			if(judge_status(m,n)==color)
			{
				num++;
				if(num==3)
				{
					return 1;
				}
			}
			else 
				{
					m=a[j]+1;
					n=j;
					num=0;
					direction++;
				}
		}while(direction!=9);
		if(num==3)	return 1;
		else return 0;
	}
}

     

猜你喜欢

转载自blog.csdn.net/weixin_42149196/article/details/84324184