洗扑克牌
要求:假设除过大小王,对剩余的52张牌进行洗牌。扑克牌有两条属性:①花色 ②大小。请使用C/C++模拟实现洗牌程序。
算法设计:52张牌中,其中按花色可以分为:①红桃? ②黑桃? ③麻花? ④方片? 。这样可以将52张牌平分成4类,每一类13张牌代表同一种花色即可。按大小来分可以分为两类:①1~10 ② JQK 两种类型。通过mod运算,即可将JQK3个特殊情况分开处理。
源代码及注释:
通过以上表述我们暂且创建两个数组,一个表示牌堆,一个表示手中的牌
这是一副牌的牌堆:
? ? ? ? public static int[] Cards =
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? 0x01, ?0x02, ?0x03, ?0x04, ?0x05, ?0x06, ?0x07, ?0x08, ?0x09,//万
? ? ? ? ? ? ? ? ? ? 0x01, ?0x02, ?0x03, ?0x04, ?0x05, ?0x06, ?0x07, ?0x08, ?0x09,//万
? ? ? ? ? ? ? ? ? ? 0x01, ?0x02, ?0x03, ?0x04, ?0x05, ?0x06, ?0x07, ?0x08, ?0x09,//万
? ? ? ? ? ? ? ? ? ? 0x01, ?0x02, ?0x03, ?0x04, ?0x05, ?0x06, ?0x07, ?0x08, ?0x09,//万
? ? ? ? ? ? ? ? ? ? 0x11, ?0x12, ?0x13, ?0x14, ?0x15, ?0x16, ?0x17, ?0x18, ?0x19,//条
? ? ? ? ? ? ? ? ? ? 0x11, ?0x12, ?0x13, ?0x14, ?0x15, ?0x16, ?0x17, ?0x18, ?0x19,//条
? ? ? ? ? ? ? ? ? ? 0x11, ?0x12, ?0x13, ?0x14, ?0x15, ?0x16, ?0x17, ?0x18, ?0x19,//条
? ? ? ? ? ? ? ? ? ? 0x11, ?0x12, ?0x13, ?0x14, ?0x15, ?0x16, ?0x17, ?0x18, ?0x19,//条
? ? ? ? ? ? ? ? ? ? 0x21, ?0x22, ?0x23, ?0x24, ?0x25, ?0x26, ?0x27, ?0x28, ?0x29,//筒
? ? ? ? ? ? ? ? ? ? 0x21, ?0x22, ?0x23, ?0x24, ?0x25, ?0x26, ?0x27, ?0x28, ?0x29,//筒
? ? ? ? ? ? ? ? ? ? 0x21, ?0x22, ?0x23, ?0x24, ?0x25, ?0x26, ?0x27, ?0x28, ?0x29,//筒
? ? ? ? ? ? ? ? ? ? 0x21, ?0x22, ?0x23, ?0x24, ?0x25, ?0x26, ?0x27, ?0x28, ?0x29,//筒
? ? ? ? ? ? ? ? };
这是手中的牌:
? ? ? ? ?static int[] cbCardIndex = new int[27]; //这是玩家手里的牌
接下来进入正题――洗牌的核心方法:先上代码
? ? ? public static void Shuffle(int[] cards, int maxcount) ?//这是洗牌的方法
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载