用SliverLight做三国杀(三)

2011040612062286.png本次成果实现洗牌并能自动发牌

要是能写,能写好多,原理就是先读取XML所有牌面文件,然后通过矩形控件动态加载,然后动态加载场景控件实现显示。

1.读取XML所有牌面文件,先看定义

<?xml version=""1.0"" encoding=""utf-8"" ?>
<cards>
    <Card ID=""1"" Name=""桃"" Color=""方块"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""2"" Name=""桃"" Color=""方块"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""3"" Name=""桃"" Color=""方块"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""4"" Name=""桃"" Color=""红桃"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""5"" Name=""桃"" Color=""红桃"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""6"" Name=""桃"" Color=""红桃"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""7"" Name=""桃"" Color=""红桃"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""8"" Name=""桃"" Color=""方块"" Value="""" Image=""img/tao.jpg"" />
    <Card ID=""9"" Name=""杀"" Color=""红桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""10"" Name=""杀"" Color=""红桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""11"" Name=""杀"" Color=""红桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""12"" Name=""杀"" Color=""红桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""13"" Name=""杀"" Color=""红桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""14"" Name=""杀"" Color=""方块"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""15"" Name=""杀"" Color=""方块"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""16"" Name=""杀"" Color=""方块"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""17"" Name=""杀"" Color=""方块"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""18"" Name=""闪"" Color=""红桃"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""19"" Name=""闪"" Color=""红桃"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""20"" Name=""闪"" Color=""红桃"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""21"" Name=""闪"" Color=""红桃"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""22"" Name=""闪"" Color=""红桃"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""23"" Name=""闪"" Color=""红桃"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""24"" Name=""闪"" Color=""红桃"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""25"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""26"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""27"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""28"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""29"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""30"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""31"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""32"" Name=""闪"" Color=""方块"" Value="""" Image=""img/shan.jpg"" />
    <Card ID=""33"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""34"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""35"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""36"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""37"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""38"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""39"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""40"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""41"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""42"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""43"" Name=""杀"" Color=""黑桃"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""44"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""45"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""46"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""47"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""48"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""49"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""50"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""51"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""52"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""53"" Name=""杀"" Color=""梅花"" Value="""" Image=""img/sha.jpg"" />
    <Card ID=""54"" Name=""万箭齐发"" Color=""红桃"" Value=""A"" Image=""img/wanjianqifa.jpg"" />
    <Card ID=""55"" Name=""桃园结义"" Color=""红桃"" Value=""A"" Image=""img/taoyuanjieyi.jpg"" />
    <Card ID=""56"" Name=""借刀杀人"" Color=""梅花"" Value=""Q"" Image=""img/jiedaosharen.jpg"" />
    <Card ID=""57"" Name=""借刀杀人"" Color=""梅花"" Value=""K"" Image=""img/jiedaosharen.jpg"" />
    <Card ID=""58"" Name=""五谷丰登"" Color=""红桃"" Value=""3"" Image=""img/wugufengdeng.jpg"" />
    <Card ID=""59"" Name=""五谷丰登"" Color=""红桃"" Value=""4"" Image=""img/wugufengdeng.jpg"" />
    <Card ID=""60"" Name=""闪电"" Color=""黑桃"" Value=""A"" Image=""img/shandian.jpg"" />
    <Card ID=""61"" Name=""闪电"" Color=""红桃"" Value=""Q"" Image=""img/shandian.jpg"" />
    <Card ID=""62"" Name=""无懈可击"" Color=""黑桃"" Value=""2"" Image=""img/wuxiekeji.jpg"" />
    <Card ID=""63"" Name=""无懈可击"" Color=""梅花"" Value=""Q"" Image=""img/wuxiekeji.jpg"" />
    <Card ID=""64"" Name=""无懈可击"" Color=""梅花"" Value=""K"" Image=""img/wuxiekeji.jpg"" />
    <Card ID=""65"" Name=""南蛮入侵"" Color=""黑桃"" Value=""K"" Image=""img/nanmanruqing.jpg"" />
    <Card ID=""66"" Name=""南蛮入侵"" Color=""黑桃"" Value=""7"" Image=""img/nanmanruqing.jpg"" />
    <Card ID=""67"" Name=""南蛮入侵"" Color=""梅花"" Value=""7"" Image=""img/nanmanruqing.jpg"" />
    <Card ID=""68"" Name=""决斗"" Color=""梅花"" Value=""A"" Image=""img/juedou.jpg"" />
    <Card ID=""69"" Name=""决斗"" Color=""黑桃"" Value=""A"" Image=""img/juedou.jpg"" />
    <Card ID=""70"" Name=""决斗"" Color=""方块"" Value=""A"" Image=""img/juedou.jpg"" />
    <Card ID=""71"" Name=""乐不思蜀"" Color=""梅花"" Value=""6"" Image=""img/lebusishu.jpg"" />
    <Card ID=""72"" Name=""乐不思蜀"" Color=""黑桃"" Value=""6"" Image=""img/lebusishu.jpg"" />
    <Card ID=""73"" Name=""乐不思蜀"" Color=""红桃"" Value=""6"" Image=""img/lebusishu.jpg"" />
    <Card ID=""74"" Name=""无中生有"" Color=""红桃"" Value=""7"" Image=""img/wuzhongshengyou.jpg"" />
    <Card ID=""75"" Name=""无中生有"" Color=""红桃"" Value=""8"" Image=""img/wuzhongshengyou.jpg"" />
    <Card ID=""76"" Name=""无中生有"" Color=""红桃"" Value=""9"" Image=""img/wuzhongshengyou.jpg"" />
    <Card ID=""77"" Name=""无中生有"" Color=""红桃"" Value=""2"" Image=""img/wuzhongshengyou.jpg"" />
    <Card ID=""78"" Name=""顺手牵羊"" Color=""黑桃"" Value=""2"" Image=""img/shunshouqianyang.jpg"" />
    <Card ID=""79"" Name=""顺手牵羊"" Color=""黑桃"" Value=""3"" Image=""img/shunshouqianyang.jpg"" />
    <Card ID=""80"" Name=""顺手牵羊"" Color=""黑桃"" Value=""4"" Image=""img/shunshouqianyang.jpg"" />
    <Card ID=""81"" Name=""顺手牵羊"" Color=""方块"" Value=""3"" Image=""img/shunshouqianyang.jpg"" />
    <Card ID=""82"" Name=""顺手牵羊"" Color=""方块"" Value=""4"" Image=""img/shunshouqianyang.jpg"" />
    <Card ID=""83"" Name=""过河拆桥"" Color=""黑桃"" Value=""3"" Image=""img/guohechaiqiao.jpg"" />
    <Card ID=""84"" Name=""过河拆桥"" Color=""黑桃"" Value=""4"" Image=""img/guohechaiqiao.jpg"" />
    <Card ID=""85"" Name=""过河拆桥"" Color=""梅花"" Value=""3"" Image=""img/guohechaiqiao.jpg"" />
    <Card ID=""86"" Name=""过河拆桥"" Color=""梅花"" Value=""4"" Image=""img/guohechaiqiao.jpg"" />
    <Card ID=""87"" Name=""过河拆桥"" Color=""黑桃"" Value=""Q"" Image=""img/guohechaiqiao.jpg"" />
    <Card ID=""88"" Name=""过河拆桥"" Color=""红桃"" Value=""Q"" Image=""img/guohechaiqiao.jpg"" />
    <Card ID=""89"" Name=""诸葛连弩"" Color=""梅花"" Value=""A"" Image=""img/zhugelianlu.jpg"" />
    <Card ID=""90"" Name=""诸葛连弩"" Color=""方块"" Value=""A"" Image=""img/zhugelianlu.jpg"" />
    <Card ID=""91"" Name=""雌雄双股剑"" Color=""黑桃"" Value=""2"" Image=""img/cixiongshuanggujian.jpg"" />
    <Card ID=""92"" Name=""寒冰剑"" Color=""黑桃"" Value=""2"" Image=""img/cixiongshuanggujian.jpg"" />
    <Card ID=""93"" Name=""青釭剑"" Color=""黑桃"" Value=""6"" Image=""img/qinghongjian.jpg"" />
    <Card ID=""94"" Name=""青龙偃月刀"" Color=""黑桃"" Value=""5"" Image=""img/qinglongyanyuedao.jpg"" />
    <Card ID=""95"" Name=""丈八蛇矛"" Color=""黑桃"" Value=""Q"" Image=""img/zhangbashemao.jpg"" />
    <Card ID=""96"" Name=""贯石斧"" Color=""方块"" Value=""5"" Image=""img/guanshifu.jpg"" />
    <Card ID=""97"" Name=""方天画戟"" Color=""方块"" Value=""Q"" Image=""img/fangtianhuaji.jpg"" />
    <Card ID=""98"" Name=""麒麟弓"" Color=""红桃"" Value=""5"" Image=""img/qilingong.jpg"" />
    <Card ID=""99"" Name=""八卦阵"" Color=""黑桃"" Value=""2"" Image=""img/baguazheng.jpg"" />
    <Card ID=""100"" Name=""八卦阵"" Color=""梅花"" Value=""2"" Image=""img/baguazheng.jpg"" />
    <Card ID=""101"" Name=""仁王盾"" Color=""梅花"" Value=""2"" Image=""img/baguazheng.jpg"" />
    <Card ID=""102"" Name=""的卢"" Color=""梅花"" Value=""5"" Image=""img/dilu.jpg"" />
    <Card ID=""103"" Name=""爪黄飞电"" Color=""红桃"" Value=""K"" Image=""img/huangzhuafeidian.jpg"" />
    <Card ID=""104"" Name=""绝影"" Color=""黑桃"" Value=""5"" Image=""img/jueyin.jpg"" />
    <Card ID=""105"" Name=""赤兔"" Color=""红桃"" Value=""5"" Image=""img/chitu.jpg"" />
    <Card ID=""106"" Name=""大宛"" Color=""黑桃"" Value=""K"" Image=""img/dawan.jpg"" />
    <Card ID=""107"" Name=""紫骍"" Color=""方块"" Value=""K"" Image=""img/zixin.jpg"" />

107张卡牌

读取

TextReader txtReader = new StringReader(strXml);

            XDocument document = XDocument.Load(txtReader);
            var cards = from f in document.Descendants("Card")//XML文件中定义的Cards
                        select new Card
                        {
                            ID = int.Parse(f.Attribute("ID").Value),
                            Name = f.Attribute("Name").Value,
                            Color = f.Attribute("Color").Value,
                            Value = f.Attribute("Value").Value,
                            ImagePath = f.Attribute("Image").Value

                        };
            //List<Card> _card = new List<Card>();
   _cards.Clear();
            _cards.AddRange(cards);
            MessageBox.Show("读完了" + _cards.Count);
 

然后通过Shuffle函数实现洗牌,洗牌也就是动态交换牌

public void CardShuffle()
        {
            if (_cards.Count == 0)
            {
                MessageBox.Show("洗牌0000000");
            }
            int count = _cards.Count;
            Card temp = new Card();
            Random random=new Random();
            for (int i = 0; i < count; i++)
            {
                //生成随机数
                int cardtoswap = random.Next() % count;
                temp = _cards[i];
                _cards[i] = _cards[cardtoswap];
                _cards[cardtoswap] = temp;

            }
            
        }

 

动态加载场景控件实现显示

// TODO: 发牌了
CardHeap cp = new CardHeap();
   
    玩家出牌区 pp=new 玩家出牌区();
   pp.Margin=new Thickness(0,775-252,0,0);//重新指定坐标
   LayoutRoot.Children.Add(pp);加入场景
  MessageBox.Show(CardHeap._cards.Count.ToString());

最后实现每次发的牌都不一样
2011040612054561.png
2011040612070189.png

转载于:https://www.cnblogs.com/moremoretea1983/archive/2011/04/06/2006656.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值