开发环境:
系统环境:Win10
开发工具:VS2019
语言:C#
项目:控制台应用(.NET Framework)
编码
英雄类:(更换namespace即可)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hero_demo { public class Hero { /// <summary> /// 编号 /// </summary> private string id; /// <summary> /// 英雄姓名 /// </summary> private string name; /// <summary> /// 英雄血量 /// </summary> private int hp; /// <summary> /// 英雄攻击 /// </summary> private int ac; /// <summary> /// <hr/><i><b>四个参数的构造方法,用于赋值</b></i><hr/> /// </summary> /// <param name="id"></param> /// <param name="name"></param> /// <param name="hp"></param> /// <param name="ac"></param> public Hero(string id, string name, int hp, int ac) { this.id = id; this.name = name; this.hp = hp; this.ac = ac; } /// <summary> /// 给一个空的构造方法·不让外界使用 /// </summary> public Hero() { } /*选中需要生成的变量->鼠标右键->封装字段->选择字段->确定*/ /// <summary> /// 以下为自动生成的内容·对外提供了可访问私有对象的接口 /// </summary> public string Id { get => id; set => id = value; } public string Name { get => name; set => name = value; } public int Hp { get => hp; set => hp = value; } public int Ac { get => ac; set => ac = value; } } }
执行类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hero_demo { class Program { /// <summary> /// 全局英雄数据 /// </summary> public static List<Hero> lists = new List<Hero>(); //对战英雄A_oneHero static Hero A_oneHero = null; //对战英雄B_twoHero static Hero B_oneHero = null; static void Main(string[] args) { /** * 移动2010勇士大乱斗 */ Console.WriteLine("********************************"); Console.WriteLine("*******欢迎来到移动2010*********"); Console.WriteLine("***********勇士大乱斗***********"); Console.WriteLine("*****可选英雄四人·人机战斗*****"); Console.WriteLine("********************************"); //数据初始化 lists = GetDefaultList();//在类中有一个全局的lists变量 while (true) { //菜单 Console.WriteLine("********************************"); Console.WriteLine("******1、遍历当前英雄列表*******"); Console.WriteLine("******2、选择人物英雄对战*******"); Console.WriteLine("******3、人机移动2010勇士对战***"); Console.WriteLine("******4、退出2010勇士乱斗***"); Console.WriteLine("********************************"); string chooes = Console.ReadLine(); switch (chooes) { case "1": findAllHero(); break; case "2": choose(); break; case "3": PeoVSCom(); break; case "4": Console.WriteLine("欢迎再次光临:【移动2010·勇者大乱斗】"); return; default: Console.WriteLine("请输入正确的选项"); break; } } //初始化中A英雄拿到了lists集合的第N个值的HashCode()并且针对于这个 //HashCode()进行了战斗过程,所以,lists集合中的数据有了变化 //重新创建了一个hashCode就解决了这个问题。 } /// <summary> /// 人机对战 /// </summary> private static void PeoVSCom() { if (A_oneHero==null) { Console.WriteLine("请选择英雄"); return; } if (A_oneHero.Hp<=0||B_oneHero.Hp<=0) { Console.WriteLine("请重新选择英雄,英雄太累了。"); return; } Random ra = new Random(); //两个英雄 Console.WriteLine("*************************"); Console.WriteLine("人类英雄:" + A_oneHero.Name); Console.WriteLine("电脑英雄:" + B_oneHero.Name); Console.WriteLine("****按回车键开始战斗****"); Console.WriteLine("*************************"); Console.ReadKey();//回车继续 //判断血量是否可以继续比赛A先攻击B while (true) { int A_cut = A_oneHero.Ac / 2 + ra.Next(A_oneHero.Ac / 2); B_oneHero.Hp -= A_cut; string A = string.Format("{0}\t对\t {1}发起攻击,造成{2}点伤害,{3}血量剩余:\t{4}。" , A_oneHero.Name, B_oneHero.Name, A_cut, B_oneHero.Name, B_oneHero.Hp ); Console.WriteLine(A); if (B_oneHero.Hp <= 0) { Console.WriteLine("恭喜,您成胜利了。"); return;//死亡直接return即可 } Console.WriteLine("*********************************************"); //判断B_电脑是否阵亡 int B_cut = B_oneHero.Ac / 2 + ra.Next(B_oneHero.Ac / 2); A_oneHero.Hp -= B_cut; string B = string.Format("{0}\t对\t {1}发起攻击,造成{2}点伤害,{3}血量剩余:\t{4}。" , B_oneHero.Name, A_oneHero.Name, B_cut, A_oneHero.Name, A_oneHero.Hp ); Console.WriteLine(B); //判断A_人脑是否阵亡 if (A_oneHero.Hp <= 0) { Console.WriteLine("抱歉,电脑胜利了。"); return; } Console.WriteLine("*********************************************"); } } /// <summary> /// 选择英雄 /// </summary> private static void choose() { Random ra = new Random(); //人可以通过输入英雄ID进行选择英雄 Console.WriteLine("请输入你需要选择的英雄编号:"); string id = Console.ReadLine(); //遍历集合匹配id foreach (var item in lists) { if (item.Id.Equals(id)) { Hero A1=new Hero(); A1.Id = item.Id; A1.Name = item.Name; A1.Hp = item.Hp; A1.Ac = item.Ac; A_oneHero = A1; Console.WriteLine("您选择了:\t" + item.Name); break; } } //电脑就只能通过随机的方式进行赋值。 Hero hero = lists[ra.Next(4)]; Hero A = new Hero(); A.Id = hero.Id; A.Name = hero.Name; A.Hp = hero.Hp; A.Ac = hero.Ac; B_oneHero = A; Console.WriteLine("电脑随机到了:\t" + B_oneHero.Name); } /// <summary> /// 遍历英雄 /// </summary> private static void findAllHero() { foreach (var hero in lists) { Console.WriteLine("*******************************"); Console.WriteLine("英雄编号:" + hero.Id); Console.WriteLine("英雄名称:" + hero.Name); Console.WriteLine("英雄血量:" + hero.Hp); Console.WriteLine("英雄攻击:" + hero.Ac); Console.WriteLine("*******************************"); } } /// <summary> /// 自定义函数用于英雄赋值 /// </summary> /// <returns></returns> public static List<Hero> GetDefaultList() { List<Hero> hs = new List<Hero>(); hs.Add(new Hero(Guid.NewGuid().ToString("N"), "精武英雄·陈真", 760, 110)); hs.Add(new Hero(Guid.NewGuid().ToString("N"), "天龙八部·乔峰", 900, 150)); hs.Add(new Hero(Guid.NewGuid().ToString("N"), "德玛西亚·盖伦", 860, 80)); hs.Add(new Hero(Guid.NewGuid().ToString("N"), "日出东方·东方教主", 500, 210)); return hs; } } }
过程:
演示完毕。
源码地址: