C用户选择while循环

时间:2015-02-06 14:41:06

标签: c if-statement user-input do-while

我是编程新手,所以我使用的代码仅限于我所学到的。无论如何我正在开发一种场景,在这种场景中,用户输入两个选项中的一个,这两个选择将触发不同的代码集来执行,或者至少是我试图做的事情。然而,当我浏览我的代码时,它正在执行它,好像没有if语句所有内容都作为一个块运行。我很确定我的逻辑是正确的,如果有什么我的语法是不确定的。如果有什么可以做的话,你们可以做些什么来帮助解决我的问题,如果可能的话,我想学习而不仅仅是解决问题。感谢您的时间。

    int main()
{
    int move = 0, pstrength = 10, pdefense = 20, pintelligence = 40, php = 10, estrength = 30,
        edefense = 40, eintelligence = 25, ehp = 10; 

    printf("Battle Start!\n\nYour HP: %d Enemy HP: %d\n\n1 - Attack\n2 - Magic\n\n", php, ehp);

    float pap = (float)pstrength / (float)edefense * 5;
    float pmp = (float)pintelligence / (float)eintelligence * 5, eap = (float)estrength /
        (float)pdefense * 5;

    do {
        printf("Select your move: "); 
如果选择了动作1,

/ 玩家将选择执行什么动作然后玩家攻击如果敌人没有下降到0马力,则敌人攻击然后循环重置并提示第二轮输入 /

    scanf("%d", &move);
    if (move = 1); {
    printf("\nYou attacked the enemy!\n");
    ehp = ehp - (float)pap;
    if (ehp > 0){
        printf("The enemy attacked you!\n\n");
        php = php - (float)eap;
        printf("Your HP: %dEnemy HP: %d\n\n", php, ehp);
    }
    }
    if (move = 2); {
        printf("\nYou shocked the enemy!\n");
        ehp = ehp - pmp;
        if (ehp > 0){
            printf("The enemy attacked you!\n");
            php = php - (float)eap;
            printf("Your HP: %dEnemy HP: %d\n\n", php, ehp);
        }}

} while (php >= 0 && ehp >= 0);
if (php <= 0)
    printf("You Died!");
else
    printf("You Won!");
return 0;

}

我运行调试并且发生了什么,无论我的选择是否(move = 1)或if(move = 2)它是否系统运行,如果我在开始时输入2,就像我输入1一样,依此类推。

2 个答案:

答案 0 :(得分:5)

  1. 每个;语句后都有一个if。删除它们。
  2. 通过== 而不是 =进行平等检查。
  3. 看起来像这样:

    if (move == 1) { ... }
    

答案 1 :(得分:0)

if语句阻塞后你有分号! if语句的正确语法是if(condition){code}