经常遇到这个问题,自己做了一下,随机发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();
}
}
分享到:
相关推荐
21点扑克牌程序
这个是用C++MFC开发的扑克牌程序,不过不是网络版的,要连接网络也很简单,加一个类就可以了
C语言 扑克牌发牌程序。研究生考试C语言试题。
一个扑克牌程序的源码,希望对大家有用。 项目拖到eclipse里直接能运行的
Card类 洗牌 发牌 Game类(实现简单的大小花色比较)
是我自己用C#写的。用扑克牌的 显示,洗牌,发牌等功能。
发牌的程序,可以随机的给死个人发牌,牌的内容各不相同,在dos窗口出现的,反反对过分的风格反对的反攻倒算内部vn
内含C++程序的所有源代码,以及设计好以后的扑克牌运行程序,所设计的
扑克牌C语言源程序扑克牌C语言源程序扑克牌C语言源程序
[Applet与Swing]扑克牌游戏(代码) 一个[Applet与Swing]相结合的源程序 代码
JAVA扑克牌发牌程序JAVA扑克牌发牌程序
在现代社会中,随着社会的快速发展,人们对休闲娱乐越来越重视,又由于电脑的快速发展,“21点”纸牌游戏逐渐成为人们的娱乐的一种方式,编写程序实现游戏,该程序是模拟古老的21点扑克牌游戏,实现1对1的人机大战。...
完全用C语言编写的扑克牌发牌程序,主要是如何运用随机数的问题
主要用到了数组的思想去生成纸牌,用随即产生的数来洗牌,然后发牌!
完整的扑克牌图片,清晰版,斗地主,纸牌程序用图 54张扑克牌外加背景图片和开始图
2副54张的扑克牌4人随机发牌,可应用于游戏中
扑克牌识别的MATLAB程序,扑克牌全套高清52张,程序易懂,识别出扑克牌的字符与花色。