簡體   English   中英

使用看跌期權顯示價值

[英]Display values using puts

我正在嘗試編寫一個Ruby程序來向一個玩家分發兩張卡。 這是我的代碼:

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();

那個部分:

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

不顯示的值

get_card(player_value[0]).to_s

要么

get_card(player_value[1]).to_s

我將不勝感激。

問題是(card) % 13不會對card突變。 您可能想要的是:

card %= 13


但是,請注意,您的抽象有點令人困惑,並且重復很多。 為什么不嘗試這樣的事情:

 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 

嘗試:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM