2014-10-06 65 views
-1

我正在尝试使用Ruby创建蜘蛛纸牌。我只想在屏幕上显示数组中的第一个元素。例如...Ruby:更改外观字符串而不更改其原始值

a = ["AH", "1H", "2H", "3H", "4H", "5H"] 

这个数组代表一堆从心脏到西装的卡牌。 我想程序在屏幕上打印...

a = ["AH", "CARD", "CARD", "CARD", "CARD", "CARD"] 

但我仍然希望有一个[1]返回“1H”,而不是“卡”。有没有办法改变字符串的外观而不改变它们的原始值?

+0

你可以写你自己的事情显示方法,你不会被迫'提出了'。 – 2014-10-07 00:56:46

回答

3
puts a.map.with_index{|e, i| i.zero? ? e : "CARD"} 
0

为什么不制作两个数组:一个真实且不变的表示法,仅对游戏可见,另一个表示法显示允许玩家看到的牌。

game_deck = ["AH", "1H", "2H", "3H", "4H", "5H"] 
display_deck = ["AH", "CARD", "CARD", "CARD", "CARD", "CARD"] 

随着游戏的进行,你可以通过咨询game_deck揭示出display_deck新卡。

0

字面上的答案:

def print_mostly_cards(a) 
    print "a = \"[#{a.first}\"" 
    (a.size-1).times { print ', "CARD"' } 
    puts "]" 
end 

a = ["AH", "1H", "2H", "3H", "4H", "5H"] 
print_mostly_cards(a) 
    a = "[AH", "CARD", "CARD", "CARD", "CARD", "CARD"]