首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用puts显示值

使用puts显示值
EN

Stack Overflow用户
提问于 2015-12-13 08:06:25
回答 2查看 69关注 0票数 0

我正在试着写一个Ruby程序来给一个玩家发两张牌。下面是我的代码:

代码语言:javascript
复制
def get_card (card)
  suit = (card - 1)/13
  if (card == 0)
    type = " of clubs"
  elsif (card == 1)
    type = " of diamonds"
  elsif (card == 2)
    type = " of hearts"
  elsif (card == 3)
    type = " of spades"
  end

  (card) % 13
  if (card == 1)
    return "ace" + type
  elsif (card == 11)
    return "jack" + type
  elsif (card == 0)
    return "king" + type
  elsif (card == 2)
    return "2" + type
  elsif (card == 3)
    return "3" + type
  elsif (card == 4)
    return "4" + type
  elsif (card == 5)
    return "5" + type
  elsif (card == 6)
    return "6" + type
  elsif (card == 7)
    return "7" + type
  elsif (card == 8)
    return "8" + type
  elsif (card == 9)
    return "9" + type
  elsif (card == 10)
    return "10" + type                      
  elsif (card == 12)
    return "queen" + type
  end
end

def deal_cards
  total_cards = (1..52).to_a.shuffle

  player_value = [total_cards.pop, total_cards.pop]

  puts "Your cards are " + get_card(player_value[0]).to_s + " and " + get_card(player_value[1]).to_s
end

deal_cards();

该部分:

代码语言:javascript
复制
puts "Your cards are " + get_card(player_value[0]).to_s + " and " + get_card(player_value[1]).to_s

不会显示

代码语言:javascript
复制
get_card(player_value[0]).to_s

代码语言:javascript
复制
get_card(player_value[1]).to_s

如果有任何帮助,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2015-12-13 08:09:54

问题是(card) % 13不会改变card。你可能想要的是:

代码语言:javascript
复制
card %= 13

但是,请注意,您的抽象有点令人困惑,并且有很多重复。为什么不试着这样做呢:

代码语言:javascript
复制
suits  = [:clubs, :diamonds, :hearts, :spades]
values = [*2..10, :jack, :queen, :king, :ace]

deck = suits.product(values).shuffle.map do |suite, value|
  {suite: suite, value: value}
end

player_cards = deck.pop(2)

puts "Your cards are #{player_cards.first[:value]} of #{player_cards.first[:suite]} and #{player_cards.last[:value]} of #{player_cards.last[:suite]}"
  # => Your cards are jack of spades and 7 of clubs
票数 6
EN

Stack Overflow用户

发布于 2015-12-13 09:34:55

尝试:

代码语言:javascript
复制
def get_card (card)
  type = case ((card-1)/13)
  when 0 then "of clubs"
  when 1 then "of diamonds"
  when 2 then "of hearts"
  when 3 then "of spades"
  end
  card = case (card%13)
  when 0 then "king #{type}"
  when 1 then "ace #{type}"                 
  when 11 then "jack #{type}"
  when 12 then "queen #{type}"
  else card%13
  end
  "#{card} #{type}"
end

def deal_cards
  total_cards = (1..52).to_a.shuffle
  player_value = [total_cards.pop, total_cards.pop]
  puts "Your cards are #{get_card(player_value[0]).to_s} and #{get_card(player_value[1]).to_s}"
end

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

https://stackoverflow.com/questions/34246475

复制
相关文章

相似问题

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