#include <stdio.h>
#include <string.h>
typedef int bool; //вводим логический тип данных бул
struct Player {
int id;
char word[5 + 1];
bool is_lost;
};
//Инициализация игроков, создание загаданного слова для каждого из игроков
void init_player(struct Player *player, int id);
//Вывод разделителя на экран
void print_separator();
//Сравнения вводимого слова с загаданным
void try_guess(struct Player *player);
//Функция останавливающая игру, в случае если слово было угадано
bool check_lost(struct Player *player);
//Вывод Проигравшего игрока
void print_loser(struct Player players[2]);
//Подсчет кол-ва символов входящих в слово, и совпадающих в неверном слове
void number_occurrences(char temporary_word[5], char word[5]);
int main() {
bool end_game = 0;
struct Player players[2];
for(int i=0; i<2; i++) {
init_player(&players[i], i);
}
while (!end_game) {
for(int i=0; i<2; i++) {
try_guess(&players[i]);
if (check_lost(&players[i])) {
end_game = 1;
break;
}
}
}
print_loser(players);
return 0;
}
void init_player(struct Player *player, int id) {
char word[10000];
player -> id = id;
player -> is_lost = 0;
print_separator();
printf("Игрок номер %d, загадайте слово из 5 символов: ", id + 1);
while (1) {
scanf("%s", word);
if (strlen(word) == 5) {
printf("Слово ***** игрока номер %d успешно введено!", id + 1);
print_separator();
strncpy(player->word, word, 5 + 1);
break;
} else {
printf("Слово должно состоять из %d символов. Попробуйте еще раз: ", 5);
}
}
}
void try_guess(struct Player *player) {
print_separator();
char temporary_word[10000];
while (1) {
printf("Попытайтесь угадать слово игрока с номером %d: ", player->id + 1);
scanf("%s", temporary_word);
if (strlen(temporary_word) == 5) {
if (strcmp(temporary_word, player->word) == 0) {
player->is_lost = 1;
} else {
number_occurrences(temporary_word, player->word);
}
print_separator();
break;
} else {
printf("Слово должно состоять из %d символов. Попробуйте еще раз: ", 5);
}
}
}
bool check_lost(struct Player *player) {
if (player->is_lost) {
return 1;
}
return 0;
}
void print_separator() {
printf("\n===============\n");
}
void print_loser(struct Player players[2]) {
print_separator();
for(int i=0; i < 2; i++) {
if (players[i].is_lost) {
printf("Игрок #%d проиграл :(\n", players[i].id + 1);
break;
}
}
print_separator();
}
void number_occurrences(char temporary_word[5], char word[5]) {
for(int i=0; i<strlen(temporary_word); i++) {
int count = 0;
for(int j = 0; j<strlen(word); j++) {
if (temporary_word[i] == word[j]) {
count++;
}
}
printf("Символ %c входит %d раз в загаданное слово\n", temporary_word[i], count);
}
}