码迷,mamicode.com
首页 > Windows程序 > 详细

自动发牌(C#版)

时间:2017-06-30 21:11:18      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:成员   text   独立   oid   iam   console   style   art   ogr   

利用数组实现发牌过程

一副牌去掉大小王,还剩52张。一共东、南、西、北四家,每家随机发13张牌。

提示:

  1. 东、南、西、北四家用一维数组表示
  2. 每家的牌采用一维数组表示(13张) 
  3. 花色:enum Suit { Clubs, Diamonds, Hearts, Spades } 
  4. 牌面:enum Value { Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace }
  5. 每张牌可以独立作为一个类来实现,该类中包含两个成员,即花色和牌面
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Poke
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             Poker[] poker = new Poker[52];
13             shuffle(poker);
14 
15             //发牌
16             Person[] person = new Person[4];
17             for (int i = 0; i < 4; i++)
18             {
19                 person[i] = new Person();
20                 person[i].perPoker = new Poker[13];
21             }
22             for (int i = 0; i < 52; i++)
23             {
24                 if (i % 4 == 0)
25                     person[0].perPoker[person[0].count++] = poker[i];
26                 else if (i % 4 == 1)
27                     person[1].perPoker[person[1].count++] = poker[i];
28                 else if (i % 4 == 2)
29                     person[2].perPoker[person[2].count++] = poker[i];
30                 else if (i % 4 == 3)
31                     person[3].perPoker[person[3].count++] = poker[i];
32             }
33             //显示每个人的牌
34             for (int i = 0; i < 4; i++)
35             {
36                 Console.Write("第{0}个人的牌为:", i + 1);
37                 for (int j = 0; j < 13; j++)
38                 {
39                     Console.Write(person[i].perPoker[j] + "\t");
40                 }
41                 Console.WriteLine();
42             }
43             Console.ReadKey();
44         }
45         //洗牌
46         static void shuffle(Poker[] poker)
47         {
48             //设置52张牌
49             for (int i = 0; i < 4; i++)
50                 for (int j = 0; j < 13; j++)
51                     poker[i * 13 + j] = new Poker((Suit)i, (Value)j+1);
52             for (int i = 1; i <= 52; i++)
53             {
54                 Random random = new Random();
55                 int num=random.Next(0, 53);
56                 Poker temp = poker[i - 1];
57                 poker[i - 1] = poker[num-1];
58                 poker[num-1] = temp;
59             }
60         }
61     }
62 
63     //花色
64     enum Suit { Clubs, Diamonds, Hearts, Spades }
65 
66     //牌的值
67     enum Value { Ace = 1, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King }
68 
69     //扑克牌类
70     class Poker
71     {
72         public Suit suit;
73         public Value value;
74 
75         public Poker() { }
76         public Poker(Suit i, Value v)
77         {
78             suit = i;
79             value = v;
80         }
81 
82         public override string  ToString()
83         {
84              return (suit.ToString()+","+value.ToString());
85         }
86     }
87 
88     class Person
89     {
90         public Person(){}
91         public Poker[] perPoker;
92         public int count;
93     }
94 }

 

自动发牌(C#版)

标签:成员   text   独立   oid   iam   console   style   art   ogr   

原文地址:http://www.cnblogs.com/Amedeo/p/6117719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!