Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试创建一个简单的RPG战斗引擎。保持';没有给出任何参数';错误_C#_C# 4.0 - Fatal编程技术网

C# 尝试创建一个简单的RPG战斗引擎。保持';没有给出任何参数';错误

C# 尝试创建一个简单的RPG战斗引擎。保持';没有给出任何参数';错误,c#,c#-4.0,C#,C# 4.0,我正在尝试创建一个简单的战斗游戏,在这里你可以选择你的职业,你可以根据这个职业得到不同的统计数据。我想把整数传给战斗方法,但我遇到了麻烦 我不断收到CS7036错误,说“没有与main game.batch(int,int,int)所需的形式参数Chance相对应的参数。无论出于何种原因,这是唯一受影响的机会。我不明白为什么 using System; using System.Collections.Generic; using System.Linq; using System.Text;

我正在尝试创建一个简单的战斗游戏,在这里你可以选择你的职业,你可以根据这个职业得到不同的统计数据。我想把整数传给战斗方法,但我遇到了麻烦

我不断收到
CS7036
错误,说“没有与
main game.batch(int,int,int)
所需的形式参数
Chance
相对应的参数。无论出于何种原因,这是唯一受影响的机会。我不明白为什么

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{

public class MainGame
{

    public static void Main()
    {
        Character();
    }
    public static void Character()
    {

        Console.WriteLine("Choose your class. Warrior or elf?");
        var charClass = Console.ReadLine();
        if (charClass.Equals("warrior", StringComparison.InvariantCultureIgnoreCase))
        {
            MainGame.Combat(20, 10, 15);

            Console.ReadLine();
        }
        if (charClass.Equals("elf", StringComparison.InvariantCultureIgnoreCase))
        {
            MainGame.Combat(20, 10, 15);

            Console.ReadLine();
        }
        Console.WriteLine("Combat Begins!");
        Combat();
    }

    public static void Combat(int Strength, int Chance, int Armor)
    {

        int HP = 100;

        while (HP > 0)
        {
            Random Dodge = new Random();
            int HitPercent = Dodge.Next(1, 101);

            if (HitPercent > MainGame.Combat(1) && HitPercent < 90)
            {
                Console.WriteLine(HitPercent + "! Hit!");
                HP = (HP - (MainGame.Combat(0) - MainGame.Combat(2)));
                Console.WriteLine(HP + " HP remaining!");
                Console.ReadLine();
            }
            else if (HitPercent > 90)
            {
                Console.WriteLine(HitPercent + "! Crit!");
                HP = (HP - MainGame.Combat(0));
                Console.WriteLine(HP + " HP remaining!");
                Console.ReadLine();
            }

            else
                Console.WriteLine(HitPercent + "! Miss!");
                Console.WriteLine(HP + " HP remaining!");
                Console.ReadLine();

        }

        Console.WriteLine("You're dead!");
    }
}

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间控制台AP3
{
公共类主游戏
{
公共静态void Main()
{
字符();
}
公共静态无效字符()
{
控制台.WriteLine(“选择你的职业。战士还是精灵?”);
var charClass=Console.ReadLine();
if(charClass.Equals(“warrior”,StringComparison.InvariantCultureInogoreCase))
{
主要游戏。战斗(20,10,15);
Console.ReadLine();
}
if(charClass.Equals(“elf”,StringComparison.InvariantCultureInogoreCase))
{
主要游戏。战斗(20,10,15);
Console.ReadLine();
}
控制台。WriteLine(“战斗开始!”);
战斗();
}
公共静态空战(智力力量,智力机会,智力护甲)
{
int HP=100;
而(HP>0)
{
随机减淡=新随机();
int HIT PERCENT=道奇下一步(1011);
如果(命中率>主战格斗(1)&命中率<90)
{
控制台。写入线(命中率+“!命中!”);
HP=(HP-(MainGame.Combat(0)-MainGame.Combat(2));
Console.WriteLine(HP+“剩余HP!”);
Console.ReadLine();
}
否则,如果(命中率>90)
{
Console.WriteLine(命中率+“!暴击!”);
HP=(HP-MainGame.Combat(0));
Console.WriteLine(HP+“剩余HP!”);
Console.ReadLine();
}
其他的
Console.WriteLine(命中率+“!未命中!”);
Console.WriteLine(HP+“剩余HP!”);
Console.ReadLine();
}
控制台。WriteLine(“你死了!”);
}
}
}

您有一个名为Combat的方法。该方法需要三个参数。在一些地方,您调用MainGame.Combat(0)或MainGame.Combat(1),这意味着您只传递该方法所需的三个参数中的一个。

MainGame.Combat(1)
Combat()
?战斗需要3个参数,你分别提供了1和0。错误消息对我来说似乎非常清楚。你不明白什么?是什么让你认为你可以调用一个有3个参数的方法,但提供的参数比这少?(请注意,这不是“仅
机会”
“这是受影响的……这恰好是缺少的第一个参数……编译器不会浪费时间告诉您缺少的另一个参数。)我不明白的是我做错了什么。我想做主打游戏。战斗(x,x,x)会超过所有三个属性。怎么就只有这一个?哇。我想问如何只传递一个参数,然后意识到我可以只使用整数本身。我想下一步是弄清楚如何添加一个对手角色。是的,也要意识到你目前正在多次递归调用战斗方法。在这种情况下,这可能不是你想要做的。我不应该使用循环,直到战斗结束,生命值为零吗?有更好的方法吗?我不是说While循环,我是说递归,在该循环的每次迭代中,函数都会再次调用自身(MainGame.batch())。无论如何,在这种特殊情况下,这显然是一个错误,因为您将一个整数与一个void进行比较(函数返回void)。现在,MainGame.Combat的唯一实例是角色方法,我在其中设置统计数据。