class AddcreditController < ApplicationController def create_sum loop do @m=1+rand(9) @n=1+rand(9) break if (@m+@n) > get_nitems end answer=@m+@n choices=[answer] while choices.size < get_nitems choices << answer/2 + rand(answer) choices.uniq! end lognewproblem("#{@m}+#{@n}",answer.to_s) [@m,@n,choices.sort] end def get_n1 session[:n1] ||=0 end def get_n2 session[:n2] ||= 0 end def start_choices session[:n1], session[:n2], choices = create_sum choices.collect {|n| n.to_s} end def first_time session[:correct]=session[:wrong]=0 session[:displayed]=nil if params[:id] && (params[:id].to_i > 0) session[:nitems] = params[:id].to_i else session[:nitems] ||= 5 end session[:choices]=nil what_next end def filechoices? false end def extras n1=get_n1 n2=get_n2 @n1=n1.to_s @n2=n2.to_s @highlighted_sum=strip_href(get_highlighted_choice) if !session[:nopics] @pic1=get_pic_file(@n1) @pic2=get_pic_file(@n2) @pic3=get_pic_file(@highlighted_sum) end @problem = "#{@n1}+#{@n2}" @displayed=get_displayed # correct=translate('correct') # wrong=translate('wrong') # @title= "#{get_correct} #{correct}, #{get_wrong} #{wrong}" @title= "#{@displayed} #{translate('credit')}=#{get_credit}" end def selected(str) n=Time.now if str==(get_n1+get_n2).to_s session[:displayed]="#{get_n1}+#{get_n2}=#{str} - #{translate('correct')}! " logcorrect(str,"#{get_n1}+#{get_n2}") # logger.info "For teacher: #{session[:displayed]} from #{client_ip} at #{n}/#{n.to_i}" session[:correct]=get_correct+1 session[:credit]=get_credit+5 if session[:credit]>=15 session[:controller]='picsoncredit' return end else session[:displayed]=translate('wrong')+'. ' # logger.info "teacher: wrong answer #{str} to #{get_n1 # }+#{get_n2} from #{client_ip} at #{n}/#{n.to_i}" logwrong(str,"#{get_n1}+#{get_n2}") session[:wrong]=get_wrong+1 session[:credit]=get_credit-2 if session[:credit] < 0 session[:credit]=0 end return session[:choices] end end def updownevent session[:displayed]=nil end end