本次成果实现洗牌并能自动发牌
要是能写,能写好多,原理就是先读取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());
最后实现每次发的牌都不一样