#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include «hangman.h»
/* определяет угадано ли слово */
int is_word_guessed(const char secret[], const char letters_guessed[])
{
int i, result = 1;
for (i=0; secret[i] && result; i++)
{
result = ( strchr(letters_guessed, secret[i]) == NULL )? 0 : 1;
// result = 0;
// for (int k=0; letters_guessed[k] && !result; k++)
// if (secret[i] == letters_guessed[k]) result = 1;
}
return result;
}
/* обновляет слово на экране */
void get_guessed_word(const char secret[], const char letters_guessed[], char guessed_word[])
{
int i;
for (i=0; secret[i]; i++)
{
if ( strchr(letters_guessed, secret[i]) == NULL )
{
guessed_word[i] = '_';
}
else
{
guessed_word[i] = secret[i];
}
}
guessed_word[i] = '\0';
}
/* список букв, которые ещё не были использованы для отгадавания */
void get_available_letters(const char letters_guessed[], char available_letters[])
{
int i, k, end = 'z'-'a'+2;
for (i=0; i
{
if ( strchr(letters_guessed, available_letters[i]) != NULL )
{
for (k=i+1; k
available_letters[k-1] = available_letters[k];
}
}
}
/* содержит в себе функционал самой игры */
void hangman(const char secret[])
{
// эту функцию необходимо написать
printf(«Wellcome to hangman\n»);
printf(«secret: %s\n», secret);
}
/* случайное слово из словаря */
int get_word(char secret[]){
// check if file exists first and is readable
FILE *fp = fopen(WORDLIST_FILENAME, «rb»);
if( fp == NULL ){
fprintf(stderr, «No such file or directory: %s\n», WORDLIST_FILENAME);
return 1;
}
// get the filesize first
struct stat st;
stat(wordlist_filename, &st);
long int size = st.st_size;
do{
// generate random number between 0 and filesize
long int random = (rand() % size) + 1;
// seek to the random position of file
fseek(fp, random, SEEK_SET);
// get next word in row ;)
int result = fscanf(fp, «%*s %20s», secret);
if( result != EOF )
break;
}while(1);
fclose(fp);
return 0;
}
Комментарий недоступен