扑克牌游戏:一副牌的张数是54,其中包括大小王牌,编写一个程序能给东、西、南、北四位玩家自动发牌(牌最好事先进行随机洗过),每位玩家有12张,余下的6张作为底牌,然后随机指定一位作为庄家,并把底牌给他,最后把四位玩家的牌按红、方块、黑桃和草花四个花色按大到小理好。最后将四个玩家手上的牌打出来,并指出谁是庄家,底牌是什么。public class play
{
public void exchangsort(int m[])
{
int i,j;
int temp;
for(i=1;i<=12;i++)
for(j=i+1;j<=12;j++)
if(m[i]>m[j])
{
temp=m[i];
m[i]=m[j];
m[j]=temp;
}
for(i=1;i<=12;i++)
System.out.print(m[i]+" ");
System.out.print("\n");
}
public void print(int g,int i)
{
int t=g-i;
switch (t)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.print(huase(g)+t+" ");
break;
case 11:
System.out.print(huase(g)+"J"+" ");
break;
case 12:
System.out.print(huase(g)+"Q"+" ");
break;
case 13:
System.out.print(huase(g)+"K"+" ");
break;
}
}
public String huase(int g)
{
if(g>=1&&g<=13)
return "红桃";
else if(g>=14&&g<=26)
return "方块";
else if(g>=27&&g<=39)
return "黑桃";
else if(g>=40&&g<=52)
return "草花";
else return "";
}
public void jj(int n[])
{ int i;
for( i=1;i<=12;i++)
if(n[i]>=1&&n[i]<=13)
print(n[i],0);
else if(n[i]>=14&&n[i]<=26)
print(n[i],12);
else if(n[i]>=27&&n[i]<=39)
print(n[i],24);
else if(n[i]>=40&&n[i]<=52)
print(n[i],36);
else if(n[i]==53)
System.out.print("小王");
else System.out.print("大王");
System.out.print("\n");
}
public static void main(String args[])
{
int temp,i,j;
int a[]=new int[60];//1~13,红桃. 14~26,方块. 27~39,黑桃.40~52.草花 51,小王.52大王
int b[]=new int[60];
for( i=1;i<=54;i++)
a[i]=i;
for( j=54;j>=1;j--)
{
int index=(int)(Math.random()*j+1);
b[j]=a[index];
a[index]=a[j];
}
int e[]=new int[15];
int s[]=new int[15];
int w[]=new int[15];
int n[]=new int[15];
int d[]=new int[10];
for(i=1;i<=12;i++)
{e[i]=b[i];
System.out.print(e[i]+" ");}
System.out.print("\n");
for(i=13;i<=24;i++)
{s[i-12]=b[i];
System.out.print(s[i-12]+" ");}
System.out.print("\n");
for(i=25;i<=36;i++)
{ w[i-24]=b[i] ;
System.out.print(w[i-24]+" ");}
System.out.print("\n");
for(i=37;i<=48;i++)
{n[i-36] =b[i];
System.out.print(n[i-36]+" ");}
System.out.print("\n");
System.out.print("底牌是: ");
for(i=49;i<=54;i++)
{d[i-48] =b[i];
System.out.print(d[i-48]+" ");}
System.out.print("\n");
int in=(int)(Math.random()*4+1);
switch (in)
{
case 1:
System.out.println("庄家是东");
break;
case 2:
System.out.println("庄家是南");
break;
case 3:
System.out.println("庄家是西");
break;
case 4:
System.out.println("庄家是北");
break;
}
play t=new play();
t.exchangsort(e);
t.jj(e);
t.exchangsort( s);
t.jj(s);
t.exchangsort( w);
t.jj(w);
t. exchangsort( n);
t.jj(n);
}
}
{
public void exchangsort(int m[])
{
int i,j;
int temp;
for(i=1;i<=12;i++)
for(j=i+1;j<=12;j++)
if(m[i]>m[j])
{
temp=m[i];
m[i]=m[j];
m[j]=temp;
}
for(i=1;i<=12;i++)
System.out.print(m[i]+" ");
System.out.print("\n");
}
public void print(int g,int i)
{
int t=g-i;
switch (t)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.print(huase(g)+t+" ");
break;
case 11:
System.out.print(huase(g)+"J"+" ");
break;
case 12:
System.out.print(huase(g)+"Q"+" ");
break;
case 13:
System.out.print(huase(g)+"K"+" ");
break;
}
}
public String huase(int g)
{
if(g>=1&&g<=13)
return "红桃";
else if(g>=14&&g<=26)
return "方块";
else if(g>=27&&g<=39)
return "黑桃";
else if(g>=40&&g<=52)
return "草花";
else return "";
}
public void jj(int n[])
{ int i;
for( i=1;i<=12;i++)
if(n[i]>=1&&n[i]<=13)
print(n[i],0);
else if(n[i]>=14&&n[i]<=26)
print(n[i],12);
else if(n[i]>=27&&n[i]<=39)
print(n[i],24);
else if(n[i]>=40&&n[i]<=52)
print(n[i],36);
else if(n[i]==53)
System.out.print("小王");
else System.out.print("大王");
System.out.print("\n");
}
public static void main(String args[])
{
int temp,i,j;
int a[]=new int[60];//1~13,红桃. 14~26,方块. 27~39,黑桃.40~52.草花 51,小王.52大王
int b[]=new int[60];
for( i=1;i<=54;i++)
a[i]=i;
for( j=54;j>=1;j--)
{
int index=(int)(Math.random()*j+1);
b[j]=a[index];
a[index]=a[j];
}
int e[]=new int[15];
int s[]=new int[15];
int w[]=new int[15];
int n[]=new int[15];
int d[]=new int[10];
for(i=1;i<=12;i++)
{e[i]=b[i];
System.out.print(e[i]+" ");}
System.out.print("\n");
for(i=13;i<=24;i++)
{s[i-12]=b[i];
System.out.print(s[i-12]+" ");}
System.out.print("\n");
for(i=25;i<=36;i++)
{ w[i-24]=b[i] ;
System.out.print(w[i-24]+" ");}
System.out.print("\n");
for(i=37;i<=48;i++)
{n[i-36] =b[i];
System.out.print(n[i-36]+" ");}
System.out.print("\n");
System.out.print("底牌是: ");
for(i=49;i<=54;i++)
{d[i-48] =b[i];
System.out.print(d[i-48]+" ");}
System.out.print("\n");
int in=(int)(Math.random()*4+1);
switch (in)
{
case 1:
System.out.println("庄家是东");
break;
case 2:
System.out.println("庄家是南");
break;
case 3:
System.out.println("庄家是西");
break;
case 4:
System.out.println("庄家是北");
break;
}
play t=new play();
t.exchangsort(e);
t.jj(e);
t.exchangsort( s);
t.jj(s);
t.exchangsort( w);
t.jj(w);
t. exchangsort( n);
t.jj(n);
}
}
package ym051024;import java.util.*;public class Cardigan {
//定义四种类型。
private static String[] type = {"aHeart","aDiamond","cSpade","dClub"};
//定义牌面1。
private static String[] number = {"01A","02","03","04","05","06","07","08","09","10","11J","12Q","13K"};
//定义牌面2。
private static String[] joker = {"14KING","15QUEEN"};
//定义玩家。
private static String[] players = {"Alex","Beck","Carl","Duck"};
//程序入口。
public static void main(String[] args) {
Cardigan car = new Cardigan();
//指定庄家。
String banker = car.appoint(players);
//洗牌。
ArrayList mixed = car.mix();
//取底牌。
ArrayList last = car.covered(mixed);
//发牌。
HashMap map = car.send(mixed,players,banker);
//打印信息。
car.print(players,map,banker,last);
}
/**
* make the banker.
* @param players
* @return
*/
//安排庄家。
public String appoint(String[] players){
int i = (int)(Math.random()*4);
return players[i];
}
//新牌。
public ArrayList make(){
ArrayList list = new ArrayList();
for(int i=0; i<type.length; i++)
for(int j=0;j<number.length; j++){
list.add(type[i]+number[j]);
}
for(int k=0; k<joker.length; k++){
list.add(joker[k]);
}
return list;
}
//洗牌。
public ArrayList mix(){
ArrayList list = make();
Collections.shuffle(list);
return list;
}
//取底牌。
public ArrayList covered(ArrayList list){
ArrayList last = new ArrayList();
for(int j = 48; j<54; j++){
last.add(list.get(j));
}
return last;
}
//发牌。
public HashMap send(ArrayList list,String[] players,String banker){
ArrayList[] playCard = new ArrayList[players.length];
playCard[0] = new ArrayList();
playCard[1] = new ArrayList();
playCard[2] = new ArrayList();
playCard[3] = new ArrayList();
HashMap map = new HashMap();
int size = list.size();
for(int i=0; i<48;){
playCard[0].add(list.get(i++));
playCard[1].add(list.get(i++));
playCard[2].add(list.get(i++));
playCard[3].add(list.get(i++));
}
int index = -1;
for(int i=0; i<players.length; i++){
if(banker.equalsIgnoreCase(players[i])){
index = i;
break;
}
}
for(int j = 48; j<54; j++){
playCard[index].add(list.get(j));
}
map.put(players[0],reorder(playCard[0]));
map.put(players[1],reorder(playCard[1]));
map.put(players[2],reorder(playCard[2]));
map.put(players[3],reorder(playCard[3]));
return map;
}
//给各玩家的牌排序。
public ArrayList reorder(ArrayList list){
Collections.sort(list);
return list;
}
public void print(String[] players,HashMap map,String banker,ArrayList cover){
//打印各玩家的牌。
for(int i=0; i<players.length; i++){
String name = players[i];
System.out.println(name+":"+map.get(name));
}
//打印庄家。
System.out.println("--------------------");
System.out.println("庄家是:"+ banker);
//打印底牌。
System.out.println("--------------------");
System.out.println("底牌是:"+ cover);
}
}
Alex:[15QUEEN, aDiamond06, aDiamond09, aDiamond11J, aHeart02, aHeart04, aHeart09, aHeart10, aHeart11J, cSpade04, cSpade06, cSpade13K, dClub02, dClub04, dClub09, dClub10, dClub11J, dClub13K]
Beck:[14KING, aDiamond04, aDiamond07, aDiamond08, aHeart03, cSpade01A, cSpade02, cSpade10, cSpade12Q, dClub03, dClub06, dClub08]
Carl:[aDiamond05, aDiamond10, aDiamond13K, aHeart01A, aHeart08, aHeart12Q, aHeart13K, cSpade03, cSpade07, cSpade08, dClub01A, dClub07]
Duck:[aDiamond01A, aDiamond02, aDiamond03, aDiamond12Q, aHeart05, aHeart06, aHeart07, cSpade05, cSpade09, cSpade11J, dClub05, dClub12Q]
--------------------
庄家是:Alex
--------------------
底牌是:[dClub04, aHeart02, dClub11J, aHeart11J, cSpade04, cSpade06]