我在声明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;
}`
请在代码中使用我自己的语言,我必须这样发送。我对你的问题很少。
所以,剑需要达到10-15 dmg并且有80%的命中率和20-30%的50%才能达到我需要改变的程度?
答案 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)
。