siverlight+wcf网络分房间斗地主2洗牌算法与后台摆牌


前边讲了直接用页面的控件布局,实现摆牌的效果,现在我们用后台生成的数字来与相应的图片对应

后台生成的效果


http://blog.csdn.net/aojiancc2/article/details/14446711 三


一:我们用一个54位的数组来分别代替54张牌,对应的方式写到一个switch里边

为了方便把玩家手中的牌从大到小理整齐,使用了数字大的对应大的牌,这样我们只需要降序排序就行了

public string GetUrl(int _pokertype) 
        {
            switch(_pokertype)
            {

                case 0: return "Image/hei_3.png";/*四个3*/
                case 1: return "Image/hong_3.png";
                case 2: return "Image/mei_3.png";
                case 3: return "Image/fang_3.png";

                case 4: return "Image/hei_4.png";/*四个4*/
                case 5: return "Image/hong_4.png";
                case 6: return "Image/mei_4.png";
                case 7: return "Image/fang_4.png";

                case 8: return "Image/hei_5.png";/*四个5*/
                case 9: return "Image/hong_5.png";
                case 10: return "Image/mei_5.png";
                case 11: return "Image/fang_5.png";

                case 12: return "Image/hei_6.png";/*四个6*/
                case 13: return "Image/hong_6.png";
                case 14: return "Image/mei_6.png";
                case 15: return "Image/fang_6.png";

                case 16: return "Image/hei_7.png";/*四个7*/
                case 17: return "Image/hong_7.png";
                case 18: return "Image/mei_7.png";
                case 19: return "Image/fang_7.png";

                case 20: return "Image/hei_8.png";/*四个8*/
                case 21: return "Image/hong_8.png";
                case 22: return "Image/mei_8.png";
                case 23: return "Image/fang_8.png";

                case 24: return "Image/hei_9.png";/*四个9*/
                case 25: return "Image/hong_9.png";
                case 26: return "Image/mei_9.png";
                case 27: return "Image/fang_9.png";

                case 28: return "Image/hei_10.png";/*四个10*/
                case 29: return "Image/hong_10.png";
                case 30: return "Image/mei_10.png";
                case 31: return "Image/fang_10.png";

                case 32: return "Image/hei_11.png";/*四个J*/
                case 33: return "Image/hong_11.png";
                case 34: return "Image/mei_11.png";
                case 35: return "Image/fang_11.png";

                case 36: return "Image/hei_12.png";/*四个Q*/
                case 37: return "Image/hong_12.png";
                case 38: return "Image/mei_12.png";
                case 39: return "Image/fang_12.png";

                case 40: return "Image/hei_13.png";/*四个k*/
                case 41: return "Image/hong_13.png";
                case 42: return "Image/mei_13.png";
                case 43: return "Image/fang_13.png";

                case 44: return "Image/hei_1.png";/*四个A*/
                case 45: return "Image/hong_1.png";
                case 46: return "Image/mei_1.png";
                case 47: return "Image/fang_1.png";

                case 48: return "Image/hei_2.png";/*四个2*/
                case 49: return "Image/hong_2.png";
                case 50: return "Image/mei_2.png";
                case 51: return "Image/fang_2.png";

                case 52: return "Image/xiaowang.png";/*大王,小王*/
                case 53: return "Image/dawang.png";

                default: return null;
            }
        }

二:既然我们0-53的数字分别对应了玩家的牌,现在我们只需要产生随机的0-53之间的数,分给用户与底牌就行了

算法有很多种,这里用一种先依次产生0-53才生成随机数作为位置与当前位置交换

public int[] Deal()//发牌
        {
            int[] cardValueArray = new int[54];//存代表54张牌的数组

            for (int i = 0; i < 54; i++)//先让数组的下标等于下标数
            {
                cardValueArray[i] = i;
            }

            Random ra = new Random();
            for (int i = 0; i < 54; i++) //随机产生一个位置用与和当前位置交换,以便打乱顺序,比如第一次参数4就让1和4交换值
            {
                int randommun = ra.Next(0, 53);
                int middle = cardValueArray[i];
                cardValueArray[i] = cardValueArray[randommun];
                cardValueArray[randommun] = middle;
            }

            return cardValueArray;
        }

好现在有了这两个东西,只需要在生成的数组对应Image的url在后台添加图片上去就行了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值