import java.util.*;
/** *//**
* 派發牌演算法的實現
* 要求:把2副牌,也就是108張,發給4個人,留8張底牌
*/
public class PaiPai {
int[] pokerpai = new int[54];
int[] allpai = new int[108];
int[][] playerpai = new int[4][25];
int[] dipai = new int[8];
int m_turn;
Random rdm = new Random(System.currentTimeMillis());
int getRandom(int size)
{
return (rdm.nextInt() & 0x7FFFFFFF) % size;
}
public PaiPai()
{
initPai();
faPai();
}
public void initPai()
{
m_turn=0;
int randomsite;
int temppai;
//賦初值--發牌一般形式:1.按點數發 2.牌數和花色發
//下面是按點數發
for(int i=0;i<pokerpai.length;i++)
{
pokerpai[i]=(i+1)%55;
}
//給兩副牌
for(int i=0;i<2;i++)
for(int j=0;j<pokerpai.length;j++)
{
allpai[m_turn]=pokerpai[j];
m_turn++;
}
//洗牌
for(int i=0;i<allpai.length;i++)
{
randomsite=getRandom(allpai.length);
temppai=allpai[randomsite];
allpai[randomsite]=allpai[i];
allpai[i]=temppai;
}
}
public void faPai()
{
//一輪發四人牌,共25輪
for(int i=0;i<25;i++)
for(int j=0;j<playerpai.length;j++)
{
m_turn--;
playerpai[j][i]=allpai[m_turn];
}
//留底牌
for(int i=0;i<dipai.length;i++)
{
m_turn--;
dipai[i]=allpai[m_turn];
}
//顯示四家牌
for(int j=0;j<playerpai.length;j++)
showPai(playerpai[j]);
//顯示底牌
showPai(dipai);
}
public void showPai(int[] m_pai)
{
System.out.println("Showpai:start.");
for(int i=0;i<m_pai.length;i++)
{
System.out.print(" "+m_pai[i]);
}
System.out.println();
System.out.println("Showpai:end.");
}
public static void main(String[] args)
{
new PaiPai();
}
}