Пока это мой код игры палача.У меня есть пара проблем, некоторые из которых заключаются в том, как пометить выбранные буквы как «ВЫБРАННЫЕ», чтобы, когда пользователь выбирает другую букву, было невозможно использовать уже использованную букву.Кроме того, у меня есть условие проигрыша, которое, если оно выполнено, игра должна порваться с сообщением, но оно никогда не прервется.
Я уже пытался создать другой массив, в который я собирался вытолкнуть всех персонажей, которые имеютбыл выбран.Однако, это не сработало, так как я получал ошибки, так как я не могу поместить символы в случайные позиции, так как предыдущие слоты не были бы заполнены.
Это мой основной метод:
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;
}