扑克牌程序

经常遇到这个问题,自己做了一下,随机发52张牌,分给4个人,每个人手中的牌是13张无重复,花色S代表黑桃,H代表红桃,D代表方块,C代表梅花。发完牌后4组牌由小到大排序(依数字的大小从1-13)。若有同一数字牌出现则依照S、H、D、C顺序。
1.Puke.java

package pack3;
import java.util.*;
public class Puke{
int poke[]=new int[52];
int poke_a1[]=new int[13];
int poke_a2[]=new int[13];
int poke_a3[]=new int[13];
int poke_a4[]=new int[13];
String a1="first person:";
String a2="second person:";
String a3="third person:";
String a4="forth person:";
public String[] name={"S","H","D","C"};
public Puke(){
for(int i=0;i<52;i++){
poke[i]=i;
}
}

public void faPai(){

int m1=0;
int m2=0;
int m3=0;
int m4=0;
Random myRandom=new Random();
for(int i=0;i<52;i++){
int temp=poke[i];
int j=myRandom.nextInt(52);
poke[i]=poke[j];
poke[j]=temp;
}
for(int i=0;i<52;i++){

if(i%4==0){

poke_a1[m1]=poke[i];
m1++;
}
if(i%4==1){
poke_a2[m2]=poke[i];
m2++;
}
if(i%4==2){
poke_a3[m3]=poke[i];
m3++;
}
if(i%4==3){
poke_a4[m4]=poke[i];
m4++;
}
}

}


public String getFormat(int newpoke[],int number){
int r1,r2;
String s="";
sort_puke(newpoke,13);
for(int i=0;i<number;i++){
r1=newpoke[i]%4;
r2=newpoke[i]/4;
if(r2==12)
s+=name[r1]+"K"+"\t";
if(r2==11)
s+=name[r1]+"Q"+"\t";
if(r2==10)
s+=name[r1]+"J"+"\t";
if(r2>=0&&r2<=9)
s+=name[r1]+Integer.toString(r2+1)+"\t";
}
return s;
}
public void sort_puke(int newpoke[],int number)
{
int min,temp,r1,r2;
for(int i=0;i<number-1;i++)
{
min=i;
for(int j=i+1;j<number;j++)
{
if((newpoke[j]/4)<(newpoke[min]/4))
{
min=j;
}
if((newpoke[j]/4)==(newpoke[min]/4))
{
r1=newpoke[j]%4;
r2=newpoke[min]%4;
if(r1<r2)
{
min=j;
}
}
}
if(min!=i)
{
temp=newpoke[i];
newpoke[i]=newpoke[min];
newpoke[min]=temp;
}
}




}

public void outPut(){
System.out.println(a1+getFormat(poke_a1,13));
System.out.println();
System.out.println(a2+getFormat(poke_a2,13));
System.out.println();
System.out.println(a3+getFormat(poke_a3,13));
System.out.println();
System.out.println(a4+getFormat(poke_a4,13));
}
}

2.prog3.java

package pack3;
public class prog3{
public static void main(String args[]){
Puke mypuke=new Puke();
mypuke.faPai();
mypuke.outPut();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值