Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % temporary knowledge base
- w('cat').
- w('dog').
- w('monkey').
- w('frog').
- w('reindeer').
- replace(Word, Asterisks, Char, OutputAsteriks) :-
- replace(Word, Asterisks, Char, OutputAsteriks, []).
- replace([], [], _, TempOutputAsterisks, TempOutputAsterisks).
- replace([WordHead | WordTail], [_ | AsterisksTail], Char, OutputAsteriks, TempOutputAsterisks) :-
- WordHead = Char,
- append(TempOutputAsterisks, [Char], TempOutputAsterisks1),
- replace(WordTail, AsterisksTail, Char, OutputAsteriks, TempOutputAsterisks1), !.
- replace([_ | WordTail], [AsterisksHead | AsterisksTail], Char, OutputAsteriks, TempOutputAsterisks) :-
- append(TempOutputAsterisks, [AsterisksHead], TempOutputAsterisks1),
- replace(WordTail, AsterisksTail, Char, OutputAsteriks, TempOutputAsterisks1).
- create_asterisks(0, []).
- create_asterisks(Length, List) :-
- Length1 is Length - 1,
- create_asterisks(Length1, List1),
- append(['*'], List1, List).
- compare_words(Chars, Asterisks) :-
- atomics_to_string(Chars, WordString),
- atomics_to_string(Asterisks, AsterisksString),
- WordString = AsterisksString.
- get_word(Chars, Asterisks) :-
- bagof(X, w(X), Words),
- length(Words, Length),
- random(0, Length, RandVal),
- nth0(RandVal, Words, Word),
- atom_chars(Word, Chars),
- length(Chars, WordLength),
- create_asterisks(WordLength, Asterisks).
- play :-
- get_word(WordChars, AsterisksChars),
- atomics_to_string(AsterisksChars, AsterisksString), write('\nPlease guess the word: \t'), write(AsterisksString),
- main_loop(WordChars, AsterisksChars, 0).
- % base case (words match)
- main_loop(WordChars, AsterisksChars, GuessesCount) :-
- % if it is the same
- compare_words(WordChars, AsterisksChars),
- write('\nCongratulations! It only took you '), write(GuessesCount), write(' guesses.'), !.
- main_loop(WordChars, AsterisksChars, GuessesCount) :-
- write('\nPlease guess a letter:\t'), get_single_char(AsciiCode), atom_char(Char, AsciiCode), write(Char),
- GuessesCount1 is GuessesCount + 1,
- replace(WordChars, AsterisksChars, Char, OutputAsteriksChars),
- atomics_to_string(OutputAsteriksChars, OutputAsterisksString), write('\nYour soultion: \t\t'), write(OutputAsterisksString),
- main_loop(WordChars, OutputAsteriksChars, GuessesCount1).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement