Как пометить символ для выбора в C - PullRequest
0 голосов
/ 24 марта 2019

Пока это мой код игры палача.У меня есть пара проблем, некоторые из которых заключаются в том, как пометить выбранные буквы как «ВЫБРАННЫЕ», чтобы, когда пользователь выбирает другую букву, было невозможно использовать уже использованную букву.Кроме того, у меня есть условие проигрыша, которое, если оно выполнено, игра должна порваться с сообщением, но оно никогда не прервется.

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

Это мой основной метод:

int main() {
    srand(time(NULL));
    // the randomly selected word
    char *word = generateStrings();
    char sampleArray[strlen(word)];
    sampleArray[strlen(word)] = '\0';
    for (int i = 0; i < strlen(word); i++) {
        sampleArray[i] = '_';
    }
    printf("%s\n", word);
    char *printedWord = printWord(sampleArray, word);
    return 0;
}

Это метод, который в основном выполняет всю логику:

char *printWord(char sampleArray[], char *word) {
    char letter;
    int stopLoop=0;
    int x = 0;
    int winningSpree = 0;
    int lost = 0;

    while (1) {

        system("@cls||clear"); // clear cmd window every itereation of the loop
        printf("%s\n", word);

        if (winningSpree==strlen(word)) {
            printf("Congratulations! You've won!\n");
            printf("%s", sampleArray);
            break;
        }
        if (lost == 6) {
            printf("You lost!\n");
            printf("The word was: ", word, "\n");
            break;
        }
        if (x == 0) 
            for (int i = 0; i < strlen(word); i++) 
                printf("_");

        if (x > 0) 
            printf("Current stage of word: %s", sampleArray);

        printf("\n");
        printf("Give me a letter: ");
        letter = askforinput();
        printf("\n");

        for (int j = 0; j < strlen(word); j++) {
            if (word[j] == letter) {
                sampleArray[j] = letter;
                winningSpree++;
            } else {
                lost ++;
            }
        }
        x++;
    }
    printf("\n");
    return sampleArray;
}

И этот метод запрашивает ввод:

// ask user for character input
char askforinput() {
    char chosenLetter;
    scanf("%c", &chosenLetter);
    return chosenLetter;
}

1 Ответ

0 голосов
/ 24 марта 2019

Чтобы пометить выбранные буквы как «ВЫБРАННЫЕ», вы можете использовать следующий код: -

int count=0; //for keeping track of how many letters the user has selected.
int maxnumberofinputs=10;//for maximum number of times user can guess.
char selected[maxnumberofinputs]; //the selected letters will go here.

char letter=askforinput();

//when user selects a letter
if(count<maxnumberofinputs)
{
    selected[count]=letter;
   count++;
}
...