Ruby идентичные пользовательские функции возвращаются по-разному - PullRequest
0 голосов
/ 16 марта 2020

только одна из этих функций ('render' & 'render_all') печатает на терминал, а другая возвращает "nil". Я могу поменять их местами и даже сделать их идентичными. Один всегда будет работать и печатать, а другой возвращает «ноль». Я не могу понять, почему. Мне нужно отобразить все грани моего класса плиток в конце, который требует render_all, и мне нужно визуализировать его частично, пока игра еще продолжается.

 class Board

  def initialize(size, bombs)
    @size = size 
    explosives = bombs
    @grid = Array.new(size) {Array.new(size) {Tile.new}}

    while explosives != 0
      potential_bomb = @grid[rand(0...size)][rand(0...size)]
      if potential_bomb.bomb == false
        potential_bomb.bomb = true
        potential_bomb.face = "X"
        explosives -= 1
      end
    end    
  end

  attr_accessor :size, :grid, 


   def render
    grid.each do |row|
      row.each do |box|
        if box.shown == true
          print "#{box.face}"
        else
          print "#"
        end        
      end
      print "\n"
    end
  end

  def render_all
    grid.each do |row|
      row.each do |box|
        print "#{box.face}"
      end
    end
  end

  def solved
    solved = true
    grid.each do |row|
        row.each {|pos| solved = false if pos.shown != true && pos.bomb == false}
    end
    return solved
  end

  def [](pos)
    x,y = pos
    grid[x][y]
  end
end

1 Ответ

1 голос
/ 16 марта 2020
attr_accessor :size, :grid, 

Видите эту запятую? Это плохо.

FWIW: всякий раз, когда возникает проблема, которая зависит от порядка, всегда смотрите сразу выше ; это часто не связано с зависимыми от порядка вещами, а скорее является результатом того, что что-то напортачило раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...