-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathACard.java
107 lines (105 loc) · 2.52 KB
/
ACard.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package DRAKO.unit;
import DRAKO.img.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class ACard extends ImgJButton
{
private static final long serialVersionUID=1L;
int go,size=0,id,hand_id;
boolean _tag=false;
ACard _next;
public ACard(int id,ActionListener cardl,ImgLoader imgloader){
super(imgloader.get(id));
this.id=id;
setBounds(0,0,100,150);
addActionListener(cardl);
_next=null;
}
public void moveto(int x,int mv){
go=x;
_tag=true;
Thread move= new Thread(new Runnable(){
public void run(){
int now=getLocation().x,mv=(now<go)? 1:-1;
while(now!=go){
now+=mv;
setLocation(now,getLocation().y);
try{
java.lang.Thread.sleep(1);
}catch(InterruptedException e){}
}
_tag=false;
}
});
if(haveNext())next().moveto(x+mv,mv);
move.start();
}
public int lenght(){
return size;
}
public ACard next(){
return _next;
}
public boolean haveNext(){
return _next!=null;
}
public boolean getTag(){
if(haveNext())return _tag||_next.getTag();
return _tag;
}
public JButton add(int id,ActionListener cardl,ImgLoader imgloader){
size+=1;
if(_next!=null){
return _next.add(id,cardl,imgloader);
}
_next=new ACard(id,cardl,imgloader);
System.out.println("Success adding ");
return _next;
}
public ACard _remove(int rv){
size-=1;
if(rv!=_next.get_hand_id())return _next._remove(rv);
_next.go=-150;
_next._tag=true;
ACard rm=_next;
Thread move= new Thread(new Runnable(){
public void run(){
int now=_next.getLocation().y,mv=-1;
while(now!=_next.go){
now+=mv;
_next.setLocation(_next.getLocation().x,now);
try{
java.lang.Thread.sleep(1);
}catch(InterruptedException e){}
}
_next._tag=false;
_next=_next._next;
}
});
move.start();
return rm;
}
public int get_id(){
return id;
}
public int get_hand_id(){
return hand_id;
}
public void _setEnabled(boolean x){
if(haveNext())_next._setEnabled(x);
setEnabled(x);
}
public int[][] get_handcard(int[][] stack,int p,int tag){
if(p==-1)return haveNext()? _next.get_handcard(stack,p+1,tag):stack;
if(p>=0)stack[p]=new int[]{id,hand_id};
if(tag==0&&p>=0&&!(id==6||id==7||id==9||id==10||id==16||id==26||id==27))stack[p][1]=0;
if(haveNext())return _next.get_handcard(stack,p+1,tag);
return stack;
}
public void set_hand_id(int h_id){
hand_id=h_id;
if(haveNext())_next.set_hand_id(h_id+1);
}
}