实现洗牌游戏的一种算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。
对于牌来讲,2个关键的因素是面值和类型(红桃、梅花等)。
publicclassCard
{
PRivatestringmianzhi;
privatestringleixin;
publicCard(stringm,stringl)
{
mianzhi = m;
leixin = l;
}
publicoverridestringToString()
{
returnleixin + "" + mianzhi;
}
}
客户端程序有3个方法,一个是初始化牌的数组,一个是遍历所有牌并显示,还有一个是使用算法洗牌。
classProgram
{
privatestaticCard[] allCards =newCard[52];
privatestaticstring[] ms = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
privatestaticstring[] ls = { "红桃", "方块", "梅花", "黑桃" };
staticvoidMain(string[] args)
{
Init();
ShowAllCards();
Console.WriteLine("\r\n");
Shuffle();
ShowAllCards();
Console.ReadKey();
}
privatestaticvoidShuffle()
{
Random r =newRandom();
Card tempCard;
//依次遍历所有牌与随机位置上的牌交换位置
for(inti = 0; i < allCards.Length; i++)
{
intran = r.Next(52);
tempCard = allCards[i];
allCards[i] = allCards[ran];
allCards[ran] = tempCard;
}
}
privatestaticvoidInit()
{
for(inti = 0; i < allCards.Length; i++)
{
allCards[i] =newCard(ms[i % 13],ls[i%4]);
}
}
privatestaticvoidShowAllCards()
{
foreach(var iteminallCards)
{
Console.Write(item.ToString() + "");
}
}
}