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

📄 chess.java

📁 我在学习JAVA的讲义
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//中国象棋单机人人对战1.0版
//javaest
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;

class ChessPanel extends JPanel
{
	final int blue_car_1=1;//32个棋子分别用1-32来区分 
	final int blue_horse_1=2; 
	final int blue_elef_1=3; 
	final int blue_nurse_1=4;
	final int blue_master_1=5;
	final int blue_nurse_2=6; 
	final int blue_elef_2=7; 
	final int blue_horse_2=8;
	final int blue_car_2=9; 
	final int blue_pao_1=10;
	final int blue_pao_2=11;
	final int blue_bing_1=12;
	final int blue_bing_2=13;
	final int blue_bing_3=14;
	final int blue_bing_4=15;
	final int blue_bing_5=16;
	
	final int red_car_1=17; 
	final int red_horse_1=18;
	final int red_elef_1=19; 
	final int red_nurse_1=20;
	final int red_master_1=21;
	final int red_nurse_2=22; 
	final int red_elef_2=23; 
	final int red_horse_2=24;
	final int red_car_2=25; 
	final int red_pao_1=26; 
	final int red_pao_2=27; 
	final int red_bing_1=28;
	final int red_bing_2=29;
	final int red_bing_3=30;
	final int red_bing_4=31;
	final int red_bing_5=32;
	
	final int red=1;    //在分辩该谁走棋时用到这两个常量
	final int blue=-1;
	
	int now_qizi=0,goto_l,goto_h;//now_qizi是当前选中的棋子的编号,goto_l和_h是将要到的地方的行,列值
	Image qipan_pic=Toolkit.getDefaultToolkit().getImage("chessqipan.gif");//棋盘图片
	Image qizi_pic[]=new Image[33];//32个棋子的图片
	Image[][] everybox=new Image[9][10];//棋盘每一块的图片
	int[][] qipan=new int[9][10];//把当前棋盘的情况用此数组表示
	int[][] qizi=new int[33][5];//把当前棋子的。。。。。。。。。
	int moveqizi_l_num,moveqizi_h_num;//当用鼠标脱动棋子时,用它两个表示当前的位置
	int mouse_sign=-1;//用来确认当前是选中其子还是放(定位)棋子
	int turn_number=red;//该谁走
	//datainti()是娄据的初始化
	public void datainti()
	{
		for(int i=1;i<33;i++)
		{ 
			qizi[i][0]=i;//qizi[i][0]表示是哪 个子
			qizi[i][3]=0;//qizi[i][3]表示这个棋子是否正在脱动状态
			qizi[i][4]=0;//qizi[i][4]表示这个其子是否死亡.1死,0活
		}  
		qizi[1][1]=0; qizi[1][2]=0;//各各棋子的位置
		qizi[2][1]=1; qizi[2][2]=0;
		qizi[3][1]=2; qizi[3][2]=0;
		qizi[4][1]=3; qizi[4][2]=0;
		qizi[5][1]=4; qizi[5][2]=0; 
		qizi[6][1]=5; qizi[6][2]=0;
		qizi[7][1]=6; qizi[7][2]=0;
		qizi[8][1]=7; qizi[8][2]=0;
		qizi[9][1]=8; qizi[9][2]=0;
		qizi[10][1]=1; qizi[10][2]=2;
		qizi[11][1]=7; qizi[11][2]=2;
		qizi[12][1]=0; qizi[12][2]=3;
		qizi[13][1]=2; qizi[13][2]=3;
		qizi[14][1]=4; qizi[14][2]=3;
		qizi[15][1]=6; qizi[15][2]=3;
		qizi[16][1]=8; qizi[16][2]=3;
		
		qizi[17][1]=0; qizi[17][2]=9;
		qizi[18][1]=1; qizi[18][2]=9;
		qizi[19][1]=2; qizi[19][2]=9;
		qizi[20][1]=3; qizi[20][2]=9;
		qizi[21][1]=4; qizi[21][2]=9;
		qizi[22][1]=5; qizi[22][2]=9;
		qizi[23][1]=6; qizi[23][2]=9;
		qizi[24][1]=7; qizi[24][2]=9;
		qizi[25][1]=8; qizi[25][2]=9;
		qizi[26][1]=1; qizi[26][2]=7;
		qizi[27][1]=7; qizi[27][2]=7;
		qizi[28][1]=0; qizi[28][2]=6;
		qizi[29][1]=2; qizi[29][2]=6;
		qizi[30][1]=4;qizi[30][2]=6;
		qizi[31][1]=6; qizi[31][2]=6;
		qizi[32][1]=8; qizi[32][2]=6;
		//装载图片
		qizi_pic[blue_car_1]=Toolkit.getDefaultToolkit().getImage("blue_car.gif");
		qizi_pic[blue_car_2]=Toolkit.getDefaultToolkit().getImage("blue_car.gif");
		qizi_pic[blue_horse_1]=Toolkit.getDefaultToolkit().getImage("blue_horse.gif");
		qizi_pic[blue_horse_2]=Toolkit.getDefaultToolkit().getImage("blue_horse.gif");
		qizi_pic[blue_elef_1]=Toolkit.getDefaultToolkit().getImage("blue_elef.gif");
		qizi_pic[blue_elef_2]=Toolkit.getDefaultToolkit().getImage("blue_elef.gif");
		qizi_pic[blue_nurse_1]=Toolkit.getDefaultToolkit().getImage("blue_nurse.gif");
		qizi_pic[blue_nurse_2]=Toolkit.getDefaultToolkit().getImage("blue_nurse.gif");
		qizi_pic[blue_master_1]=Toolkit.getDefaultToolkit().getImage("blue_master.gif");
		qizi_pic[blue_pao_1]=Toolkit.getDefaultToolkit().getImage("blue_pao.gif");
		qizi_pic[blue_pao_2]=Toolkit.getDefaultToolkit().getImage("blue_pao.gif");
		qizi_pic[blue_bing_1]=Toolkit.getDefaultToolkit().getImage("blue_bing.gif");
		qizi_pic[blue_bing_2]=Toolkit.getDefaultToolkit().getImage("blue_bing.gif");
		qizi_pic[blue_bing_3]=Toolkit.getDefaultToolkit().getImage("blue_bing.gif");
		qizi_pic[blue_bing_4]=Toolkit.getDefaultToolkit().getImage("blue_bing.gif");
		qizi_pic[blue_bing_5]=Toolkit.getDefaultToolkit().getImage("blue_bing.gif");
		qizi_pic[red_car_1]=Toolkit.getDefaultToolkit().getImage("red_car.gif");
		qizi_pic[red_car_2]=Toolkit.getDefaultToolkit().getImage("red_car.gif");
		qizi_pic[red_horse_1]=Toolkit.getDefaultToolkit().getImage("red_horse.gif");
		qizi_pic[red_horse_2]=Toolkit.getDefaultToolkit().getImage("red_horse.gif");
		qizi_pic[red_elef_1]=Toolkit.getDefaultToolkit().getImage("red_elef.gif");
		qizi_pic[red_elef_2]=Toolkit.getDefaultToolkit().getImage("red_elef.gif");
		qizi_pic[red_nurse_1]=Toolkit.getDefaultToolkit().getImage("red_nurse.gif");
		qizi_pic[red_nurse_2]=Toolkit.getDefaultToolkit().getImage("red_nurse.gif");
		qizi_pic[red_master_1]=Toolkit.getDefaultToolkit().getImage("red_master.gif");
		qizi_pic[red_pao_1]=Toolkit.getDefaultToolkit().getImage("red_pao.gif");
		qizi_pic[red_pao_2]=Toolkit.getDefaultToolkit().getImage("red_pao.gif");
		qizi_pic[red_bing_1]=Toolkit.getDefaultToolkit().getImage("red_bing.gif"); 
		qizi_pic[red_bing_2]=Toolkit.getDefaultToolkit().getImage("red_bing.gif");
		qizi_pic[red_bing_3]=Toolkit.getDefaultToolkit().getImage("red_bing.gif");
		qizi_pic[red_bing_4]=Toolkit.getDefaultToolkit().getImage("red_bing.gif");
		qizi_pic[red_bing_5]=Toolkit.getDefaultToolkit().getImage("red_bing.gif");
		for(int i=0;i<10;i++)
			for(int j=0;j<9;j++)
			{
				ImageFilter filterObj=new CropImageFilter(ltoL(j)-34,htoH(i)-34,68,68);
				ImageProducer producerObj=new FilteredImageSource(qipan_pic.getSource(),filterObj);
				everybox[j][i]=createImage(producerObj);
			} 
		for(int i=0;i<9;i++)
			for(int j=0;j<10;j++)
				qipan[i][j]=0;
		for(int i=1;i<33;i++)
			qipan[qizi[i][1]][qizi[i][2]]=qizi[i][0];
		MediaTracker tracker=new MediaTracker(this);
		tracker.addImage(qipan_pic,0);
		for(int i=1;i<33;i++)
			tracker.addImage(qizi_pic[i],i);
		int n=33;
		for(int i=0;i<10;i++)
			for(int j=0;j<9;j++)
				tracker.addImage(everybox[j][i],n++);
		try
		{
			tracker.waitForAll();
		}
		catch(InterruptedException ex){}
	}
	//分辨率转成棋盘(H)
	public int Htoh(int h)
	{
		int o_h=51;
		int every_h=67;
		int h_num=(h-o_h+every_h/2)/every_h;
		return(h_num);
	}
	//L
	public int Ltol(int l)
	{
		int o_l=62;
		int every_l=68;
		int l_num=(l-o_l+every_l/2)/every_l;
		return(l_num);
	}
	//棋盘转成分辩率
	public int ltoL(int L)
	{
		int o_l=62;
		int every_l=68;
		int l_pix=o_l+L*every_l;
		return(l_pix);
	}
	
	public int htoH(int H)
	{
		int o_h=51;
		int every_h=67;
		int H_pix=o_h+H*every_h;
		return(H_pix);
	}
	//l,h处是否有子
	public boolean haveqizi(int l,int h)
	{
		if(qipan[l][h]!=0)
		{
			if(qizi[qipan[l][h]][4]==1)return(false);
			return(true);
		}  
		else 
			return(false);
	}
	//A&B 是一伙的吗?
	public boolean samefamily(int first_qizi,int second_qizi)
	{
		if((isred(first_qizi)==true&&isred(second_qizi)==true)||(isred(first_qizi)==false&&isred(second_qizi)==false))
			return(true);
		else 
			return(false);
	}
	//是红棋吗
	public boolean isred(int aqizi)
	{
		if(aqizi<=16)
			return(false);
		else 
			return(true);
	}
	//是兵吗
	public boolean isbing(int a_qizi)
	{
		if((a_qizi<=16&&a_qizi>=12)||(a_qizi<=32&&a_qizi>=28))
			return(true);
		else
			return(false);
	}
	//当前棋子可以放在(goto_l,goto_h)这吗?  
	public boolean isOK(int goto_l,int goto_h) 
	{
		int now_l=qizi[now_qizi][1],now_h=qizi[now_qizi][2];
		if(goto_l==now_l&&goto_h==now_h)return(false);
		if((now_qizi==blue_car_1||now_qizi==blue_car_2||now_qizi==red_car_1||now_qizi==red_car_2||now_qizi==blue_pao_1||now_qizi==blue_pao_2||now_qizi==red_pao_1||now_qizi==red_pao_2||now_qizi==blue_master_1||now_qizi==red_master_1||(now_qizi>=12&&now_qizi<=16)||(now_qizi>=28&&now_qizi<=32))&&now_l!=goto_l&&now_h!=goto_h)return(false);
		if(haveqizi(goto_l,goto_h)&&samefamily(qipan[goto_l][goto_h],now_qizi))return(false);
		if((now_qizi==blue_car_1||now_qizi==blue_car_2||now_qizi==red_car_1||now_qizi==red_car_2)&&between(now_l,now_h,goto_l,goto_h)!=0)return(false);
		if((now_qizi==blue_pao_1||now_qizi==blue_pao_2||now_qizi==red_pao_1||now_qizi==red_pao_2)&&between(now_l,now_h,goto_l,goto_h)!=0&&between(now_l,now_h,goto_l,goto_h)!=1)return(false);
		if((now_qizi==blue_pao_1||now_qizi==blue_pao_2||now_qizi==red_pao_1||now_qizi==red_pao_2)&&between(now_l,now_h,goto_l,goto_h)==1&&(haveqizi(goto_l,goto_h)&&samefamily(now_qizi,qipan[goto_l][goto_h])||(!haveqizi(goto_l,goto_h))))return(false);
		if((now_qizi==blue_pao_1||now_qizi==blue_pao_2||now_qizi==red_pao_1||now_qizi==red_pao_2)&&between(now_l,now_h,goto_l,goto_h)==0&&haveqizi(goto_l,goto_h))return(false);
		if((now_qizi==blue_master_1||now_qizi==red_master_1)&&(goto_l<3||goto_l>5))return(false);
		if(now_qizi==blue_master_1&&goto_h>2)return(false);
		if(now_qizi==red_master_1&&goto_h<7)return(false);

⌨️ 快捷键说明

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