• 结构体、枚举类型及其练习题,最后的对战游戏(基础版)


    结构体:
    在内存中临时存储数据的方式
    1、变量、常量
    2、数组,可以存储固定长度统一类型的数据
    3、集合
    4、结构体

    学生信息:姓名,性别,年龄,系别

    结构体含义:就是将生活中的一些个体,封装成一个特殊的类型

    结构体是:用户自定义数据类型

    创建:
    创建的位置:main函数之外
    struct Student
    {
    public int Code;
    public string Name;
    public string Sex;
    public int Old;
    public DateTime Birthday;
    }

    定义:声明
    Student s = new Student(); //实例化

    赋值:
    s.Code = 1;
    s.Name = "张三";
    s.Sex = "男";
    s.Old = 18;
    s.Birthday = Convert.ToDateTime("1999-1-1");

    取值:
    s.Code //放在等号左边就是给它赋值,放在右边就是使用它的值

    应用:

    练习题:
    请输入学生个数:n
    请输入第1个学生的姓名:
    请输入第1个学生的性别:
    请输入第1个学生的年龄:
    请输入第1个学生的成绩:
    ...
    n
    ****************************
    学生的总成绩为:xxx,平均分为:xxx。
    ****************************
    年龄排名(由大到小):
    姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
    ...
    n
    ****************************
    成绩排名(由高到低):
    姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
    ...
    n
    --------------------------------------------------------------------------

            struct Student//新建类型
            {
                public string Name;
                public string Sex;
                public int Old;
                public decimal score;
            }
            static void Main(string[] args)
            {
                Console.Write("请输入学生的个数:");
                int gs = Convert.ToInt32(Console.ReadLine());
    
                ArrayList arr = new ArrayList();//新的集合
                decimal end = 0m;
                for (int i = 0; i < gs; i++)
                {
                    Student s = new Student();
                    while (true)//判断姓名输入是否为空
                    {
                        Console.Write("请输入第" + (i + 1) + "个学生的姓名:");
                        s.Name = Console.ReadLine();
                        if (s.Name == "" || s.Name == "  ")
                        {
                            Console.WriteLine("输入有误!");
                        }
                        else
                        {
                            break;
                        }
                    }
                    while (true)//判断姓名输入是否为空
                    {
                        Console.Write("请输入第" + (i + 1) + "个学生的性别:");
                        s.Sex = Console.ReadLine();
                        if (s.Sex == "" || s.Sex == "")
                        {
    
                            break;
                        }
                        else
                        {
                            Console.WriteLine("输入有误!");
                        }
                    }
                    while (true)
                    {
                        Console.Write("请输入第" + (i + 1) + "个学生的年龄:");
                        try
                        {
                            s.Old = Convert.ToInt32(Console.ReadLine());
                            break;
                        }
                        catch
                        {
                            Console.WriteLine("输入有误!");
                            Console.Write("请输入第" + (i + 1) + "个学生的年龄:");
                        }
                    }
                    while (true)
                    {
                        Console.Write("请输入第" + (i + 1) + "个学生的成绩:");
                        try
                        {
                            s.score = Convert.ToDecimal(Console.ReadLine());
                            break;
                        }
                        catch
                        {
                            Console.WriteLine("输入有误!");
                            Console.Write("请输入第" + (i + 1) + "个学生的成绩:");
                        }
                    }
                    end += s.score;
                    arr.Add(s);                
                }
    
                Console.WriteLine("********************************");
                Console.WriteLine("总分是:" + end + ",平均分是:" + (end / gs));
                Console.WriteLine("********************************");
                //按年龄大小排序
                for (int i = 0; i < arr.Count; i++)
                {
                    for (int j = i + 1; j < arr.Count; j++)
                    {
                        Student s = (Student)arr[i];
                        Student ss = (Student)arr[j];
                        if (s.Old < ss.Old)
                        {
                            Object zhong = arr[i];
                            arr[i] = arr[j];
                            arr[j] = zhong;
                        }
                    }                        
                }
                foreach (Student stu in arr)
                { 
                Console.WriteLine("学生的姓名是:"+stu.Name+",性别是:"+stu.Sex+",年龄是:"+stu.Old+",成绩是:"+stu.score+"");           
                }
                Console.WriteLine("********************************");
                    //按成绩大小排序
    
                for (int k = 0; k < arr.Count; k++)
                {
                    for (int l = k + 1; l < arr.Count; l++)
                    {
                        Student s = (Student)arr[k];
                        Student ss = (Student)arr[l];
                        if (s.score < ss.score)
                        {
                            Object zhong = arr[k];
                            arr[k] = arr[l];
                            arr[l] = zhong;
                        }
                    }
                }
                foreach (Student stu in arr)
                {
                    Console.WriteLine("学生的姓名是:" + stu.Name + ",性别是:" + stu.Sex + ",年龄是:" + stu.Old + ",成绩是:" + stu.score + "");
                }
    
    
                    Console.ReadKey();
            }


    枚举:
    学生:姓名,性别,年龄,成绩,系别

    性别:男, 男士, man , 爷们

    星期几: 周一,星期一,一

    枚举的作用:统一,规范化的开发,个人用处不大,一般是团队开发时常用。

    枚举也是一种用户自定义类型;

    创建赋值: enum
    public enum Sex
    {
    男,

    }

    取值:
    Sex.值

    对战游戏(无招式与武器、装备版)

            struct warrior
            {
                public string name;//名字
                public int blood;  //血量
                public int attack; //攻击
                public int defense;//防御     
            }
    
            static void Main(string[] args)
            {
                //创建两个战士
                warrior zs1 = new warrior();
                warrior zs2 = new warrior();
    
                //为战士命名
                Console.Write("请输入战士一的昵称:");
                zs1.name = Console.ReadLine();
                Console.Write("请输入战士二的昵称:");
                zs2.name = Console.ReadLine();
    
                Random r = new Random();//游戏必须要用
    
                //随机生成战士的血量
                zs1.blood = r.Next(500, 1000);
                zs2.blood = r.Next(500, 1000);
    
                //随机生成战士攻击力,并使其攻击力上下浮动
                zs1.attack = r.Next(50, 100);
                zs2.attack = r.Next(50, 100);
    
                //随机生成战士防御力,并使其上下浮动
                zs1.defense = r.Next(0, 20);
                zs2.defense = r.Next(0, 20);
    
                Console.WriteLine(zs1.name + ",血量:" + zs1.blood + ",攻击:" + zs1.attack + ",防御:" + zs1.defense);
                Console.WriteLine(zs2.name + ",血量:" + zs2.blood + ",攻击:" + zs2.attack + ",防御:" + zs2.defense);
    
    
                Console.WriteLine("********************按空格键开始********************");
                Console.ReadKey();
                while (true)
                {
                    //判断胜负
                    if (zs1.blood <= 0)
                    {
                        Console.WriteLine(zs2.name + "胜利了!");
                        break;
                    }
                    else if (zs2.blood <= 0)
                    {
                        Console.WriteLine(zs1.name + "胜利了!");
                        break;
                    }
                    else if (zs1.blood <= 0 && zs2.blood <= 0)
                    {
                        Console.WriteLine("同归于尽了!");
                        break;
                    }
    
                    Thread.Sleep(1500);//停顿一下在开始
                    //战士一攻击
                    int zs1gj = r.Next(zs1.attack - 10, zs1.attack + 30);//战士一的攻击力浮动范围 
                    int zs2fy = r.Next(zs2.defense - 5, zs2.defense + 15);//战士二的防御力浮动范围
                    int zs1end = zs1gj - zs2fy;//战士一攻击后对战士二造成的伤害值
                    zs2.blood = zs2.blood - zs1end;//战士二受到攻击后的血余量
    
                    Console.WriteLine(zs1.name + "" + zs2.name + " 发动了攻击,造成" + zs1end + "点伤害! " + zs2.name + "的血量还剩" + zs2.blood);
                    Console.WriteLine();
    
                    Thread.Sleep(1500);
                    //战士二攻击
                    if (zs1.blood <= 0)
                    {
                        Console.WriteLine(zs2.name + "胜利了!");
                        break;
                    }
                    else if (zs2.blood <= 0)
                    {
                        Console.WriteLine(zs1.name + "胜利了!");
                        break;
                    }
                    else if (zs1.blood <= 0 && zs2.blood <= 0)
                    {
                        Console.WriteLine("同归于尽了!");
                        break;
                    }
    
                    int zs2gj = r.Next(zs2.attack - 10, zs2.attack + 30);//战士二的攻击力浮动范围
                    int zs1fy = r.Next(zs1.defense - 5, zs1.defense + 15);//战士一的防御力浮动范围
                    int zs2end = zs2gj - zs1fy;//战士二攻击后对战士一造成的伤害值
                    zs1.blood = zs1.blood - zs2end;//战士一受到攻击后的血余量
    
                    Console.WriteLine(zs2.name + "" + zs1.name + " 发动了攻击,造成" + zs2end + "点伤害! " + zs1.name + "的血量还剩" + zs1.blood);
                    Console.WriteLine();
                }
                Console.ReadLine();
            }

  • 相关阅读:
    下载vue-devtools插件的步骤
    弄清 CSS3 的 transition 和 animation
    js与多行字符串
    swift 上手
    liunux 修改hostname
    linux 下使用配置文件
    linux安装oracle11g
    jQueryt过滤选择器
    Javascript并发模型和事件循环
    CSS生僻问题一网打尽
  • 原文地址:https://www.cnblogs.com/123lucy/p/5543821.html
Copyright © 2020-2023  润新知