2013-11-09 3 views
0

Это называется функция:C, показывая два раза, прежде чем остановить

int onBattle(int level,char nomeheroi[20]) 
{ 
     const char *monsternames[4][3] = { 
     {"Rat","Bat","Spider"}, 
     {"Goblin","Orc","Dwarf"}, 
     {"Dragon","Lich","Banshee"}, 
     {"Demon","Hydra","Giant Spider"} 
     }; 
     //printf("monster hp:%f , player hp:%f, player name:%s ",globalvar.monterhp, globalvar.playerhp,nomeheroi); 
    char opcaobattle; 
    rndMonster(level); 

    while((globalvar.monterhp > 0) || (globalvar.playerhp > 0)){ 
    printf("Monster name:%s\n",monsternames[globalvar.monstercatego][globalvar.monsternivel]); 
    printf("Monster Life:%f\n",globalvar.monterhp); 
    printf("------------------------------------------\n"); 
    printf("----------------BattleGround--------------\n"); 
    printf("------------------------------------------\n"); 
    printf("Player name:%s\n", nomeheroi); 
    printf("Player life:%f\n", globalvar.playerhp); 
    printf("----------------------------------------\n"); 
    printf("------------------Menu------------------\n"); 
    printf("----------------------------------------\n"); 
    printf("A - Attack\n"); 
    printf("D - Defend\n"); 
    scanf("%c",&opcaobattle); 
    switch(opcaobattle) 
    { 
     case 'a': 
     danoPMonster(); 
     break; 

     case 'd': 

     break; 
    } 
    } 

    if(globalvar.monterhp <= 0) 
    { 
     return 0; 
    } 
    else if(globalvar.playerhp <= 0) 
    { 
     return 1; 
    } 
} 

Это то, что происходит: Show two times

Я не любую проблему с этим кодом, чтобы показать два раза перед остановкой на Scanf, Я попытался сделать В то время как тоже то же самое происходит с какой-либо помощью? пс: что globalvar глобальная структура да и есть значение

+0

Вы можете скопировать текст из окна консоли с помощью мыши (возможно, с помощью Alt-Space -> Edit - > Марк, сначала). –

ответ

1
scanf("%c",&opcaobattle); 

Я предлагаю добавить пробел в спецификатором преобразования, чтобы убедиться, что он не использует левый-над символом новой строки в потоке.

scanf(" %c",&opcaobattle); 

Это может быть хорошо иметь дело по умолчанию для коммутатора также:

default: 
    printf("Please enter one of the available commands.\n"); 
+0

ах wow большое вам спасибо, но мне всегда нужно пробежать до%? –

+0

Не всегда, но когда вы используете '% c', вы всегда должны думать о том, нужно ли вам, поскольку он просто читает необработанный байт из файла. –

Смежные вопросы