From f79a40ca6542ecc0a8a3c6111cebc9bd22f61932 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Wed, 13 Sep 2017 16:01:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E9=80=89=E5=A4=9A=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/games_controller.rb | 81 +++++++------ app/models/challenge_choose.rb | 2 +- app/views/games/_choice_question.html.erb | 112 ++++++++++++++---- app/views/games/_game_choose_results.html.erb | 44 +++++++ app/views/games/_game_show.html.erb | 2 +- app/views/layouts/base_myshixun.html.erb | 2 +- public/javascripts/edu/edu_tpi.js | 4 +- 7 files changed, 182 insertions(+), 65 deletions(-) create mode 100644 app/views/games/_game_choose_results.html.erb diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index ec38ea63e..00e9e52d9 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -49,7 +49,7 @@ class GamesController < ApplicationController @type = params[:type] challenge_path = @game_challenge.path # 用户选项 - @user_answer = @game.outputs.first.actual_output.split("") unless @st == 0 || @game.outputs.blank? + #@user_answer = @game.outputs.first.actual_output.split("") unless @st == 0 || @game.outputs.blank? # 默认打开文件 logger.info("repository id is #{@repository.try(:id)}, repository's shixun_id =#{@repository.try(:myshixun_id)} shixun_id =#{@repository.try(:shixun_id)}, project_id => #{@repository.try(:project_id)}") # 验证challenge文件名的合法性 @@ -297,52 +297,55 @@ class GamesController < ApplicationController # 选择题评测(选择题不需要重新评测) def evaluating_choice - @game_challenge = @game.challenge - user_answer = params[:answer] - correct = true - score = 0 - tag_count = 0 - if !user_answer.blank? - if user_answer.split("").count != @game_challenge.challenge_questions.where(:right_key => true).count - correct = false - else - user_answer.split("").each do |answer| - question = @game_challenge.challenge_questions.where(:position => answer.to_i).first - unless question.right_key - correct = false - break + + if false + @game_challenge = @game.challenge + user_answer = params[:answer] + correct = true + score = 0 + tag_count = 0 + if !user_answer.blank? + if user_answer.split("").count != @game_challenge.challenge_questions.where(:right_key => true).count + correct = false + else + user_answer.split("").each do |answer| + question = @game_challenge.challenge_questions.where(:position => answer.to_i).first + unless question.right_key + correct = false + break + end end end + else + correct = false end - else - correct = false - end - @game.update_attributes(:status => 2, :end_time => Time.now) - had_done = @game.had_done - shixun = @myshixun.shixun - if shixun.status > 1 && !@game.answer_open - if correct - #User.current.update_attributes(:grade => (User.current.grade + @game.challenge.score), :experience => (User.current.experience + @game.challenge.score)) - reward_grade(@game.user, @game.id, 'Game', @game_challenge.score) - reward_experience(@game.user, @game.id, 'Game', @game_challenge.score) - @game.update_attribute(:final_score, @game_challenge.score) - score = @game_challenge.score - tag_count = @game_challenge.challenge_tags.count + @game.update_attributes(:status => 2, :end_time => Time.now) + had_done = @game.had_done + shixun = @myshixun.shixun + if shixun.status > 1 && !@game.answer_open + if correct + #User.current.update_attributes(:grade => (User.current.grade + @game.challenge.score), :experience => (User.current.experience + @game.challenge.score)) + reward_grade(@game.user, @game.id, 'Game', @game_challenge.score) + reward_experience(@game.user, @game.id, 'Game', @game_challenge.score) + @game.update_attribute(:final_score, @game_challenge.score) + score = @game_challenge.score + tag_count = @game_challenge.challenge_tags.count + else + score = "+0" + tag_count = 0 + end + elsif shixun.status > 1 && @game.answer_open + score = -@game_challenge.score.to_i + tag_count = 0 else score = "+0" tag_count = 0 end - elsif shixun.status > 1 && @game.answer_open - score = -@game_challenge.score.to_i - tag_count = 0 - else - score = "+0" - tag_count = 0 + if @game.outputs.blank? + Output.create(:game_id => @game.id, :actual_output => user_answer, :result => correct) + end + render :json => {correct: correct, had_done: had_done, :grade => User.where(:id => User.current.id).first.grade, score: score, tag_count: tag_count} end - if @game.outputs.blank? - Output.create(:game_id => @game.id, :actual_output => user_answer, :result => correct) - end - render :json => {correct: correct, had_done: had_done, :grade => User.where(:id => User.current.id).first.grade, score: score, tag_count: tag_count} end diff --git a/app/models/challenge_choose.rb b/app/models/challenge_choose.rb index 5089108df..18d76790f 100644 --- a/app/models/challenge_choose.rb +++ b/app/models/challenge_choose.rb @@ -1,6 +1,6 @@ class ChallengeChoose < ActiveRecord::Base # attr_accessible :title, :body - # type 1 单选, 2,多选 + # category 1 单选, 2,多选 # standard_answer 正确答案 answer: 答题的思路 default_scope :order => 'position' belongs_to :challenge diff --git a/app/views/games/_choice_question.html.erb b/app/views/games/_choice_question.html.erb index db509be63..41aa897ae 100644 --- a/app/views/games/_choice_question.html.erb +++ b/app/views/games/_choice_question.html.erb @@ -1,37 +1,106 @@ + +
<%= (index + 1).to_s + "." + (choose.category == 1 ? "单选题" : "多选题") %>
+<%= question.option_name %>
" id="correct_tip"> - 正确 -
-" id="error_tip"> - 错误 -
1.单选题
应在下列程序划线处填入的语句是()
<%= question.option_name %>
<%= question.option_name %>
+ 3/5 +
++ 5/5 全部通过 +
+ <% @game_challenge.challenge_chooses.each_with_index do |choose, index| %> +