c#位运算小例子笔记

1每个骰子有6个点,1-3为小,4-6为大,[1,3,5]为单,[2,4,6]为双

2每次扔3个骰子

问题:如果把每场结果设成实体对象,那么该如何设计呢?

 1  public class GameResult
2     {
3         //第一个骰子
4         public int FirstDiceValue { get; set; }
5         public Mode FirstDiceMode { get { return SetModel(FirstDiceValue); } }
6         //第二个骰子
7         public int SecondDiceValue { get; set; }
8         public Mode SecondDiceMode { get { return SetModel(SecondDiceValue); } }
9         //第三个骰子
10         public int ThirdDiceValue { get; set; }
11         public Mode ThirdDiceMode { get { return SetModel(ThirdDiceValue); } }
12
13         private Mode SetModel(int value)
14         {
15             Mode Size;
16             Mode EvenOdd;
17             if (value >= 3) Size = Mode.大;
18             else Size = Mode.小;
19             if (value % 2 == 0) EvenOdd = Mode.双;
20             else EvenOdd = Mode.单;
21             return Size | EvenOdd;
22         }
23     }
24
25     /// <summary>
26     /// 骰子的大小和单双结果枚举
27     /// </summary>
28     [Flags]
29     public enum Mode
30     {
31         //1111 大小单双
32         双 = 1,//0001
33         单 = 2,//0010
34         小 = 4,//0100
35         大 = 8//1000
36     }

 1     class Program
2     {
3         static void Main(string[] args)
4         {
5
6             GameResult resule = new GameResult()
7             {
8                 FirstDiceValue = 3,
9                 SecondDiceValue = 6,
10                 ThirdDiceValue = 2
11             };
12             Console.WriteLine(resule.FirstDiceMode);
13             Console.WriteLine(resule.SecondDiceMode);
14             Console.WriteLine(resule.ThirdDiceMode);
15
17         }
18     }

posted @ 2018-07-12 21:35  半路独行  阅读(195)  评论(0编辑  收藏  举报