【2017-12-13】c#基础-简单回合制对战游戏

效果图:

代码如下:

  1     class Program
  2     {
  3         struct Soldier//战士
  4         {
  5             private string name;//用户名
  6             private int attack;//攻击力
  7             private int defense;//防御力
  8             private int hP;//血量
  9 
 10             public string Name { get => name; set => name = value; }
 11             public int Attack { get => attack; set => attack = value; }
 12             public int Defense { get => defense; set => defense = value; }
 13             public int HP { get => hP; set => hP = value; }
 14         }
 15         struct Weapon//武器
 16         {
 17             private string name;//武器名
 18             private int attack;//攻击力
 19 
 20             public string Name { get => name; set => name = value; }
 21             public int Attack { get => attack; set => attack = value; }
 22         }
 23         struct Skill//技能
 24         {
 25             private string name;//技能名
 26             private int attack;//攻击力
 27 
 28             public string Name { get => name; set => name = value; }
 29             public int Attack { get => attack; set => attack = value; }
 30         }
 31 
 32         static void Main(string[] args)
 33         {
 34             Random r = new Random();
 35 
 36             #region 武器库
 37             List<Weapon> Weapons = new List<Weapon>();
 38             Weapon w1 = new Weapon();
 39             w1.Name = "树枝";
 40             w1.Attack = 20;
 41             Weapons.Add(w1);
 42 
 43             Weapon w2 = new Weapon();
 44             w2.Name = "木棍";
 45             w2.Attack = 40;
 46             Weapons.Add(w2);
 47 
 48             Weapon w3 = new Weapon();
 49             w3.Name = "棒球棍";
 50             w3.Attack = 60;
 51             Weapons.Add(w3);
 52 
 53             Weapon w4 = new Weapon();
 54             w4.Name = "板砖";
 55             w4.Attack = 100;
 56             Weapons.Add(w4);
 57             #endregion
 58 
 59             #region 技能库
 60             List<Skill> Skills = new List<Skill>();
 61             Skill sk1 = new Skill();
 62             sk1.Name = "普通攻击";
 63             sk1.Attack = 20;
 64             Skills.Add(sk1);
 65 
 66             Skill sk2 = new Skill();
 67             sk2.Name = "认真一拳";
 68             sk2.Attack = 50;
 69             Skills.Add(sk2);
 70 
 71             Skill sk3 = new Skill();
 72             sk3.Name = "飞起一脚";
 73             sk3.Attack = 100;
 74             Skills.Add(sk3);
 75 
 76             Skill sk4 = new Skill();
 77             sk4.Name = "死亡注视";
 78             sk4.Attack = 200;
 79             Skills.Add(sk4);
 80             #endregion
 81 
 82             #region 输入俩战士名字,战士初始化      
 83             Soldier s1 = new Soldier();
 84             Console.Write("请输入第一个战士的名字:");
 85             s1.Name = Console.ReadLine();
 86             s1.Attack = 100;
 87             s1.Defense = 20;
 88             s1.HP = 1000;
 89 
 90             Soldier s2 = new Soldier();
 91             Console.Write("请输入第二个战士的名字:");
 92             s2.Name = Console.ReadLine();
 93             s2.Attack = 100;
 94             s2.Defense = 20;
 95             s2.HP = 1000;
 96             #endregion
 97 
 98             #region 游戏开始,玩家武器刷新
 99             Console.WriteLine();
100             Console.WriteLine("===============游戏开始===============");
101             Console.WriteLine();
102             int s1_w = r.Next(0, Weapons.Count);//为战士一随机获取一个武器
103             s1.Attack += Weapons[s1_w].Attack;//战士一的攻击力更新        
104             Console.WriteLine(s1.Name + "获得的武器是:" + Weapons[s1_w].Name+"!攻击力成长为:"+s1.Attack);
105 
106             int s2_w = r.Next(0, Weapons.Count);//为战士二随机获取一个武器
107             s2.Attack += Weapons[s2_w].Attack;//战士二的攻击力更新         
108             Console.WriteLine(s2.Name + "获得的武器是:" + Weapons[s2_w].Name + "!攻击力成长为:" + s2.Attack);
109             Console.WriteLine();
110             #endregion
111 
112             #region 循环攻击开始
113             int i = 0;
114             while (true)
115             {
116                 Console.WriteLine("===============第"+(++i)+"回合===============");
117                 Console.WriteLine();
118                 int s1_s = r.Next(0,Skills.Count);//战士一此回合获取的技能
119                 int s1_a = s1.Attack + Skills[s1_s].Attack + r.Next(0,101);//战士一此回合的攻击力(战士一的攻击力+技能攻击力+0到100的攻击力浮动)
120                 s2.HP -= (s1_a - s2.Defense);//战士二剩余血量
121                 if (s1_s == 0)//输出颜色随技能改变
122                     Console.ForegroundColor = ConsoleColor.Blue;
123                 else if (s1_s == 1)
124                     Console.ForegroundColor = ConsoleColor.Yellow;
125                 else if (s1_s == 2)
126                     Console.ForegroundColor = ConsoleColor.Green;
127                 else if(s1_s==3)
128                     Console.ForegroundColor = ConsoleColor.Cyan;
129                 Console.WriteLine(""+s1.Name+"】对【"+s2.Name+"】发动【"+Skills[s1_s].Name+"】,造成【"+ s1_a + "】伤害,【" + s2.Name + "】的血量还有"+s2.HP);
130                 Console.ForegroundColor = ConsoleColor.White;
131 
132                 int s2_s = r.Next(0, Skills.Count);//战士一此回合获取的技能
133                 int s2_a = s2.Attack + Skills[s2_s].Attack + r.Next(0, 101);//战士一此回合的攻击力(战士一的攻击力+技能攻击力+0到100的攻击力浮动)
134                 s1.HP -= (s2_a - s1.Defense);//战士二剩余血量
135                 if (s2_s == 0)
136                     Console.ForegroundColor = ConsoleColor.Blue;
137                 else if (s2_s == 1)
138                     Console.ForegroundColor = ConsoleColor.Yellow;
139                 else if (s2_s == 2)
140                     Console.ForegroundColor = ConsoleColor.Green;
141                 else if (s2_s == 3)
142                     Console.ForegroundColor = ConsoleColor.Cyan;
143                 Console.WriteLine("" + s2.Name + "】对【" + s1.Name + "】发动【" + Skills[s2_s].Name + "】,造成【" + s2_a + "】伤害,【" + s1.Name + "】的血量还有" + s1.HP);
144                 Console.ForegroundColor = ConsoleColor.White;
145                 Console.WriteLine();
146                 //判断战斗结果
147                 if (s1.HP <= 0 && s2.HP <= 0)
148                 {
149                     Console.ForegroundColor = ConsoleColor.Red;
150                     Console.WriteLine("同归于尽!");
151                     break;
152                 }
153                 else if (s1.HP <= 0)
154                 {
155                     Console.ForegroundColor = ConsoleColor.Red;
156                     Console.WriteLine(s2.Name + "战胜!");
157                     break;
158                 }
159                 else if (s2.HP <= 0)
160                 {
161                     Console.ForegroundColor = ConsoleColor.Red;
162                     Console.WriteLine(s1.Name + "战胜!");
163                     break;
164                 }
165                 System.Threading.Thread.Sleep(1000);
166             }
167             #endregion
168 
169             Console.ReadLine();
170         }
171     }

 

posted @ 2017-12-13 20:22  Int64  阅读(2104)  评论(0编辑  收藏  举报