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

📄 chessroom.java

📁 此程序在JAVA界面上实现下五指棋的功能
💻 JAVA
字号:

import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.image.*;
import java.io.*;
import java.awt.event.*;
import java.lang.String;

/*
 * 0 - No Chess.
 * 1 - Black.
 * 2 - White.
 */
class ChessRoom extends Panel
{	
	private int x=0;
	private int y=0;
	public int _col, _row;
	private int index[][]=new int[15][15];
	private Border border=new Border();
	ClientFrame cf;

	ChessRoom(ClientFrame cf)
	{
		this.cf = cf;
		
		add(border);
		//border.setLocation(15,5);
		border.setBounds (40,27,420,420);
		border.setBackground(Color.DARK_GRAY);
		border.setForeground(Color.white);
		
		this.setLayout (null);
		border.addMouseListener(new mouselistener());

		setSize(500,500);
		setVisible(true);
		setBackground(Color.DARK_GRAY);
		
	}
	
	public void addChess(int row,int col,int color)
	{
		index[row][col] = color;
		border.repaint();
	}
	
	
	class mouselistener extends MouseAdapter//点击棋盘 并将下子信息通知对方
	{
		public void mouseClicked(MouseEvent evt)
        {
        	if(cf.is_own_turn == false)
        		return;
            x=evt.getX();
            y=evt.getY();
            for(int i=0;i<=14;i+=1)
				for(int j=0;j<=14;j+=1)
				{
					if(x>14+i*28-14&&x<=14+i*28+14&&y>14+j*28-14&&y<=14+j*28+14)
					//判断时候越界
						if(index[i][j]==0)
						{
							cf.setOwnTurn(false);
							
							_row=i;
							_col=j;
							if(index[_row][_col]!=0)
								return;
							addChess(_row, _col, cf.is_black ? 1 : 2);
							ClientFrame.out.println(
								MsgType.PUTCHESS+" "+
								cf.adversary+" "+
								_row+" "+
								_col);
							ClientFrame.out.flush();
            				return;
            			}
            	
				}
            
        }
        
	}
	
	class Border extends Canvas
	{		
		Image image[]=new Image[3];
    	public Border()
    	{
    		for(int i=0;i<=14;i++)
				for(int j=0;j<=14;j++)
					index[i][j]=0; //清空棋盘
				
      		
      		image[0]=this.getToolkit().getImage(ClassLoader.getSystemResource("003.gif"));
      		image[1]=this.getToolkit().getImage(ClassLoader.getSystemResource("004.gif"));
      		MediaTracker mt=new MediaTracker(this);
      		mt.addImage(image[0],1);
      		mt.addImage(image[1],2);
      		try
      		{
      			mt.waitForAll();
      		}catch(Exception e){}
      		//mt.addImage(image[2],3,24,24);
      	}

    	public void paint(Graphics g)
    	{
     	 	Graphics2D g2D = (Graphics2D)g;
			BufferedImage bimage1=(BufferedImage)this.createImage(this.getWidth(),this.getHeight());
      		Graphics gg = bimage1.createGraphics();
      	
      		for(int i=14;i<=406;i+=28)
      		{
      			gg.drawLine(i,14,i,406);
      		}
       
	  		for(int j=14;j<=406;j+=28)
	  		{
	  			gg.drawLine(14,j,406,j);
	  		}
	  		//draw yuan
	  		
	  		//draw line
	  	
	  		for(int i=0;i<=14;i+=1)
				for(int j=0;j<=14;j+=1)
				{
					if(index[i][j]==1)
					{
						gg.drawImage(this.image[0],i*28,j*28,28,28,this);

      				}
      				else if(index[i][j]==2)
      				{
      					gg.drawImage(this.image[1],i*28+2,j*28+3,24,22,this);
      					
      				}
				}
			g2D.drawImage(bimage1,0,0,this);	
		}
		
		public void update(Graphics g)
		{
			paint(g);
		}	
	}
	
	public void clear()
	{
		for(int i=0; i<15; i++)
			for(int j=0; j<15; j++)
		{		index[i][j]=0;
		paint(getGraphics());}
	}

	public boolean isOver(int row, int col)
	{
		int dirs[][]={
			{1, 0},
			{1, 1},
			{0, 1}, 
			{-1, 1}};
			
		//	Get color of adversary
		int ac=index[row][col];
		int leng=1;
		for(int dir=0; dir<4; dir++)
		{
			int c, r;
			int i;
			leng=1;
			for(i=1; i<5; i++)
			{
				c=col+i*dirs[dir][0];
				r=row+i*dirs[dir][1];
				if(c<0 || r<0 || c>14 || r>14)
					break;
				if(index[r][c]==ac)
					leng++;
				else
					break;
			}
			for(i=1; i<5; i++)
			{
				c=col-i*dirs[dir][0];
				r=row-i*dirs[dir][1];
				if(c<0 || r<0 || c>14 || r>14)
					break;
				if(index[r][c]==ac)
					leng++;
				else
					break;
			}
			System.out.println("Received chess at ["+
				row+" "+col+
				"] leng is now "+leng);
			if(leng >= 5)
				return true;
		}
		return false;
	}
} 

⌨️ 快捷键说明

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