棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。
运行结果如下图所示:
对于牌来讲,2个关键的因素是面值和类型(如红桃、梅花等)。
代码如下:
public class Card
{
private string mianzhi;
private string leixin;
public Card(string m, string l)
{
mianzhi = m;
leixin = l;
}
public override string ToString()
{
return leixin + \" \" + mianzhi;
}
}
客户端程序有3个方法,一个是初始化牌的数组,一个是遍历所有牌并显示,还有一个是使用算法洗牌。
具体实现代码如下:
class Program
{
private static Card[] allCards = new Card[52];
private static string[] ms = { \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"J\", \"Q\", \"K\" };
private static string[] ls = { \"红桃\", \"方块\", \"梅花\", \"黑桃\" };
static void Main(string[] args)
{
Init();
ShowAllCards();
Console.WriteLine(\"\\r\\n\");
Shuffle();
ShowAllCards();
Console.ReadKey();
}
private static void Shuffle()
{
Random r = new Random();
Card tempCard;
//依次遍历所有牌与随机位置上的牌交换位置
for (int i = 0; i < allCards.Length; i++)
{
int ran = r.Next(52);
tempCard = allCards[i];
allCards[i] = allCards[ran];
allCards[ran] = tempCard;
}
}
private static void Init()
{
for (int i = 0; i < allCards.Length; i++)
{
allCards[i] = new Card(ms[i % 13],ls[i%4]);
}
}
private static void ShowAllCards()
{
foreach (var item in allCards)
{
Console.Write(item.ToString() + \" \");
}
}
}
希望本文所述实例对大家的算法学习能有所帮助。
本文地址:https://www.stayed.cn/item/10457
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我