洗纸牌算法

import java.util.Random;

class Card
{
   int Suit;							//花色 
   char Number;							//牌数 
}

public class PokeShow {
	static Card[] OneCard=new Card[52];		    	//保存每张扑克的花色、数字
	
	static void ShowCard() 							//显示扑克牌 
	{
	   int i, j;
	   int sign=0;
	   String s="";

	   for (i = 0, j = 0; i < 52; i++, j++)
	   {
		  if (j % 13==0)
		  {
			 System.out.print("\n");
		  }
		  switch(OneCard[i].Suit)					//显示花色符号
		  {
		  case 1:
			  s="黑桃";
			  sign=3;
			  break;
		  case 2:
			  s="红桃";
			  sign=4;
			  break;
		  case 3:
			  s="梅花";
			  sign=5;
			  break;
		  case 4:
			  s="方块";
			  sign=6;
			  break;
		  default:
			  ;
		  }
		  System.out.printf("  "+s+OneCard[i].Number);	//输出显示
	   }
	   System.out.print("\n");
	}
	
	static void Shuffle()								//算法
	{
		int i,j,temp;
		int suit;
		
	    Card tempcard=new Card();

		suit=0;
	   for (i = 0; i < 52; i++)						//生成52张牌 
	   {
		  if (i % 13 == 0)
		  {
			 suit++;							//改变花色 
		  }
		  Card t=new Card();
		  t.Suit = suit;					//保存花色 
		  temp = i % 13;
		  switch(temp)							//特殊值处理
		  {
		  case 0:
			  t.Number = 'A';
			  break;
		  case 9:
			  t.Number = '0';
			  break;
		  case 10:
			  t.Number = 'J';
			  break;
		  case 11:
			  t.Number = 'Q';
			  break;
		  case 12:
			  t.Number = 'K';
			  break;
		  default:
			  t.Number =(char)(temp + '1');
		  }
		  OneCard[i]=t;

	   }
	   System.out.printf("一付新牌的初始排列如下:\n"); 

	   ShowCard();

	   Random r=new Random();					//随机种子
	   for (i = 0; i < 52; i++)
	   {
		  j = r.nextInt(52);						//随机换牌
		  tempcard = OneCard[j];
		  OneCard[j] = OneCard[i];
		  OneCard[i] = tempcard;
	   }
	}
	public static void main(String[] args) {
						
		 Shuffle();								//洗牌
		 System.out.print("\n洗牌后的排列如下:\n");
		 ShowCard();							//显示新牌的排列

	}

}

posted @ 2014-11-03 10:10  172257861  阅读(154)  评论(0编辑  收藏  举报