可变数量限制

时间:2013-10-30 20:38:47

标签: c# class

这是我在C#2010中创建的游戏,但是当用户输入[1]增加你的防御时,攻击和健康for comp的值会变为负数。

        bool jet = false;


        int userinput;

        Console.WriteLine("Pick your team color, Blue or Green. ");
        string userName = Console.ReadLine();

        if (userName == "blue")
        {
            user.Name = "Blue Fighterjet";
            comp.Name = "Green Fighterjet";
        }

        else
        {
            user.Name = "Green Fighterjet";
            comp.Name = "Blue Fighterjet";
        }

        Console.Clear();

        Console.WriteLine("You are now the {0}.", user.Name);
        Console.ReadLine();

        Console.Clear();

        Console.WriteLine("What do you want to do for your first move?");
        Console.ReadLine();

        while (jet == false)
        {
            Console.Clear();
            Console.WriteLine("Your stats:");
            Console.WriteLine("Health {0} \n Defense {1} \n Attack {2}", user.Health, user.Defense, user.Attack);

            Console.WriteLine("Comp stats:");
            Console.WriteLine("Health {0} \n Defense {2} \n Attack {2}", comp.Health, comp.Defense, comp.Attack);
            Console.ReadLine();

            Console.WriteLine("[1] Increase your Defense.");
            Console.WriteLine("[2] Regain some of your Health.");
            Console.WriteLine("[3] Attack the {0}.", comp.Name);
            userinput = int.Parse(Console.ReadLine());


            if (userinput == 1)
            {
                user.Defense = user.Defense + random.Next(1, 10);

                if (userinput == 1)
                {
                    comp.Attack = comp.Attack - user.Defense + random.Next(1, 10);
                }
            }


            if (userinput == 2)
            {
                user.Health = user.Health + random.Next(1, 10);

                if (userinput == 2)
                {
                    comp.Defense = comp.Defense + random.Next(1, 10);
                }
            }


            if (userinput == 3)
            {
                user.Attack = user.Attack + random.Next(1, 10);

                if (userinput == 3)
                {
                    comp.Health = comp.Health - user.Attack + random.Next(1, 10);
                }
            }
        }
    }
}
class jet
{
    private string name;
    private int health = 100;
    private int defense = 0;
    private int attack = 5;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Health
    {
        get
        {
            return health;
        }

        set
        {
            if (value <= 100)
            {
                health = value;
            }
            else
            {
                health = 100;
            }
        }

    }

    public int Defense
    {
        get
        {
            return defense;
        }
        set
        {
            if (value <= 10)
            {
                defense = value;
            }
            else
            {
                defense = 10;
            }
        }
    }

    public int Attack
    {
        get
        {
            return attack;
        }
        set
        {
            if (value <= 5)
            {
                attack = value;
            }
            else
            {
                attack = 5;
            }
        }
    }
}

有关如何轻松解决此问题的任何提示?

我的userinputs不正确吗?

1 个答案:

答案 0 :(得分:2)

这将为您提供0或正数... Math.Max(0,variable)

此外,当条件相同时,您不需要嵌套的if语句

if (value ==1)
{
  //Do Something
    if (value == 1) //This will always happen unless DoSomething has changed value.
    {
    }
}