📄 carder.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 + -