所以我试图改变我的数组的输出:
------
|*...|
------
|..*.|
------
|....|
------
到
---------
|*|.|.|.|
---------
|.|.|*|.|
---------
|.|.|.|.|
---------
以下是代码示例
def load_board(file)
gameboard = File.readlines(file)[1..-1]
gameboard.map! do |line|
line.split.map(&:to_s)
end
$globalboard = gameboard
end
def pp_board(board)
puts Array.new(board[0].size*2+1, '-').join('')
board.each do |row|
puts "|" + row.join('|') + "|"
puts Array.new(row.size*2+1, '-').join('')
end
end
load_board('mines.txt')
pp_board($globalboard)
由于某种原因,似乎row.join('|')方法没有做任何事情,这有什么原因吗?
mines.txt文件的内容是
4 3
*...
..*.
....
答案 0 :(得分:0)
使用map!
:
def load_board(file)
gameboard = File.readlines(file)[1..-1]
gameboard.map! do |line|
line.split.map(&:to_s)
end
$globalboard = gameboard
end
没有map
的简单!
不会影响gameboard
数组并创建一个新数组。 map!
会影响原始数组gameboard
。这就是gameboard
没有包含分割线的原因。
出于某种原因,似乎row.join(' |')方法没有做任何事情,这是否有原因?
line.split
将行"*..."
拆分为["*..."]
。但我认为你希望它被每个角色分开。所以你需要line.split("")
。这将产生["*", ".", ".", "."]
。
.map(&:to_s)
也是多余的,因为line.split("")
中的分割数组将始终包含字符串。