利用结构体编写的两人对战小游戏,代码及简要分析如下

 1         public struct Fighter
 2         {
 3             public string name;
 4             public int blood;
 5             public int attack;
 6             public int defense;
 7             public int hit;
 8             public int hide;
 9         }
10 
11 
12         static void Main(string[] arge)
13         {
14 
15             //定义一组对手
16             Fighter f1 = new Fighter();
17             Fighter f2 = new Fighter();
18             Console.Write("第一位:");
19             f1.name = Console.ReadLine();
20             Console.Write("第二位:");
21             f2.name = Console.ReadLine();
22 
23 
24             //利用名字的前两个字,创建随机数生成器
25             int r1 = (int)Convert.ToChar(f1.name.Substring(0, 1)) + (int)Convert.ToChar(f1.name.Substring(1, 1));
26             int r2 = (int)Convert.ToChar(f2.name.Substring(0, 1)) + (int)Convert.ToChar(f2.name.Substring(1, 1));
27             Random rand1 = new Random(r1);
28             Random rand2 = new Random(r2);
29 
30             f1.blood = 100;    //对战双方初始血量都为100
31             f2.blood = 100;
32 
33             for (int i = 1; (f1.blood > 0 && f2.blood > 0); i++)
34             {
35                 //利用各自创建的随机数生成器赋值攻击力、防御力、命中、躲避
36                 System.Threading.Thread.Sleep(2000);
37                 f1.attack = rand1.Next(30);
38                 f1.defense = rand1.Next(10);
39                 f1.hit = rand1.Next(100);
40                 f1.hide = rand1.Next(100);
41 
42                 f2.attack = rand2.Next(30);
43                 f2.defense = rand2.Next(10);
44                 f2.hit = rand2.Next(100);
45                 f2.hide = rand2.Next(100);
46 
47                 if (f1.hit <= 95 && f2.hide <= 95)    //都设95%命中,5%躲避,判断是否命中
48                 {
49                     Console.WriteLine(f1.name + "发起攻击……");
50                     if (f1.attack > f2.defense)    //判断2号本次防御力是否高于1号攻击力
51                     {
52                         f2.blood = f2.blood - f1.attack + f2.defense;
53                         Console.WriteLine("{0}被打掉了{1}血!", f2.name, (f1.attack - f2.defense));
54                     }
55                     else
56                         Console.WriteLine(f2.name + "挡住了攻击!");
57                     if (f2.blood <= 0)    //假如2号血量掉到0,游戏结束
58                     {
59                         break;
60                     }
61                 }
62                 else if (f1.hit <= 95 && f2.hide > 95)    //判断1号攻击未失误时,2号是否躲避
63                 {
64                     Console.WriteLine(f2.name + "躲开了攻击!");
65                 }
66                 else
67                     Console.WriteLine(f1.name + "攻击失误!");
68 
69                 if (f2.hit <= 95 && f1.hide <= 95)    //都设95%命中,5%躲避
70                 {
71                     Console.WriteLine(f2.name + "发起攻击……");
72                     if (f2.attack > f1.defense)
73                     {
74                         f1.blood = f1.blood - f2.attack + f1.defense;
75                         Console.WriteLine("{0}被打掉了{1}血!", f1.name, (f2.attack - f1.defense));
76                     }
77                     else
78                         Console.WriteLine(f1.name + "挡住了攻击!");
79                     if (f1.blood <= 0)
80                     {
81                         break;
82                     }
83                 }
84                 else if (f2.hit <= 95 && f1.hide > 95)
85                 {
86                     Console.WriteLine(f1.name + "躲开了攻击!");
87                 }
88                 else
89                     Console.WriteLine(f1.name + "攻击失误!");
90                 Console.WriteLine("{0}剩余血量{1},{2}剩余血量{3}",    //每回合结束,显示双方剩余血量
91                     f1.name, (f1.blood <= 0 ? 0 : f1.blood),
92                     f2.name, (f2.blood <= 0 ? 0 : f2.blood) + "\n");
93 
94             }
95             Console.WriteLine("{0}剩余血量{1},{2}剩余血量{3}",    //游戏结束,显示双方剩余血量
96                     f1.name, (f1.blood <= 0 ? 0 : f1.blood),
97                     f2.name, (f2.blood <= 0 ? 0 : f2.blood));
98 
99         }

 

执行过程截图

 

posted on 2014-08-30 00:08  幻影K  阅读(287)  评论(0编辑  收藏  举报