Sha256: 82eb2f7fc948bb48afc9045f57a75aedeec472bcb35f78678eb5c9cc89adb027
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
# frozen_string_literal: true module Wordle class Game def self.play new.play end def initialize @list = List.new @options = read_options @target_word = generate_word end def play winner = false Legend.print puts "Guess a 5 letter word: " guesses = [] while guesses.length < 6 && !winner guess = gets.chomp validator = GuessValidator.new(guess, @list) if validator.invalid? puts validator.error next end analyzer = GuessAnalyzer.new(@target_word, guess) puts analyzer.colors guesses << analyzer.squares if analyzer.match? winner = true break end end hash = Digest::SHA2.hexdigest(@target_word)[..5] if winner puts "\nWordle Gem #{hash} #{guesses.length}/6\n\n" else puts "\nWord was: #{@target_word}\n" puts "\nWordle Gem #{hash} X/6*\n\n" end puts guesses end private def generate_word if @options[:identifier] @list.by_hash(@options[:identifier]) else @list.random end end def read_options options = {} parser = OptionParser.new do |opts| opts.banner = "Usage: wordle [options]" opts.on("-iIDENTIFIER", "--identifier=IDENTIFIER", "Pass word identifer to target a specific word that someone else has played. Identifier gets printed at the end of the game to share.") do |i| options[:identifier] = i end end begin parser.parse! rescue OptionParser::InvalidOption puts "Option not recognized" end options end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
wordle-0.5.0 | lib/wordle/game.rb |