實(shí)現(xiàn)洗牌游戲的一種算法是:遍歷每個(gè)位置上的牌,然后與隨機(jī)位置上的牌交換。

對于牌來講,2個(gè)關(guān)鍵的因素是面值和類型(紅桃、梅花等)。
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個(gè)方法,一個(gè)是初始化牌的數(shù)組,一個(gè)是遍歷所有牌并顯示,還有一個(gè)是使用算法洗牌。
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;//依次遍歷所有牌與隨機(jī)位置上的牌交換位置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() + " ");}}}
新聞熱點(diǎn)
疑難解答
圖片精選