2014-11-06 2 views
-4

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

/*includes and defines*/ 
    #include <stdio.h> 
    #include <string.h> 
    #define SIZE 50 

    /*prototype definitions*/ 
    int compareString(char *, char *); 

    int main(void){ 

     char word[SIZE]; 
     char input[SIZE]; 
     char guess[SIZE]; 
     int count = 0; 
     int wrong = 0; 
     int incorrect = 0; 
     int right = 0; 
     int len = 0; 

     printf("Please enter the word you would like to have to guess.\nThen hand your computer over to the person you would like to have play:"); 
     fgets(word, SIZE, stdin); 

     len = strlen(word); 

     printf("Please guess one letter for the %d letter word!\n", len - 1); 

     do{ 

      fgets(input, SIZE, stdin); 

      for(count = 0; count < len - 1; count++){ 
       if(input[0] == word[count]){ 
        printf("that letter is in the %d spot\n", count + 1); 
        ++right; 
       } 
       /*I know the problem lies here but i'm not sure how to fix it I've tried not using len-1   and just using len, I've tried not resetting the amount wrong. Everything!*/ 
       else if (input[0] != word[count]) { 
        ++wrong; 
         if(wrong == len - 1){ 
          ++incorrect; 
         } 
        wrong = 0; 
       } 
      } 

     }while(incorrect < 6 && right < len - 1); 


     return 0; 
    } 

Я знаю, что проблема здесь, код, устанавливающий ошибки игрока. Однако я не знаю, как это исправить. Я пробовал не использовать len-1 и просто использовать len, я попытался не сбрасывать сумму неправильно.

else if (input[0] != word[count]) { 
         ++wrong; 
          if(wrong == len - 1){ 
           ++incorrect; 
          } 
         wrong = 0; 
        } 
+4

http://meta.programmers.stackexchange.com/questions/6166/open-letter-to-students-with-homework-problems –

+0

Я не прошу написать код для меня. Только то, что код отсутствует. Если бы я не сказал, что это был проект класса, тогда все было бы хорошо? Не имеет смысла для меня – TheMadHouse

+1

Я читаю код, поэтому я вижу комментарий там, говоря, что у вас есть идея, где проблема. Может быть, вы должны также немного подробнее рассказать о самом вопросе. Честно говоря, я не думаю, что это проблема школьного проекта. Я считаю, что есть проблема, когда человек не проявляет достаточных усилий для решения проблемы, прежде чем обратиться к SO. Еще одна вещь, которую нужно учитывать, - не принести здесь всю проблему, а только концептуальную часть. даже при поиске. не ищите палача, смотрите из проблем с совпадением строк – DallaRosa

ответ

0

Проблема заключалась в том, как вы пытались увеличить incorrect. Просто используйте wrong как логическое значение, которое будет использоваться, чтобы решить, если вам нужно увеличить или не incorrect

Вот решение:

#include <stdio.h> 
#include <string.h> 
#define SIZE 50 

/*prototype definitions*/ 
int compareString(char *, char *); 

int main(void){ 

    char word[SIZE]; 
    char input[SIZE]; 
    char guess[SIZE]; 
    int count = 0; 
    int wrong = 1; 
    int incorrect = 0; 
    int right = 0; 
    int len = 0; 

    printf("Please enter the word you would like to have to guess.\nThen hand your computer over to the person you would like to have play:"); 
    fgets(word, SIZE, stdin); 

    len = strlen(word); 

    printf("Please guess one letter for the %d letter word!\n", len - 1); 

    do{ 

    fgets(input, SIZE, stdin); 
    wrong = 1; 
    for(count = 0; count < len - 1; count++){ 

     if(input[0] == word[count]){ 
     printf("that letter is in the %d spot\n", count + 1); 
     wrong = 0; 
     ++right; 
     } 
     /*I know the problem lies here but i'm not sure how to fix it I've tried not using len-1   and just using len, I've tried not resetting the amount wrong. Everything!*/ 
    } 
    if(wrong) { 
     incorrect++; 
    } 

    }while(incorrect < 6 && right < len - 1); 


    return 0; 
} 
+0

Большое вам спасибо! Я уже часами пытаюсь это исправить. Спасибо за ношение с моей noobness haha ​​ – TheMadHouse

+0

Опять я новичок в этом, сделал ли это трюк? – TheMadHouse

+0

Да, это было :) Вопросы, которые вам нравятся (используя стрелку рядом с вопросом) Upvote отвечает вам, как (снова используя стрелки) , и принимайте ответы, которые отвечают на ваши вопросы. Это доставит вас далеко. И как уже было сказано, попробуйте подумать, как поставить свои вопросы таким образом, чтобы вы, похоже, просто не искали простой ответ, попытайтесь показать, сколько усилий вы сделали – DallaRosa

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