📄 doudizhuyuanma.txt
字号:
for(int j=0;j<card_face.length;j++)
s.clearCardIDarray(card_face[j]);
//设置未出牌数
s.setsqunout(card_face.length);
return true;
}
//未找到匹配的连子
else return false;
}//playLianZi2()
//分析方法
public void analyse(SPlayers s){
for(int m=0;m<2;m++)
for(int i=0;i<13;i++)
tmp[i][m]=0;
//分析出各组各种牌个数,并记录每组非空起始位置:tmp[][1]中存起始位置
for(int i=0,count=0;i<4;i++){
if(s.cardID_Player[i]==1) tmp[0][0]++;
if(tmp[0][0]==1&&count==0) {tmp[0][1]=i;count=1;}
}
for(int i=4,count=0;i<8;i++){
if(s.cardID_Player[i]==1) tmp[1][0]++;
if(tmp[1][0]==1&&count==0) {tmp[1][1]=i;count=1;}
}
for(int i=8,count=0;i<12;i++){
if(s.cardID_Player[i]==1) tmp[2][0]++;
if(tmp[2][0]==1&&count==0) {tmp[2][1]=i;count=1;}
}
for(int i=12,count=0;i<16;i++){
if(s.cardID_Player[i]==1) tmp[3][0]++;
if(tmp[3][0]==1&&count==0) {tmp[3][1]=i; count=1;}
}
for(int i=16,count=0;i<20;i++){
if(s.cardID_Player[i]==1) tmp[4][0]++;
if(tmp[4][0]==1&&count==0) {tmp[4][1]=i;count=1;}
}
for(int i=20,count=0;i<24;i++){
if(s.cardID_Player[i]==1) tmp[5][0]++;
if(tmp[5][0]==1&&count==0) {tmp[5][1]=i;count=1;}
}
for(int i=24,count=0;i<28;i++){
if(s.cardID_Player[i]==1) tmp[6][0]++;
if(tmp[6][0]==1&&count==0) {tmp[6][1]=i;count=1;}
}
for(int i=28,count=0;i<32;i++){
if(s.cardID_Player[i]==1) tmp[7][0]++;
if(tmp[7][0]==1&&count==0) {tmp[7][1]=i;count=1;}
}
for(int i=32,count=0;i<36;i++){
if(s.cardID_Player[i]==1) tmp[8][0]++;
if(tmp[8][0]==1&&count==0) {tmp[8][1]=i;count=1;}
}
for(int i=36,count=0;i<40;i++){
if(s.cardID_Player[i]==1) tmp[9][0]++;
if(tmp[9][0]==1&&count==0) {tmp[9][1]=i;count=1;}
}
for(int i=40,count=0;i<44;i++){
if(s.cardID_Player[i]==1) tmp[10][0]++;
if(tmp[10][0]==1&&count==0) {tmp[10][1]=i;count=1;}
}
for(int i=44,count=0;i<48;i++){
if(s.cardID_Player[i]==1) tmp[11][0]++;
if(tmp[11][0]==1&&count==0) {tmp[11][1]=i;count=1;}
}
for(int i=48,count=0;i<52;i++){
if(s.cardID_Player[i]==1) tmp[12][0]++;
if(tmp[12][0]==1&&count==0) {tmp[12][1]=i;count=1;}
}
}
//出连子
public void playLianZi(SPlayers s){
int start=-1;
start=last-len+1;//连子开始组号
int[] a1=new int[12];
for(int i=0;start<=last;start++,i++){
a1[i]=tmp[start][1];
}
setCardFaceArray(len,a1);
//出牌后对玩家手中的牌进行相应清理
for(int j=0;j<card_face.length;j++)
s.clearCardIDarray(card_face[j]);
//设置未出牌数
s.setsqunout(card_face.length);
}
//找连子(不包括从其他类型组中取单张)
public boolean searchLianZi(int[][] tmp){
int[] tmp2=new int[12];//tmp2记录单牌组组号
last=-1;
len=1;
int j=0;
for(int i=0;i<12;i++,j++)
if(tmp[i][0]==1)
tmp2[j]=i;
int k=j;
//找连子
for(j=0;k>=5&&j<k;j++){
while(j+1<k&&tmp2[j+1]==tmp2[j]+1){
len++;
if(len>=5) last=j+1;
j++;
}
if(j+1<k&&len<5) len=1;
}//for
if(len>=5) return true;
else
return false;
}
//找单张
public boolean searchDanZhang(int[][] tmp){
start_s=-1;
for(int i=0;i<13;i++)
if(tmp[i][0]==1){
start_s=i;
break;
}
if(start_s!=-1) return true;
else return false;
}
//出单张
public void playDanZhang(SPlayers s){
int[] a1=new int[1];
a1[0]=tmp[start_s][1];
setCardFaceArray(1,a1);
//出牌后对玩家手中的牌进行相应清理
s.clearCardIDarray(card_face[0]);
//设置未出牌数
s.setsqunout(1);
}
//找对子
public boolean searchDuiZi(int[][] tmp){
start_s=-1;
for(int i=0;i<13;i++)
if(tmp[i][0]==2){
start_s=i;
break;
}
if(start_s!=-1) return true;
else return false;
}
//出对子
public void playDuiZi(SPlayers s){
int[] a1=new int[2];
int ans=tmp[start_s][1];
for(int i=0;i<2;i++)
a1[i]=ans++;
setCardFaceArray(2,a1);
//出牌后对玩家手中的牌进行相应清理
s.clearCardIDarray(card_face[0]);
s.clearCardIDarray(card_face[1]);
//设置未出牌数
s.setsqunout(2);
}
//找三张
public boolean searchSanZhang(int[][] tmp){
start_s=-1;
for(int i=0;i<13;i++)
if(tmp[i][0]==3){
start_s=i;
break;
}
if(start_s!=-1) return true;
else return false;
}
//出三张
public void playSanZhang(SPlayers s){
int[] a1=new int[3];
int ans=tmp[start_s][1];
for(int i=0;i<3;i++)
a1[i]=ans++;
setCardFaceArray(3,a1);
//出牌后对玩家手中的牌进行相应清理
s.clearCardIDarray(card_face[0]);
s.clearCardIDarray(card_face[1]);
s.clearCardIDarray(card_face[2]);
//设置未出牌数
s.setsqunout(3);
}
//找炸弹
public boolean searchZhaDan(int[][] tmp){
start_s=-1;
for(int i=0;i<13;i++)
if(tmp[i][0]==4){
start_s=i;
break;
}
if(start_s!=-1) return true;
else return false;
}
//出炸弹
public void playZhaDan(SPlayers s){
int[] a1=new int[4];
int ans=tmp[start_s][1];
for(int i=0;i<4;i++)
a1[i]=ans++;
setCardFaceArray(4,a1);
//出牌后对玩家手中的牌进行相应清理
s.clearCardIDarray(card_face[0]);
s.clearCardIDarray(card_face[1]);
s.clearCardIDarray(card_face[2]);
s.clearCardIDarray(card_face[3]);
//设置未出牌数
s.setsqunout(4);
}
//找单王
public boolean searchDanJoker(SPlayers s){
if(s.cardID_Player[52]==1&&s.cardID_Player[53]==0){
start_s=52;
return true;
}
else if(s.cardID_Player[52]==0&&s.cardID_Player[53]==1){
start_s=53;
return true;
}
else return false;
}
//出单王
public void playDanJoker(SPlayers s){
int[] a1=new int[1];
a1[0]=start_s;
setCardFaceArray(1,a1);
//出牌后对玩家手中的牌进行相应清理
s.clearCardIDarray(card_face[0]);
//设置未出牌数
s.setsqunout(1);
}
//找双王
public boolean searchJoker(SPlayers s){
if(s.cardID_Player[52]==1&&s.cardID_Player[53]==1)
return true;
else return false;
}
//出双王
public void playJoker(SPlayers s){
int[] a1=new int[2];
a1[0]=52;
a1[1]=53;
setCardFaceArray(2,a1);
//出牌后对玩家手中的牌进行相应清理
s.clearCardIDarray(card_face[0]);
s.clearCardIDarray(card_face[1]);
//设置未出牌数
s.setsqunout(2);
/显示牌面
public void displayCardFace(Squeezer[] sq1){
System.out.println("上次牌面是:");
for(int i=0;i<card_face.length;i++)
System.out.print(sq1[card_face[i]].getsqcolor()+sq1[card_face[i]].getsqpoint()+" ");
System.out.println(" ");
System.out.println("------------");
System.out.println(" ");
}
//构造函数
public PlaySqueezer(SPlayers s1,SPlayers s2,SPlayers s3,Squeezer[] sq1){
if(s1.Ishost()==true) {lord=s1; ger1=s2; ger2=s3;}
else if(s2.Ishost()==true) {lord=s2; ger1=s3; ger2=s1;}
else {lord=s3; ger1=s1; ger2=s2;}
while(s1.getsqunout()!=0&&s2.getsqunout()!=0&&s3.getsqunout()!=0){
//地主开始出牌
if(lord.getsqunout()==20){
if(lord.getpid()==1) {
ring_token=1;
personPlay(s1,sq1);
}
else if(lord.getpid()==2){
ring_token=2;
computerPlay(s2,sq1);
}
else {
ring_token=3;
computerPlay(s3,sq1);
}
}
//非第一轮出牌
else {
if(token==1)
personPlay(s1,sq1);
else if(token==2)
computerPlay(s2,sq1);
else if(token==3)
computerPlay(s3,sq1);
}
}//while
System.out.println("游戏结束!");
int lsp=lord.getscore();
int lsp1=ger1.getscore();
int lsp2=ger2.getscore();
if(lord.getsqunout()==0)
{
lord.setscore(100);
lord.setscore(ger1.getscore()+ger2.getscore());
int g1=2*lsp1+50+lsp2+lsp;
g1=0-g1;
int g2=2*lsp2+50+lsp1+lsp;
g2=0-g2;
ger1.setscore(g1);
ger2.setscore(g2);
System.out.println("地主: "+lord.getname()+" 胜!");
}
else {
int g1=50+lsp2+lsp;
int g2=50+lsp1+lsp;
ger1.setscore(g1);
ger2.setscore(g2);
lsp=2*lsp+lsp1+lsp2+100;
lsp=0-lsp;
lord.setscore(lsp);
System.out.println("玩家1: "+ger1.getname()+" 和 "+"玩家2:"+ger2.getname()+" 胜!");
}
System.out.println("玩家得分:");
System.out.println("玩家姓名 分数 ");
System.out.println(lord.getname()+" "+lord.getscore()+" ");
System.out.println(ger1.getname()+" "+ger1.getscore()+" ");
System.out.println(ger2.getname()+" "+ger2.getscore()+" ");
System.exit(0);
}//PlaySqueezer()
}//PlaySqueezerClass
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -