我的作业的C RPG游戏

时间:2017-10-22 17:17:34

标签: 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\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;
}`

请在代码中使用我自己的语言,我必须这样发送。我对你的问题很少。

  • HEROJ - HERO
  • NEPRIJATELJ - ENEMY
  • ORUZIJE - WEAPON
  • UDARAC - HIT
  • MAC - SWORD
  • MUNJA - LIGHTING

所以,剑需要达到10-15 dmg并且有80%的命中率和20-30%的50%才能达到我需要改变的程度?

1 个答案:

答案 0 :(得分:0)

以下是您的代码中的问题。首先,正如评论中所建议的那样,您不必在每次迭代时调用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) 

int rand_int_mac(int n) 

同样的munja。

此外,如果您希望剑的伤害在10到15之间,则需要更改随机数生成器功能。目前它产生10到19之间的数字。为此,请使用

udarac=rand_int_mac(6);

而不是

udarac=rand_int(10);

这将在函数rand_int_mac中添加0到5到10之间的数字,并在目标间隔中产生损坏。对于雷声来说,这将是

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

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