因此,我正在尝试为纸牌游戏打印网格/矩阵。我有一个二维的Card实例数组,称为@cards,它在Board类中创建。我坚持让卡片对象形成网格,同时在#render函数中仅显示它们的值(@value)。因此,他们应该打印出字母。 现在,我得到的只是“枚举器加一个数字”作为输出,然后所有的卡都完全打印出来。
这是我被困的地方:
class Board
attr_accessor :cards, :size, :grid
def initialize(n=4)
@size = (n += 1 if (n*n).odd?) || n
@grid = grid #Array.new(n) { Array.new(n) {1} }
@cards = []
end
def make_deck
((@size*@size)/2).times do
@cards << Card.new
end
@cards << @cards.clone
@cards = @cards.flatten.shuffle!
end
def populate(size=@size)
make_deck
@grid = @cards.each_slice(@size).to_a
end
def render
puts " #{(0...size).to_a.join(' ')}"
@grid.each_with_index do |row, i|
puts "#{i} #{(row.each {|pos| pos.value}).join(' ')}"
end
end
end
这是我的卡类:
require "byebug"
class Card
attr_accessor :value, :facedown
def initialize
alpha = ("A".."Z").to_a
@facedown = true
@value = alpha.sample
end
def display_value
if @facedown == false
@value
else
false
end
end
def swap
if @facedown
@facedown= false
else
@facedown = true
end
end
def hide_or_reveal
swap
end
end