红宝石打印对象数组的网格

时间:2020-08-19 12:09:03

标签: ruby-on-rails ruby class debugging

因此,我正在尝试为纸牌游戏打印网格/矩阵。我有一个二维的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

0 个答案:

没有答案