利用结构体编写的两人对战小游戏,代码及简要分析如下
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 }
执行过程截图