Class: Wordle::Model::FiveLetterWord
- Inherits:
-
Object
- Object
- Wordle::Model::FiveLetterWord
- Defined in:
- app/wordle/model/five_letter_word.rb
Constant Summary collapse
- WORLD_ANSWERS_ALPHABETICAL_FILE =
File.join(APP_ROOT, 'config', 'wordle-answers-alphabetical.txt')
- WORLD_ALLOWED_GUESSES_FILE =
File.join(APP_ROOT, 'config', 'wordle-allowed-guesses.txt')
- WORLD_ANSWERS_ALPHABETICAL =
File.read(WORLD_ANSWERS_ALPHABETICAL_FILE).lines(chomp: true).sort
- WORLD_ALLOWED_GUESSES =
(WORLD_ANSWERS_ALPHABETICAL + File.read(WORLD_ALLOWED_GUESSES_FILE).lines(chomp: true)).sort
- COLORS =
[:green, :yellow, :gray]
- STATUSES =
[:in_progress, :win, :loss]
Instance Attribute Summary collapse
-
#answer ⇒ Object
Returns the value of attribute answer.
-
#colored_alphabets ⇒ Object
Returns the value of attribute colored_alphabets.
-
#guess_results ⇒ Object
Returns the value of attribute guess_results.
-
#guesses ⇒ Object
Returns the value of attribute guesses.
-
#status ⇒ Object
Returns the value of attribute status.
Class Method Summary collapse
Instance Method Summary collapse
- #guess(word_guess) ⇒ Object
-
#initialize ⇒ FiveLetterWord
constructor
A new instance of FiveLetterWord.
- #refresh ⇒ Object
Constructor Details
#initialize ⇒ FiveLetterWord
Returns a new instance of FiveLetterWord.
19 20 21 |
# File 'app/wordle/model/five_letter_word.rb', line 19 def initialize refresh end |
Instance Attribute Details
#answer ⇒ Object
Returns the value of attribute answer.
17 18 19 |
# File 'app/wordle/model/five_letter_word.rb', line 17 def answer @answer end |
#colored_alphabets ⇒ Object
Returns the value of attribute colored_alphabets.
17 18 19 |
# File 'app/wordle/model/five_letter_word.rb', line 17 def colored_alphabets @colored_alphabets end |
#guess_results ⇒ Object
Returns the value of attribute guess_results.
17 18 19 |
# File 'app/wordle/model/five_letter_word.rb', line 17 def guess_results @guess_results end |
#guesses ⇒ Object
Returns the value of attribute guesses.
17 18 19 |
# File 'app/wordle/model/five_letter_word.rb', line 17 def guesses @guesses end |
#status ⇒ Object
Returns the value of attribute status.
17 18 19 |
# File 'app/wordle/model/five_letter_word.rb', line 17 def status @status end |
Class Method Details
.random_word ⇒ Object
5 6 7 |
# File 'app/wordle/model/five_letter_word.rb', line 5 def random_word WORLD_ANSWERS_ALPHABETICAL.sample end |
Instance Method Details
#guess(word_guess) ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'app/wordle/model/five_letter_word.rb', line 31 def guess(word_guess) word_guess = word_guess.downcase return [] if status == :win || status == :loss guesses << word_guess guess_results << guess_result_for(word_guess) update_colored_alphabets(word_guess, guess_results.last) self.status = :win if guesses.last == answer self.status = :loss if guesses.last != answer && guesses.count == 6 guess_results.last end |
#refresh ⇒ Object
23 24 25 26 27 28 29 |
# File 'app/wordle/model/five_letter_word.rb', line 23 def refresh self.guesses = [] self.guess_results = [] self.status = :in_progress self.answer = self.class.random_word self.colored_alphabets = (97..122).map {|n| n.chr}.reduce({}) {|hash, letter| hash.merge(letter => nil) } end |