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

📄 carder.java

📁 类似于WINDOWS自带纸牌游戏的源码。
💻 JAVA
字号:
package src;


import java.awt.*;

import javax.swing.*;
import java.awt.event.*;
import java.util.Hashtable;
public class Carder extends JLabel implements MouseListener,MouseMotionListener
{
    //纸牌的位置
	Point point=null;
	Point initpoint=null;
	int value =0;
	int type=0;
	String name=null;
	int huase=0;
	int mn=0;
	int abc=0;
	int abcd=0;
	int b=24;
	int c=0;
	Container pane=null;
	Zhipai main=null;
	Point ypoint=null;
	boolean canMove=false;
	boolean canPut=false;
	Carder previousCard=null;
	boolean isFront=false;
	boolean isFirst=false;
	boolean canFront=false;
	//Carder card=null;
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
//点击鼠标
	public void mousePressed(MouseEvent mp) {
		Point point1=((JLabel) mp.getSource()).getLocation();
		if(point1.x<100 && point1.y<100){
			main.d=52-b;
			b--;
			c=0;
			if(main.d==52){main.d=28;b=24;}
			while(main.paidui[main.d-28]==0){
				if(main.d==52){main.d=28;b=24;}
				else{
				main.d++;
				b--;
				c++;
				if(c==24){ main.groundLabel[7].setBounds(110,25,71,96);}
				if(b<0){b=0;}
				}
			}
			c=0;
			pane.add(main.cards[main.d]);
			pane.setComponentZOrder(main.cards[main.d], 1);
			main.cards[main.d].turnFront();
			main.cards[main.d].moveto(new Point(110,25));
		}
		else {
		if(this.canMove==true){
		point =mp.getPoint();
		if(point1.y>190){
		mn=(point1.x-20)/130;
		}
		else if(point1.y<100 && point1.x<200){
			mn=7;
			System.out.println(mn);
		}
		else if(point1.y<100 &&point1.x>300)
		{
			mn=(point1.x-300)/130+8;
		}
		main.columns[mn]--;
		System.out.println(main.columns[mn]);
		//point1.x=20;
		//point1.y=200;
		//Carder card1=(Carder) main.table.get(point1);
		Carder card=main.getNextCard(this);
		Carder card2=main.getPreviousCard(this);
		if(card2 !=null){
		card2.isFirst=true;
		while(card!=null){
			main.columns[mn]--;
			System.out.println(main.columns[mn]);
			card=main.getNextCard(card);
		}
		}
		}
		}
	
	}
//释放鼠标
	public void mouseReleased(MouseEvent mr) {
		if(this.canMove==false ){
			if(this.isFirst==true)
			{this.turnFront();}
			else {
				this.turnRear();
			}
		}
		else{
		Point point=((JLabel) mr.getSource()).getLocation();
		//判断可行列
		int n=this.whichColumnAvailable(point);
		if(n!=-1){
			Carder card=main.getNextCard(this);
			Point point2=new Point();
			point2=main.Available(n);
			Point point1=new Point();
			point1.x=point2.x;
			point1.y=point2.y-20;
			Carder card2=(Carder) main.table.get(point1);
			if(n<7){
			if(card2 ==null){
				if(this.value%13+1==13){
					main.columns[n]++;
					if(mn==7){//main.columns[7]--;
						main.paidui[main.d-28]=0;
					}
					this.setLocation(point2);
					main.table.put(point2,this);
					while(card !=null){
						Carder card1=main.getNextCard(card);
						point2=main.Available(n);
						System.out.println(point2.y);
						card.setLocation(point2);
						main.table.put(point2,card);
						main.columns[n]++;
						card=card1;
				}
				}
			}
			else if(point2.y>190){
			if((this.value)%13+1==((card2.value)%13) && (this.type+card2.type)%2==1){
				this.setLocation(point2);
				if(mn==7){main.columns[7]--;
					main.paidui[main.d-28]=0;
				}
				main.columns[n]++;
				main.table.put(point2,this);
			while(card !=null){
				Carder card1=main.getNextCard(card);
				point2=main.Available(n);
				card.setLocation(point2);
				System.out.println(point2.y);
				main.table.put(point2,card);
				main.columns[n]++;
				card=card1;
			}
			}
			/*else if((this.value)%13+1==card2.value && (this.type+card2.type)%2==1){
				this.moveto(point2);
				this.setLocation(point2);
				if(mn==7){main.columns[7]--;}
				if(mn==7){
					main.paidui[main.d-28]=0;
				}
				main.columns[n]++;
				main.table.put(point2,this);
			while(card !=null){
				Carder card1=main.getNextCard(card);
				point2.y+=20;
				card.setLocation(point2);
				main.table.put(point2,card);
				main.columns[n]++;
				card=card1;
			}
			}*/
			else {
				point1=main.Available(mn);
				this.setLocation(point1);
				main.columns[mn]++;
				main.table.put(point1, this);
				while(card !=null){
					Carder card1=main.getNextCard(card);
					point1 =main.Available(mn);
					card.setLocation(point1);
					System.out.println(mn);
					main.table.put(point1,card);
					main.columns[mn]++;
					card=card1;
			}
			}
			}
				}
			else if(n>7){
				if(main.columns[n]==0 && this.value%13==0){
					this.setLocation(point2);
					if(mn==7){main.columns[7]--;
						main.paidui[main.d-28]=0;
					}
					main.columns[n]++;
					main.table.put(point2,this);
				}
				else if(main.columns[n] !=0)
				{Point pointa=new Point();
				pointa.x=point2.x;
				pointa.y=point2.y-1;
				Carder carda=(Carder) main.table.get(pointa);
				if(this.type==carda.type && this.value-1==carda.value){
					this.setLocation(point2);
					if(mn==7){main.columns[7]--;
						main.paidui[main.d-28]=0;
					}
					main.columns[n]++;
				    main.table.put(point2, this);
				}
				
				}
				else {
					point1=main.Available(mn);
					this.setLocation(point1);
					main.columns[mn]++;
					main.table.put(point1, this);
					while(card !=null){
						Carder card1=main.getNextCard(card);
						point1=main.Available(mn);
						card.setLocation(point1);
						main.table.put(point1,card);
						main.columns[mn]++;
						card=card1;
				}
				}
				}
			/*else if(n==7){
				point1=main.Available(mn);
				this.setLocation(point1);
				//main.columns[mn]++;
				main.table.put(point1, this);
				
			}*/
		}
		else {
			Carder card=main.getNextCard(this);
			Point point1=new Point();
			point1=main.Available(mn);
		/*if(mn==7){main.columns[7]--;
			main.paidui[main.d-28]=0;
			this.setLocation(new Point(110,25));
		} */
			this.setLocation(point1); 
			main.columns[mn]++;
			main.table.put(point1, this);
			while(card !=null){
				Carder card1=main.getNextCard(card);
				point1 =main.Available(mn);
				card.setLocation(point1);
				main.table.put(point1,card);
				main.columns[mn]++;
				card=card1;
			}
			}
		}
		}
	


	public int whichColumnAvailable(Point point) {
		int x=point.x;
		int y=point.y;
		int a=(x-20)/130;
	    int b=(x-20)%130;
	    int c=(x-300)/130;
	    if(y>200 && b<70){
	    	return a;
	    }
	    else if(y>200 && b>100){
	    	return a++;
	    }
	    else if(y<100 && b<70 && x>290){
	    	return c+8;
	    }
	    else if(y<100 && b>100 && x>290)
	    {   return c+9;}
	    
	    else
	    {return -1;}
}
	public void mouseDragged(MouseEvent arg0) {
		if(canMove){
			int x=0;
			int y=0;
			Point p=arg0.getPoint();
			x=p.x-this.point.x;
			y=p.y-this.point.y;
			this.moving(x,y);
		}
	}
	//移动(x,y)个位置
	public void moving(int x,int y){
		Carder card=main.getNextCard(this);
		Point p = this.getLocation();
		pane.setComponentZOrder(this, 1);
		main.table.remove(p);
		p.x+=x;
		p.y+=y;
		this.setLocation(p);
		main.table.put(p,this);
		if(card !=null)  card.moving(x, y);
	}

	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	//令纸牌显示正面
	public void turnFront(){
		this.setIcon(new ImageIcon(name+".gif"));
		this.isFront=true;
		this.canMove=true;
	}
	//领纸牌显示背面
	public void turnRear(){
		this.setIcon(new ImageIcon("rear.gif"));
		this.isFront=false;
		this.canMove=false;
	}
	
    //将纸牌移动到点point
	public void moveto(Point point){
		this.setLocation(point);
		this.initpoint=point;
	}
	
	//构造函数
	public Carder(int a,Zhipai zhipai,Container pane1){
		super();
		this.value=a;
		this.type=a/13;
		this.name=Integer.toString(this.value+1);
		this.setIcon(new ImageIcon(name+".gif"));
		this.main=zhipai;
		this.pane=pane1;
		this.isFirst=false;
		this.addMouseListener(this);
		this.addMouseMotionListener(this);
		this.setSize(71,96);
		this.setVisible(true);
		this.canFront=false;
	}
	public int getCardValue(){
		return value;
	}
    public int getCardType(){
    	return type;
    }
    public void setNextCardLocation(Point point){
    	//放置纸牌
    	Carder card=main.getNextCard(this);
        
    }
    
}




⌨️ 快捷键说明

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