我正在尝试为一款名为times up的游戏创建一个ruby类。基本上,我希望以下功能开始:
该课程的每个实例都是游戏。
每个游戏都有一系列由玩家输入的单词。
该课程应该允许从单词数组中获取一个随机元素,然后从游戏中移除该元素。
当所有单词都在" hat"之外时,游戏应该能够将数组刷新为原始内容,模拟将单词放回到下一轮的帽子中。
这是最后一点,我遇到了麻烦..我试图创建一个虚拟数组或一个未修改的基本数组,然后在一轮结束时将空的数组设置为基数组但是这个只导致我在第二轮中从基础数组中删除元素,并在第二轮结束时留下两个空数组:(如何创建一个不会被修改的副本?
这是我的代码:
class TimesUp
def initialize
@hat = []
@basehat = []
end
def NewWord(word)
@hat.push(word)
@basehat.push(word)
end
def grab
if @hat.empty?
puts "End of round!"
else
l = @hat.length
word = rand(l)
puts @hat[word]
@hat.delete_at(word)
end
end
def printout
puts @hat
end
# here is where i try to set the game array to the 'base' array.
def refresh
@hat = @basehat
@basehat = @basehat
end
end
答案 0 :(得分:0)
使用Object#dup
,clone
也可能是一种选择。
def refresh
@hat = @basehat.dup
@basehat = @basehat.dup
end