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的唯一实例是角色方法,我在其中设置统计数据。