📄 ta.java
字号:
ww.paint(g);
//g.setColor(100,0,20);
g.setColor(0,220,0);
g.fillRect(40,60,155,150);
g.setColor(0,0,0);
g.fillRect(40,60,155,10);
g.fillRect(40,60,10,150);
g.fillRect(185,60,10,150);
g.fillRect(40,205,155,10);
first=false;
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL));
g.setColor(20,20,50);
g.drawString("赌神:1000万",0,0,Graphics.LEFT | Graphics.TOP);
g.drawString("赌圣:1000万",0,14,Graphics.LEFT | Graphics.TOP);
g.drawString("赌侠:1000万",0,29,Graphics.LEFT | Graphics.TOP);
g.drawString("赌鬼:5万",0,43,Graphics.LEFT | Graphics.TOP);
g.drawString("赌神",150,20,Graphics.LEFT | Graphics.TOP);
g.drawString("赌圣",200,90,Graphics.LEFT | Graphics.TOP);
g.drawString("赌侠",5,100,Graphics.LEFT | Graphics.TOP);
g.drawString("赌鬼",100,220,Graphics.LEFT | Graphics.TOP);
}
if(pass&&whos_turn==0&&fire_down)
{
if(judge!=4)
{
g.setColor(100,0,0);
g.fillRect(100,165,45,40);
whos_turn++;
judge++;
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL));
g.setColor(200,0,10);
g.drawString("pass",102,170,Graphics.LEFT | Graphics.TOP);
out_card=0;
pass=false;
fire_down=false;
}
}
if(out_card>0&&whos_turn==0&&fire_down)
{
//这里需要判断是否能出牌
g.setColor(100,0,0);
g.fillRect(100,165,40,40);
int j=0;
for(int i=1;i<=13;i++)
{
if(is_up[i]==1)
{
card2[j]=card[0][i];
type2[j]=type[0][i];
is_up[i]=2;
j++;
}
}
if(judge==4)
{
sum_cards=out_card;
for(int i=0;i<sum_cards;i++)
{
card1[i]=i;
type1[i]=i;
}
}
j=0;
if(compare(card1,type1,card2,type2,sum_cards)&&out_card==sum_cards)
{
for(int i=0;i<sum_cards;i++)
{
card1[i]=card2[i];
type1[i]=type2[i];
}
judge=1;
all[0]-=sum_cards;
whos_turn++;
for(int i=0;i<sum_cards;i++)
{
drawcard(g,card1[i],type1[i],102+i*5,167);
}
}
else
{
for(int i=1;i<=13;i++)
{
is_up[i]=0;
}
}
for(int i=1;i<=13;i++)
{
if(is_up[i]==0)
{
j++;
card[0][j]=card[0][i];
type[0][j]=type[0][i];
is_up[j]=0;
}
}
fire_down=false;
out_card=0;
}
if(can_draw)
{
g.setColor(0,220,0);
g.fillRect(0,240,250,50);
for(int i=1;i<=all[0];i++)
{
if(is_up[i]==1)
{
drawcard(g,card[0][i],type[0][i],40+i*10,240);
}
if(is_up[i]==0)
{
drawcard(g,card[0][i],type[0][i],40+i*10,250);
}
}
if(key)
{
if(which>=all[0])
{
which=all[0];
}
g.setColor(20,250,10);
if(which!=0)
{
if(is_up[which]==1)
{
g.drawRect(40+which*10,240,20,30);
}
else if(is_up[which]==0)
{
if(which<all[0])
g.drawRect(40+which*10,250,10,30);
else
g.drawRect(40+which*10,250,20,30);
}
}
}
can_draw=false;
}
this.flushGraphics();
}
private void input()
{
int k=getKeyStates();
if((k&RIGHT_PRESSED)!=0)
{
/*try {
play.start();
} catch (MediaException ex)
{ ex.printStackTrace(); }*/
which++;
if(which>all[0])
which=0;
can_draw=true;
key=true;
}
if((k&LEFT_PRESSED)!=0)
{
/*try {
play.start();
} catch (MediaException ex)
{ ex.printStackTrace(); }*/
which--;
if(which<0)
which=all[0];
can_draw=true;
key=true;
}
if((k&UP_PRESSED)!=0)
{
/*try {
play.start();
} catch (MediaException ex)
{ ex.printStackTrace(); }*/
is_up[which]=1;
can_draw=true;
}
if((k&DOWN_PRESSED)!=0)
{
/*try {
play.start();
} catch (MediaException ex)
{ ex.printStackTrace(); }*/
is_up[which]=0;
can_draw=true;
}
if((k&FIRE_PRESSED)!=0)
{
/*try {
play.start();
} catch (MediaException ex)
{ ex.printStackTrace(); }*/
for(int i=1;i<=all[0];i++)
if(is_up[i]==1)
{
out_card++;
}
if(out_card==0)
{
pass=true;
can_draw=true;
}
else if(out_card>0)
can_draw=true;
fire_down=true;
}
}
public void givecard()//这是随机分牌的方法
{
int allcard[]=new int[52],allcardtype[]=new int[52],nn=1,tt=0,end=52,v;
for(int i=0;i<52;i++)
{
tt++;
if(tt==5)
{
tt=1;
nn++;
}
allcard[i]=nn;
allcardtype[i]=tt;
}
nn=0;
tt=0;
Random random=new Random();
while(end!=0)
{
v=Math.abs(random.nextInt())%end;
if(allcard[v]==3&&allcardtype[v]==4)
{
whos_turn=nn;
}
switch(nn)
{
case 0:card[0][tt+1]=allcard[v];type[0][tt+1]=allcardtype[v];break;
case 1:card[1][tt]=allcard[v];type[1][tt]=allcardtype[v];break;
case 2:card[2][tt]=allcard[v];type[2][tt]=allcardtype[v];break;
case 3:card[3][tt]=allcard[v];type[3][tt]=allcardtype[v];break;
}
nn++;
if(nn==4)
{
nn=0;
tt++;
}
end--;
if(end!=v)
{
allcard[v]=allcard[end];
allcardtype[v]=allcardtype[end];
}
}
for(int i=0;i<=3;i++)
{
all[i]=13;
}
judge=4;
}
public void sub(){
int token = 0 ;
for(int i = 0 ; i<sum_cards;i++){
for(int j = 0 ;j<14;j++){
if(card1[i]==card[whos_turn][j]&&type1[i]==type[whos_turn][j]) {
for(int k = j ; k <13; k++){
card[whos_turn][k] = card[whos_turn][k+1] ;
type[whos_turn][k] = type[whos_turn][k+1] ;
}
}
}
token++;
if(token ==sum_cards) break;
}
}
public boolean compare(int[] a1,int[] a2, int[] b1,int[] b2,int total){
if(total == 1){
if(b1[0]>a1[0]) return true ;
else if(b1[0] == a1[0])
{
if(b2[0]>a2[0]) return true ;
else return false ;
}
else return false ;
}
if(total == 2){
//如果是非法类型,返回false。
if(b1[0]!=b1[1]){System.out.println("type error");return false;}
//如果类型正确,开始比较。
if(b1[0]>a1[0]) return true;
else if(b1[0] == a1[0]){
if(b2[0]==4||b2[1] == 4) return true;
else return false ;
}
else return false ;
}
if(total == 3){
//如果是非法类型,返回false
if(b1[0]!=b1[1]||b1[1]!=b1[2]){System.out.println("error");return false ;}
//如果类型正确,开始比较。
if(b1[0]>a1[0]) return true;
else return false ;
}
if(total == 5) {
//对俩副牌从大到小排列
int typeb =0;
int typea,tempa1,tempa2,tempb1,tempb2;
int tokena = 1;
int tokenb = 1;
for(int i = 0 ; i < 4 ; i++ ){
tempa1 = i ;
for(int j = i+1 ;j<5 ; j++)
if(a1[tempa1]<a1[j]) tempa1 = j;
if(tempa1 != i){
tempa2 = a1[tempa1];
a1[tempa1] = a1[i];
a1[i] = tempa2 ;
}
tempb1 = i;
for(int j = i+1 ;j<5 ; j++)
if(b1[tempb1]<b1[j]) tempb1 = j ;
if(tempb1 != i ){
tempb2 = b1[tempb1] ;
b1[tempb1] = b1[i];
b1[i] = tempb2 ;
}
}
/////////////////////////判断是否是同花///////////////////////////////////////
for(int i = 0 ; i < 4 ; i++){
if(a2[i] != a2[i+1]) {
tokena = 0 ;
break ;
}
}
for(int i = 0 ;i<4;i++){
if(b2[i] != b2[i+1]){
tokenb = 0 ;
break ;
}
}
// System.out.println(tokenb);
////////////////////开始给牌定级别//////////////////////////////////////
if(tokena == 1){
int serie = 1 ;
for(int i = 0 ; i<4 ; i++)
{
if(a1[i] != a1[i+1]+1){
serie = 0 ;
break ;
}
}
if(serie == 1) typea = 5 ;
else typea = 2 ;
}
else {
if((a1[0]==a1[1]&&a1[1]==a1[2]&&a1[2]==a1[3])||(a1[1]==a1[2]&&a1[2]==a1[3]&&a1[3]==a1[4])) typea = 4 ;
else if((a1[0]==a1[1]&&a1[1]==a1[2])||(a1[2]==a1[3]&&a1[3]==a1[4])) typea = 3 ;
else typea = 1 ;
}
if(tokenb == 1){
int serie = 1 ;
for(int i = 0 ; i<4 ; i++)
{
//System.out.println(i+":"+b1[i+1]);
if(b1[i] != b1[i+1]+1){
serie = 0 ;
break ;
}
}
//System.out.println(serie);
if(serie == 1) typeb = 5 ;
else typeb = 2 ;
}
else {
if((b1[0]==b1[1]&&b1[1]==b1[2]&&b1[2]==b1[3])||(b1[1]==b1[2]&&b1[2]==b1[3]&&b1[3]==b1[4])) typeb = 4 ;
else if((b1[0]==b1[1]&&b1[1]==b1[2]&&b1[3]==b1[4])||(b1[0]==b1[1]&&b1[2]==b1[3]&&b1[3]==b1[4])) typeb = 3 ;
else {
int serie = 1 ;
for(int i = 0 ; i<4 ;i++){
if(b1[i] != b1[i+1]+1){
serie = 0;
break;
}
}
//System.out.println("serie:"+serie);
if(serie == 1) typeb = 1;
}
}
System.out.println(typea+" "+typeb);
//System.out.println(tokena+"\n"+tokenb);
//如果是非法类型,返回false。
if(typeb !=1&&typeb!=2&&typeb!=3&&typeb!=4&&typeb!=5) {System.out.println("error");return false;}
/////////////开始比较牌的大小///////////////////////////////////////////////
if(typeb > typea) return true ;
else if(typeb == typea){
switch(typea){
case 5:{
if(b2[0]>a2[0]) return true ;
else if(b2[0]==a2[0]) {
if(b1[0]>a1[0]) return true ;
else return false ;
}
else return false ;
}
case 4:{
if(b1[2]>a1[2]) return true;
else return false ;
}
case 3:{
if(b1[2]>a1[2]) return true ;
else return false ;
}
case 2:{
if(b2[0]>a2[0]) return true ;
else if(b2[0] == a2[0]){
if(b1[0]>a1[0]) return true ;
else return false ;
}
else return false ;
}
case 1:{
if(b1[0]>a1[0]) return true;
else return false ;
}
}
}
}
return false ;
}
public void shu(int fi[],int se[],int th[],int fv[],int fi1[],int se2[],int th3[],int fv5[],int mycard[],int hs[])
{
int ff=0,second=0,three=0,four=0,fff=0,six=0,seven=0,eight=0,nine=0,ten=0,eleven=0,twelve=0;
int a=0,b=0,k=0,n=0,n1=0;
int b1=0,k1=0,r1=0,r2=0,r3=0,r4=0;
int m[]=new int[13];
int mm[]=new int[13];
int thirteen=0;
for(int i=0;i<13;i++)
{ switch(mycard[i])
{ case 1:ff++;m[0]=ff;
break;
case 2:second++;m[1]=second;
break;
case 3:three++;m[2]=three;
break;
case 4:four++;m[3]=four;
break;
case 5:fff++;m[4]=fff;
break;
case 6:six++;m[5]=six;
break;
case 7:seven++;m[6]=seven;
break;
case 8:eight++;m[7]=eight;
break;
case 9:nine++;m[8]=nine;
break;
case 10:ten++;m[9]=ten;
break;
case 11:eleven++;m[10]=eleven;
break;
case 12:twelve++;m[11]=twelve;
break;
case 13:thirteen++;m[12]=thirteen;
break;
default:break;
}
}
ff=0;
for(int i=0;i<13;i++)
{ if(m[i]==1)
{ fi[a]=i+1; a++;
for(int j=0;j<13;j++)
{ if(mycard[j]==i+1) fi1[ff]=hs[j];
}
ff++;
}
////////////////////////////////////////////////
if(m[i]==2)
{ se[b]=i+1;
++b;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -