Sha256: 4a9e2b54de052e863ccb479f53d4ee1f96bdadfdb9bacc29b078461936898527
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
require 'language_cards/controllers/application_controller' module LanguageCards module Controllers class Game < ApplicationController include Helpers::GameHelper def render(correct:, incorrect:, title:, timer:, last:) _score = t('Game.ScoreMenu.Score') + ": %0.2d%%" % calc_score(correct, incorrect) _timer = [((t('Timer.Timer') + ": " + timer.ha) if timer.time?), nil, timer.h] _mexit = t 'Menu.Exit' super(binding) end def process(cards, mode) ic = struct_data.new(cards, mode) ic.get_input { correct: ic.valid?, last: ic.valid? ? ic.correct_msg : ic.incorrect_msg } end def struct_data Struct.new(:card_set, :mode) do def input @input end def get_input @input ||= CLI.ask("#{I18n.t('Game.TypeThis')}: #{display}") end def card @card ||= card_set.sample.current end def display "#{card}" end def expected case mode when :translate card.translation when :typing_practice "#{card}" else raise "Invalid mode in Game Controller!" end end def correct_msg "#{I18n.t('Game.Correct')} #{input} = #{display}" end def incorrect_msg output = "#{I18n.t('Game.Incorrect')} #{input} != #{display}" output << " #{I18n.t('Game.Its')} #{expected.join(', ')}" if mode == :translate output end def valid? card_set.match? input end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
language_cards-0.3.2 | lib/language_cards/controllers/game.rb |
language_cards-0.3.1 | lib/language_cards/controllers/game.rb |