我想编一个连发3张扑克牌的JAVA程序。
编发一张牌好办,可发3张牌,要考虑到一副扑克里没有相同的牌,那结果就得有个比较。我是这样写的:public class PlayCards {
//随机发牌的数字选择
public String shuzi(int a){
String b="";
switch(a){
case 1:
b="A";
break;
case 2:
b="2";
break;
case 3:b="3";break;
case 4:b="4";break;
case 5:b="5";break;
case 6:b="6";break;
case 7:b="7";break;
case 8:b="8";break;
case 9:b="9";break;
case 10:b="10";break;
case 11:b="L";break;
case 12:b="Q";break;
case 13:b="K";break;
default:
break;
}
return b;
}
//随机发牌的花色选择
public String huase(int a){
String b="";
switch(a){
case 1:b="梅花";break;
case 2:b="方块";break;
case 3:b="黑桃";break;
case 4:b="红桃";break;
default:
break;
}
return b;
} public static void main (String[] args) {
int sz=1+(int)(Math.random()*13); //随机数字13个
int dx=1+(int)(Math.random()*4); //随机花色4种
int[] a=new int[3];
int[] b=new int[3];
a[0]=0;
b[0]=0;
int i=1;
while(i<=3)
{ a[i]=sz;
b[i]=dx;
if(a[i]!=a[i-1]&&b[i]!=b[i-1])//排除出现相同的牌
PlayCards no(i)=new PlayCards();
System.out.println("第"+i+"张:"+no(i).huase(a[i])+no(i).shuzi(b[i]));
continue;
i=i+1; }
}
}我觉得我那个方法调用不大对,可要弄三个对象实例的话,这样不利于扩展。而且我觉得,这样不大好 排除出现相同的牌~~我到底该怎么修改呢
编发一张牌好办,可发3张牌,要考虑到一副扑克里没有相同的牌,那结果就得有个比较。我是这样写的:public class PlayCards {
//随机发牌的数字选择
public String shuzi(int a){
String b="";
switch(a){
case 1:
b="A";
break;
case 2:
b="2";
break;
case 3:b="3";break;
case 4:b="4";break;
case 5:b="5";break;
case 6:b="6";break;
case 7:b="7";break;
case 8:b="8";break;
case 9:b="9";break;
case 10:b="10";break;
case 11:b="L";break;
case 12:b="Q";break;
case 13:b="K";break;
default:
break;
}
return b;
}
//随机发牌的花色选择
public String huase(int a){
String b="";
switch(a){
case 1:b="梅花";break;
case 2:b="方块";break;
case 3:b="黑桃";break;
case 4:b="红桃";break;
default:
break;
}
return b;
} public static void main (String[] args) {
int sz=1+(int)(Math.random()*13); //随机数字13个
int dx=1+(int)(Math.random()*4); //随机花色4种
int[] a=new int[3];
int[] b=new int[3];
a[0]=0;
b[0]=0;
int i=1;
while(i<=3)
{ a[i]=sz;
b[i]=dx;
if(a[i]!=a[i-1]&&b[i]!=b[i-1])//排除出现相同的牌
PlayCards no(i)=new PlayCards();
System.out.println("第"+i+"张:"+no(i).huase(a[i])+no(i).shuzi(b[i]));
continue;
i=i+1; }
}
}我觉得我那个方法调用不大对,可要弄三个对象实例的话,这样不利于扩展。而且我觉得,这样不大好 排除出现相同的牌~~我到底该怎么修改呢
rand = Meth.random() * sum--; deal[i] = v.elementAt(rand);
v.remove(rand);
}
建立一个ArrayList,将52张牌放进去
然后用
Collections.shuffle(list);
将顺序打乱。
每次取牌的时候list.remove(list.size()-1)来取得card,这样顺序随即而且不重复。
扑克牌的游戏就是这样实现的