C 我的家庭作业用的RPG游戏

C 我的家庭作业用的RPG游戏,c,C,我在申报dmg和命中率%方面有问题 int oruzije,udarac,neprijatelj,heroj; while(1) { neprijatelj=100; heroj=100; int rand_int(int n); int rand_int_mac(int n); int rand_int_munja(int n); srand(time(NULL)); do{ printf("\nHeroj ima 100 HP\

我在申报dmg和命中率%方面有问题

int oruzije,udarac,neprijatelj,heroj;
while(1) {
    neprijatelj=100;
    heroj=100;
    int rand_int(int n);
    int rand_int_mac(int n);
    int rand_int_munja(int n);
    srand(time(NULL));
do{
        printf("\nHeroj ima 100 HP\nNeprijatelj ima 100 HP\n1-napad    macem(80% pogodak, 10-15 dmg\n2-napad munjom(50% pogodak, 20-30 mg))");
        scanf("%i", &oruzije);

if(oruzije==1) {

    udarac=rand_int_mac(10);
    neprijatelj=neprijatelj-udarac;
    printf("\nPogodak macem!! Neprijatelju nanosimo %i\n\n",udarac);
    if(neprijatelj < 0)
    {
        printf("Neprijatelj je porazen! Ziveo heroj!\n\n");
        break;
    }
    printf("Neprijatelju je ostalo %i\n\n",neprijatelj);
    udarac=rand_int(10);
    heroj=heroj-udarac;
    printf("Neprijatelj nanosi 10 poena stete");
    if(heroj < 0){
        printf("Neprijatelj vas je porazio!\n\n");
        break;
    }
}
else if(oruzije==2) {

    udarac=rand_int_munja(10);
    neprijatelj=neprijatelj-udarac;
    printf("\nPogodak munjom!! Nepijatelju nanosimo %i\n\n",udarac);
    if(neprijatelj < 0)
    {
        printf("Neprijatelj je porazen! Ziveo heroj!\n\n");
        break;
    }
    printf("Neprijatelju je ostalo %i\n\n",neprijatelj);
    udarac=rand_int(10);
    heroj=heroj-udarac;
    printf("Neprijatelj nanosi 10 poena stete");
    if(heroj < 0){
        printf("Neprijatelj vas je porazio!\n\n");
        break;
    }
}
}
while(1);

}}
 int rand_int_mac() (int n)  //  ERROR:NUMBER OF ARGUMENTS DOESN'T MATCH PROTOTYPE
{
return rand()%n + 10;
}
int rand_int_munja() (int n) // SAME ERROR !
{
return rand()%n + 10;
}`
int oruzije、udarac、neprijatelj、heroj;
而(1){
neprijatelj=100;
heroj=100;
int rand_int(int n);
int rand_int_mac(int n);
内兰德努穆尼亚(内特n);
srand(时间(空));
做{
printf(“\nHeroj ima 100 HP\nNeprijatelj ima 100 HP\n1纳帕德梅塞姆(80%波哥达克,10-15 dmg\n2纳帕德芒乔姆(50%波哥达克,20-30 mg))”;
scanf(“%i”和“oruzije”);
如果(oruzije==1){
udarac=rand_int_mac(10);
neprijatelj=neprijatelj udarac;
printf(“\nPogodak macem!!Neprijatelju nanosimo%i\n\n”,udarac);
如果(尼泊尔语<0)
{
printf(“Neprijatelj je porazen!Ziveo heroj!\n\n”);
打破
}
printf(“Neprijatelju je ostalo%i\n\n”,neprijatelj);
udarac=rand_int(10);
heroj=heroj udarac;
printf(“Neprijatelj nanosi 10 poena stete”);
if(heroj<0){
printf(“Neprijatelj vas je porazio!\n\n”);
打破
}
}
else if(oruzije==2){
udarac=rand_int_munja(10);
neprijatelj=neprijatelj udarac;
printf(“\nPogodak munjom!!Nepijatelju nanosimo%i\n\n”,udarac);
如果(尼泊尔语<0)
{
printf(“Neprijatelj je porazen!Ziveo heroj!\n\n”);
打破
}
printf(“Neprijatelju je ostalo%i\n\n”,neprijatelj);
udarac=rand_int(10);
heroj=heroj udarac;
printf(“Neprijatelj nanosi 10 poena stete”);
if(heroj<0){
printf(“Neprijatelj vas je porazio!\n\n”);
打破
}
}
}
而(1),;
}}
int rand\u int\u mac()(int n)//错误:参数数量与原型不匹配
{
返回rand()%n+10;
}
int rand_int_munja()(int n)//同样的错误!
{
返回rand()%n+10;
}`
顺便说一句,我自己的语言在代码sry,我必须发送这样的。我有几个问题要问你

  • 英雄
  • 尼泊尔-敌人
  • 奥鲁齐耶-武器
  • 乌达拉克-命中
  • 麦克剑
  • MUNJA-照明

所以,剑需要处理10-15个dmg,有80%的命中率和20-30%的命中率,还有50%的命中率,我需要改变什么

以下是代码中的问题。首先,正如评论中所建议的,您不必在每次迭代中调用
srand
,只需预先调用一次即可-这为您当前的程序执行设置了随机种子,在这里只需调用一次即可

int main()
{

srand(time(NULL));
其次,您对百分比字符使用了错误的符号-您使用的是单个
%
表示要输出的类型。您需要改用
%%

printf("\nHeroj ima 100 HP\nNeprijatelj ima 100 HP\n1-napad    macem(80%% pogodak, 10-15 dmg\n2-napad munjom(50%% pogodak, 20-30 mg))");
最后,您定义(并声明)没有附加括号的函数(也如注释中所述),即它不是

int rand_int_mac() (int n) 
但是

munja也一样

另外,如果你想让你的剑伤害在10到15之间,你需要改变你的随机数发生器功能。目前,它生成的数字介于10到19之间。为此,请使用

udarac=rand\u int\u mac(6)

而不是

udarac=rand_int(10)

这将在你的函数
rand\u int\u mac
中添加一个介于0到5到10之间的数字,并在目标间隔内产生伤害。如果是雷声的话

int rand_int_munja(int n)
{
    return rand()%n + 20;
}

…而不是
+10
,应该被称为
rand_int_munja(11)

首先,我会移动
srand(time(NULL))退出
循环。在程序开始时调用它一次。我想
int rand\u int\u mac()(int n)
应该是
int rand\u int\u mac(int n)
而不是在否决票后面,但触发可能是外语。要么翻译,要么像我刚才那样使用。顺便说一句,我们说的是同一种语言:)在旁注上,再次通读基础知识,这样你就不会犯类似函数定义的错误。并启用全面的编译器警告(不要忽略它们)。
int rand_int_munja(int n)
{
    return rand()%n + 20;
}