C 我的家庭作业用的RPG游戏
我在申报dmg和命中率%方面有问题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\
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;
}