首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一个经验丰富的Ruby程序员将如何重写我的迷你游戏?

一个经验丰富的Ruby程序员将如何重写我的迷你游戏?
EN

Stack Overflow用户
提问于 2014-01-30 00:54:59
回答 1查看 112关注 0票数 0

我在写一个小猜谜游戏。我在写一个点计算算法。

我写了下面的文章,而且效果很好。但我觉得我把过程背景带到了Ruby中,或者没有适当地利用Ruby。

一个经验丰富的Ruby程序员将如何处理这个问题?您可以在TryRuby.com上测试代码(在浏览器解释器中复制和粘贴代码)。

代码语言:javascript
运行
复制
# g = guesses
g = [{ id: 1, elmer­: 5, roger: 7, outcome: "Roger Win" },{ id: 2, elmer: 5, roger: 1, outcome: "Elmer Win" },{ id: 3, elmer: 4, roger: 8, outcome: "Roger Win" }]
# r = actual results
r = [{ id: 1, elmer: 3, roger: 9, outcome: "Roger Win" },{ id: 2, elmer: 7, roger: 9, outcome: "Roger Win" },{ id: 3, elmer: 4, roger: 8, outcome: "Roger Win" }]
# points table
p = []    
# rules: correct outcome = 1 point, perfect match = 5 points.

# Loop over results.
r.each do |result|

  # Loop over guesses.
  g.each do |guess|

    # Make sure we compare corresponding ids.
    # So, compare result 1 to guess 1, r2 to g2, etc....
    if result[:id] == guess[:id]

      # Init a hash to store score
      score = {}

      # Did they guess the correct outcome?
      if result[:outcome] == guess[:outcome]

        # Correct outcome guessed! Make a score hash, give'em a point.
        score[:id]     = result[:id]  # game id
        score[:points] = 1            # point

        # Was it a perfect match?
        if result[:elmer] == guess[:elmer] && result[:roger] == guess[:roger]

          # Perfect match! Give them 4 points.
          # They already got 1 point for guessing the correct outcome.
          score[:points] += 4
        end
      end

      # Add the score to the points table
      p.push(score) unless score.empty?
    end
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-30 01:17:28

你觉得这个怎么样?

代码语言:javascript
运行
复制
g.zip(r).collect do |guess, result|
  points = (guess == result) ? 5 : guess[:outcome] == result[:outcome] ? 1 : 0   
  {:id => guess[:id], :points => points} 
end

注意:这假设g和r是按:id排序的;如果没有,可以在执行此=之前进行排序),另外,我将定义:FULL_SCORE = 5CORRECT_OUTCOME_SCORE = 1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21445888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档