用SliverLight做三国杀(四)重新定义卡牌类,增加牌堆类

设计过程当中不得不对Card类重新定义:由于比较简单,我就不解释了,呵呵,大家都看的懂
 
   
1 public class Card
2 {
3 public Card()
4 {
5 // Insert code required on object creation below this point.
6   }
7
8 /// <summary>
9 /// 表示牌的ID。
10 /// </summary>
11   public int ID { get ; set ; }
12 /// <summary>
13 /// 表示牌的花色。
14 /// </summary>
15 public string Color { get ; set ; }
16
17 /// <summary>
18 /// 表示牌的大小。
19 /// </summary>
20 public string Value { get ; set ; }
21
22 /// <summary>
23 /// 表示牌的名称。杀,闪,桃
24 /// </summary>
25 public string Name { get ; set ; }
26
27 public string ImagePath{ get ; set ;}
 
设计牌堆类CardHeap
其中变化比较大的就是卡牌信息不再在数据库中存放了,直接被我读取在内存当中了,由于不会使用WebClient类异步读取
,呵呵,会的朋友欢迎交流下。
这里定义了一个静态成员 _cards是我们存放纸牌的地方,就是牌堆啦,就是摸牌的地方
CardHeap()就是读取所有的107张牌,读完之后再洗牌,CardShuffle()是洗牌函数
目前牌堆的任务就是简单的洗牌,以后再添加其他的功能。
 
   
1 public class CardHeap
2 {
3 public static List < Card > _cards = new List < Card > (); // 定义牌堆
4
5
6 public static int next = 0 ;
7 public CardHeap()
8 {
9 // Insert code required on object creation below this point.
10 // 一共107张牌,在数据库中定义好了
11 GetXmlFromString();
12 // GetXmlFromString();
13 }
14
15 void GetXmlFromString()
16 {
17 string strXml =
18 @" <?xml version=""1.0"" encoding=""utf-8"" ?>
19 <cards>
20 <Card ID=""1"" Name=""桃"" Color=""方块"" Value="""" Image=""img/tao.jpg"" />
21 <Card ID=""2"" Name=""桃"" Color=""方块"" Value="""" Image=""img/tao.jpg"" />
22 <Card ID=""3"" Name=""桃"" Color=""方块"" Value="""" Image=""img/tao.jpg"" />
23 中间代码比较多,就不一一写出来了,大家可以参考之前的XML文件
124 <Card ID=""105"" Name=""赤兔"" Color=""红桃"" Value=""5"" Image=""img/chitu.jpg"" />
125 <Card ID=""106"" Name=""大宛"" Color=""黑桃"" Value=""K"" Image=""img/dawan.jpg"" />
126 <Card ID=""107"" Name=""紫骍"" Color=""方块"" Value=""K"" Image=""img/zixin.jpg"" />
127 </cards>
128
129 " ;
130 TextReader txtReader = new StringReader(strXml);
131
132 XDocument document = XDocument.Load(txtReader);
133 var cards = from f in document.Descendants( " Card " ) // XML文件中定义的Cards
134 select new Card
135 {
136 ID = int .Parse(f.Attribute( " ID " ).Value),
137 Name = f.Attribute( " Name " ).Value,
138 Color = f.Attribute( " Color " ).Value,
139 Value = f.Attribute( " Value " ).Value,
140 ImagePath = f.Attribute( " Image " ).Value
141
142 };
143 // List<Card> _card = new List<Card>();
144 _cards.Clear();
145 _cards.AddRange(cards);
146 // MessageBox.Show("读完了" + _cards.Count);
147 CardShuffle();这个是洗牌,洗牌的函数在下面定义,其实就是给个随机数,然后交换,比较简单
148 }
154
197
198 // 洗牌工作
199 public void CardShuffle()
200 {
201 if (_cards.Count == 0 )
202 {
203 MessageBox.Show( " 洗牌0000000 " );
204 }
205 int count = _cards.Count;
206 Card temp = new Card();
207 Random random = new Random();
208 for ( int i = 0 ; i < count; i ++ )
209 {
210 // 生成随机数
211 int cardtoswap = random.Next() % count;
212 temp = _cards[i];
213 _cards[i] = _cards[cardtoswap];
214 _cards[cardtoswap] = temp;
215
216 }
217
218 }
219
220
228
229
230 } 未完待续。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值