⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chessboard.java

📁 java开发的五子棋游戏
💻 JAVA
字号:
//////////////////////////////////////////////////////
//
//ChessPoint.java
//
//Created by Guanyi-Zhao
//////////////////////////////////////////////////////
//Readyme:
//         这是创建棋盘的类

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class ChessBoard extends JPanel implements MouseListener
{
	public ChessPoint ppoint[][];  //棋盘中的点:棋点
	public int unitWidth,unitHeight;  //棋盘单位格的宽和高
	int xx,yy;       //棋盘的行和列
	int x,y;         //记录鼠标的位置

	IsWon whiteWon=new IsWon(15);  //记录白方是否获胜
	IsWon blackWon=new IsWon(15);  //记录黑方是否获胜	
	public boolean widthPlay=false,blackPlay=true;  //控制走棋顺序的变量
	
	//创建对弈棋盘
	public ChessBoard(int w,int h,int r,int c)
	{
		setLayout(null);
		addMouseListener(this);		
		setBackground(Color.orange);          //设置棋盘的背景色为桔黄色
		Color bc=getBackground();               //棋子的背景色和棋盘一致
		
		unitWidth=w;
		unitHeight=h;
		xx=r;
		yy=c;	
		
		ppoint=new ChessPoint[r+1][c+1];
		//棋盘的左上角的点是point[1][1],
		//第一行的点是point[1][1],point[2][1],point[3][1]...point[xx][1],
		//右下角的点是point[xx][yy].			
		int i=1;
		for(i=1;i<=r;i++)
		{
			int j=1;
			for(j=1;j<=c;j++)
			{
				ppoint[i][j]=new ChessPoint(i*unitWidth,j*unitHeight,false);
			}
		}		
	}
	
	//绘制棋盘
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
				
		int j=1;              //画棋盘的横格线      
		for(j=1;j<=yy;j++)		   
		{			
			g.drawLine(ppoint[1][j].x,ppoint[1][j].y,ppoint[xx][j].x,ppoint[xx][j].y);
		}
		int i=1;		//画棋盘的竖格线
		for(i=1;i<=xx;i++)
		{
			g.drawLine(ppoint[i][1].x,ppoint[i][1].y,ppoint[i][yy].x,ppoint[i][yy].y);
		}
		
		//画棋盘的两边提示坐标		            
		for(i=1;i<=xx;i++)
		{
			g.drawString(""+i,i*unitWidth,unitHeight/2);			
		}
		j=1;
		for(char c='A';c<='O';c++)
		{			
			g.drawString("   "+c,unitWidth/4,j*unitHeight);	
			j++;		
		}				
	}
	
	//处理鼠标点击的事件
	public void mouseClicked(MouseEvent e)	
	{	
		try
		{
		ChessPiece piece=null;		
		Rectangle rect=null;
		
		if(e.getSource()==this)		
		{			
			int p=(unitWidth-2)/2;
			int q=(unitHeight-2)/2;
			rect=new Rectangle((e.getX()-p),e.getY()-q,2*p,2*q);
			
			boolean containChessPoint=false;      //标识是否覆盖棋点的变量  
			int x=0,y=0;
			int m=0,n=0;
			
			//检查棋子当前覆盖的区域是否有一个棋点
		        for(int i=1;i<=xx;i++)
			{
				for(int j=1;j<=yy;j++)
				{
					x=ppoint[i][j].getX();
					y=ppoint[i][j].getY();
					if(rect.contains(x,y))
					{
						containChessPoint=true;
						m=i;
						n=j;
					}
				}				
			}
			
		        if(widthPlay==false&&blackPlay==true)       //如果该白方走棋
		        {
			      piece=new ChessPiece(Color.orange,Color.black,unitWidth-3,unitHeight-3,this);
			      ppoint[m][n].setPiece(piece,this);
			     
			      blackWon.a[n]=blackWon.a[n]+(2<<(m-1));    //置放置棋子的位置为1,即为有棋子
			      widthPlay=true;                            //置白方走棋为假,黑方走棋为真 
			      blackPlay=false;
			      
		              if(blackWon.isWon()==true)
		              {
		              	 System.out.println("黑方胜利!");       //如果有一方胜利,则置两方走棋都为假
		              	 blackPlay=false;                         //结束对弈
		              	 widthPlay=false;
		              }		      				
		        }		        
		        else if(widthPlay==true&&blackPlay==false)
		        {
			      piece=new ChessPiece(Color.orange,Color.white,unitWidth-3,unitHeight-3,this);
			      ppoint[m][n].setPiece(piece,this);
			     
			      whiteWon.a[n]=whiteWon.a[n]+(1<<m);
			      widthPlay=false;
			      blackPlay=true;
			      	
			      if(whiteWon.isWon()==true)
			      {
			      	 System.out.println("白方胜利!");	//如果有一方胜利,则置两方走棋都为假
			      	 blackPlay=false;                        //结束对弈 
		              	 widthPlay=false;
		              }		
		        }
		}
	       }
	       catch(Exception ex)
	       {	       	
	       }
	}
	
	public void mouseReleased(MouseEvent e)
	{
	}	
	public void mouseEntered(MouseEvent e)
	{
	}	
	public void mouseExited(MouseEvent e)
	{
	}	
	public void mousePressed(MouseEvent e)
	{
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -