C#面向对象问题,可以请各位提供一下这题思路吗?

img

img
我想在方法中创建随机数但是没办法限制在0-20。还有我想如果怪物没打死就一直战斗这个循环该怎么做呢?
可以的话麻烦提供一下整段代码参考


            var rd = new Random();
            Console.WriteLine(rd.Next(0, 21));

打死写个while循环判断所有怪物血量大于0或奥特曼血量大于0就继续互怼,示例如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~

img

using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
    public class Item
    {
        public int Blood { get; set; }
        public string Name { get; set; }
        public int max { get; set; }
        Random r = new Random();
        /// <summary>
        /// 单体攻击
        /// </summary>
        /// <param name="item">被攻击对象</param>
        public void Attack(Item item)
        {
            Console.Write(this.Name + " 攻击 " + item.Name + "," + item.Name + "状态==》当前血量:" + item.Blood);
            var value = r.Next(0, max + 1);
            item.Blood -= value;

            Console.WriteLine(",减少血量:" + value + ",剩余血量:" + item.Blood);
        }
        /// <summary>
        /// 群攻
        /// </summary>
        /// <param name="items"></param>
        public void Attack(List<Monster> items)
        {
            foreach (var item in items) Attack(item);
        }
    }
    public class Ultraman: Item { }
    public class Monster: Item { }
    class Program
    {
        /// <summary>
        /// 判断怪物是否全部挂了
        /// </summary>
        /// <param name="monsters"></param>
        /// <returns></returns>
        static bool AllDead(List<Monster> monsters)
        {
            bool allDead = true;
            foreach(var item in monsters) if(item.Blood>0){ allDead = false;break; }
            return allDead;
        }
        static void Main(string[] args)
        {
            var man = new Ultraman { Name = "凹凸曼", Blood = 100, max = 20 };
            var monsters = new List<Monster> { };
            for (var i = 0; i < 4; i++) monsters.Add(new Monster { Name = "怪物" + i, Blood = 20, max = 20 });

            bool manIsDead = false;
            while (true)
            {
                man.Attack(monsters);
                if (AllDead(monsters)) { break; }
                foreach (var item in monsters)
                {

                    if (item.Blood > 0) item.Attack(man);
                    if (man.Blood < 0) { manIsDead = true; break; }

                }
                if (manIsDead) break;
            }
            Console.WriteLine("--------------------------\n互怼结果:" + (manIsDead ? "怪物赢" : "凹凸曼赢"));
            Console.ReadKey();
        }
    }
}

实例化一个全局的 Random 对象,然后用这个对象 .Next,不要直接用静态方法

奥特曼和怪兽相当于两个实体对象,血量和姓名就是他们的属性定义。
首先获取触发攻击的场景和随机技能的伤害值。
string Spelldamage=输入值;
Random rd = new Random();
int RadNumber= rd.Next(0,20);
Attack(Spelldamage,RadNumber);
编写一个方法
private void Attack(stirng Spelldamage,int RadNumber)
{
if(Spelldamage=="群体技能")
{
创建四个怪兽的对象
给怪兽的属性血量进行赋值。
遍历怪兽的血量若血量等于0就跳出循环,并给出提示,怪兽被消灭了。
原有血量减去传递过来的血量
最后把结果进行输出就饿可以了。
}else
{
单体技能,只对一个怪兽起作用,
}

}