C#实现洗牌游戏实例
程序员文章站
2023-12-22 11:38:46
棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。
运行结果如下图所示:
对...
棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。
运行结果如下图所示:
对于牌来讲,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() + " "); } } }
希望本文所述实例对大家的算法学习能有所帮助。