C#實(shí)現(xiàn)洗牌游戲?qū)嵗?/h1>
更新時(shí)間:2014年08月20日 10:52:24 投稿:shichen2014
這篇文章主要介紹了C#實(shí)現(xiàn)洗牌游戲?qū)嵗?對(duì)于數(shù)據(jù)結(jié)構(gòu)與算法的學(xué)習(xí)有不錯(cuò)的借鑒參考作用,需要的朋友可以參考下
棋牌類(lèi)游戲是目前比較火的游戲之一。今天本文就以實(shí)例形式實(shí)現(xiàn)洗牌游戲。本文實(shí)例所采用的算法是:遍歷每個(gè)位置上的牌,然后與隨機(jī)位置上的牌交換。
運(yùn)行結(jié)果如下圖所示:

對(duì)于牌來(lái)講,2個(gè)關(guān)鍵的因素是面值和類(lèi)型(如紅桃、梅花等)。
代碼如下:
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è)是使用算法洗牌。
具體實(shí)現(xiàn)代碼如下:
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() + " ");
}
}
}
希望本文所述實(shí)例對(duì)大家的算法學(xué)習(xí)能有所幫助。
相關(guān)文章
-
WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼
本文主要介紹了WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2023-01-01
-
Unity UGUI的Slider滑動(dòng)條件組使用詳解
這篇文章主要為大家介紹了Unity UGUI的Slider滑動(dòng)條件組使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪 2023-07-07
-
c# 實(shí)現(xiàn)圓形的進(jìn)度條(ProgressBar)
這篇文章主要介紹了c# 如何實(shí)現(xiàn)圓形的進(jìn)度條(ProgressBar),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下 2021-03-03
-
c#之圓形無(wú)標(biāo)題欄橢圓窗體的實(shí)現(xiàn)詳解
本篇文章是對(duì)c#中圓形無(wú)標(biāo)題欄橢圓窗體的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下 2013-06-06
-
C#實(shí)現(xiàn)DevExpress本地化實(shí)例詳解
這篇文章主要介紹了C#實(shí)現(xiàn)DevExpress本地化,以實(shí)例形式較為詳細(xì)的分析了DevExpress本地化的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下 2015-08-08
-
C# 大數(shù)據(jù)導(dǎo)出word的假死報(bào)錯(cuò)的處理方法
C# 大數(shù)據(jù)導(dǎo)出word的假死報(bào)錯(cuò)的處理方法,需要的朋友可以參考一下 2013-03-03
-
C#實(shí)現(xiàn)系統(tǒng)休眠或靜止休眠的方法
這篇文章主要介紹了C#實(shí)現(xiàn)系統(tǒng)休眠或靜止休眠的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2023-05-05
-
C#如何實(shí)現(xiàn)監(jiān)控手機(jī)屏幕(附源碼下載)
這篇文章主要介紹了C#如何實(shí)現(xiàn)監(jiān)控手機(jī)屏幕(附源碼下載),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2020-10-10
-
c#實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能示例分享
這篇文章主要介紹了c#實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能示例,斷點(diǎn)續(xù)傳就是在上一次下載時(shí)斷開(kāi)的位置開(kāi)始繼續(xù)下載。在HTTP協(xié)議中,可以在請(qǐng)求報(bào)文頭中加入Range段,來(lái)表示客戶機(jī)希望從何處繼續(xù)下載,下面是示例,需要的朋友可以參考下 2014-03-03
最新評(píng)論
棋牌類(lèi)游戲是目前比較火的游戲之一。今天本文就以實(shí)例形式實(shí)現(xiàn)洗牌游戲。本文實(shí)例所采用的算法是:遍歷每個(gè)位置上的牌,然后與隨機(jī)位置上的牌交換。
運(yùn)行結(jié)果如下圖所示:
對(duì)于牌來(lái)講,2個(gè)關(guān)鍵的因素是面值和類(lèi)型(如紅桃、梅花等)。
代碼如下:
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è)是使用算法洗牌。
具體實(shí)現(xiàn)代碼如下:
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() + " "); } } }
希望本文所述實(shí)例對(duì)大家的算法學(xué)習(xí)能有所幫助。
相關(guān)文章
WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼
本文主要介紹了WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Unity UGUI的Slider滑動(dòng)條件組使用詳解
這篇文章主要為大家介紹了Unity UGUI的Slider滑動(dòng)條件組使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07c# 實(shí)現(xiàn)圓形的進(jìn)度條(ProgressBar)
這篇文章主要介紹了c# 如何實(shí)現(xiàn)圓形的進(jìn)度條(ProgressBar),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03c#之圓形無(wú)標(biāo)題欄橢圓窗體的實(shí)現(xiàn)詳解
本篇文章是對(duì)c#中圓形無(wú)標(biāo)題欄橢圓窗體的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06C#實(shí)現(xiàn)DevExpress本地化實(shí)例詳解
這篇文章主要介紹了C#實(shí)現(xiàn)DevExpress本地化,以實(shí)例形式較為詳細(xì)的分析了DevExpress本地化的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08C# 大數(shù)據(jù)導(dǎo)出word的假死報(bào)錯(cuò)的處理方法
C# 大數(shù)據(jù)導(dǎo)出word的假死報(bào)錯(cuò)的處理方法,需要的朋友可以參考一下2013-03-03C#實(shí)現(xiàn)系統(tǒng)休眠或靜止休眠的方法
這篇文章主要介紹了C#實(shí)現(xiàn)系統(tǒng)休眠或靜止休眠的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05C#如何實(shí)現(xiàn)監(jiān)控手機(jī)屏幕(附源碼下載)
這篇文章主要介紹了C#如何實(shí)現(xiàn)監(jiān)控手機(jī)屏幕(附源碼下載),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10c#實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能示例分享
這篇文章主要介紹了c#實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能示例,斷點(diǎn)續(xù)傳就是在上一次下載時(shí)斷開(kāi)的位置開(kāi)始繼續(xù)下載。在HTTP協(xié)議中,可以在請(qǐng)求報(bào)文頭中加入Range段,來(lái)表示客戶機(jī)希望從何處繼續(xù)下載,下面是示例,需要的朋友可以參考下2014-03-03