所以我试图弄清楚 while 循环和主要是 if 语句,所以我试图制作这个小游戏,你有一定数量的生命值,怪物也是如此,只要你们都有超过 0 的生命值,循环就会运行,所以每个循环怪物都会对你造成 50 点伤害, 但是使用 scanf 和 if 语句可以通过插入"2"来改变情况,您可以减少您受到的伤害,通过使用"3"您可以增加您的生命值,通过使用"1"您可以对怪物造成伤害,但由于某种原因,负责这些事件的 IF 语句似乎不起作用
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int monsterhealth =100;
int health =100;
int damage =50;
while(health>0&&monsterhealth>0){
int action [10];
printf("player has %d health n",health);
printf("monster has %d healthn",monsterhealth);
printf("act:attack[1]ndefend[2]npotion[3]n");
scanf ("%d",action);
if(action==1){(monsterhealth==monsterhealth-40);}
else if(action==2){(damage==damage-30);}
else (action==3);{(health==health+100);};
health=health-damage;
}
}
关于:
int action [10];
如果只需要一个操作,请声明一个简单的对象,而不是数组:
int action;
进行该更改时,您将需要更改:
scanf ("%d",action);
自:
scanf("%d", &action);
这会将action
的地址传递给scanf
。scanf
需要知道action
的地址,以便对其进行更改。如果您使用数组是因为scanf
似乎不适用于简单对象,请不要这样做。数组可以解决您在使用scanf
时可能遇到的问题,因为它们在 C 中具有某些行为,但这不是正确的解决方案。
关于:
while(health>0&&monsterhealth>0){
不要将代码挤在一起。写下它,以便于阅读,间距传达含义:
while (health > 0 && monsterhealth > 0) {
关于:
(monsterhealth==monsterhealth-40);
这种说法没有效果,因为==
只是比较了两件事。该语句不会更改任何对象(变量(的值,也不会产生任何其他可观察的影响。它说"将monsterhealth
与monsterhealth-40
进行比较,然后对比较结果不做任何事情。这里你想要的是赋值运算符,=
而不是==
,它说"在这个东西中放一个新值":
monsterhealth = monsterhealth-40;
以类似方式更改要在其中分配新值的其他语句。
关于:
else (action==3);{(health==health+100);};
多if
-else
语句的形式为:
if (condition)
statement;
else if (condition)
statement;
else
statement;
请注意,它应该以else statement
结尾,而不是else (condition) statement
结尾。使用上面的线条结构和缩进。(有时,一个带有单个if
的非常简短的陈述可以放在同一行上,但在您更有经验并且具有良好的风格感之前不要这样做。这需要大约三十年左右的时间才能发展起来。您想要的代码是:
if (action == 1)
monsterhealth = monsterhealth - 40;
else if (action == 2)
damage = damage - 30;
else
health = health + 100;
有些人可能会用有关其所涵盖案例的信息来装饰else
,例如:
if (action == 1)
monsterhealth = monsterhealth - 40;
else if (action == 2)
damage = damage - 30;
else /* action == 3 */
health = health + 100;
有些人主张将所有附加到if
语句和else
语句放在大括号中,以避免某些编辑错误。对于单个语句,C 语言不需要它。
C 有另一种形式的语句,用于处理您在这些if
语句中测试的特定条件,即switch
语句,但我认为您刚刚习惯这些语句,稍后会了解switch
。
我建议你不要使用局促的C样式。它导致您编写不正确的 C 并引入了错误。稍微打开它并使用传统的缩进样式。学习使用一些 C 习语,这样你就不会引入错误,比如在你应该使用 = 的时候使用 ==,引入;你不应该的地方,等等。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int monsterhealth = 100;
int health = 100;
int damage = 50;
while (health > 0 && monsterhealth > 0) {
int action;
printf("player has %d health n", health);
printf("monster has %d healthn", monsterhealth);
printf("act:attack[1]ndefend[2]npotion[3]n");
scanf("%d", &action);
if (action == 1) {
(monsterhealth -= 40);
}
else if (action == 2) {
(damage -= 30);
}
else if (action == 3)
{
(health += 100);
}
health = health - damage;
}
}