演習課題「マップに道を追加する」
右のコードは、森と城と町で構成されている地図を表すlandmap配列が定義してあります。
landmap配列に道を作成した後に、landmap配列を出力してください。
道は「+」で表し、landmap配列の行が9で割り切れるか、列が9で割り切れるところに作成します。
ただし、城と町があるところには、道を作成しないようにします。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
町+++++++++++++++++町
+森森森森森森森森+森森森森森森森森+
+森森森森森森森森城森森森森森森森森+
+森森森森森森森森+森森森森森森森森+
+森森森森森森森森+森森森森森森森森+
+森森森森森森森森+森森森森森森森森+
+森森森森森森森森+森森森森森森森森+
+森森森森森森森森+森森森森森森森森+
+森森森森森森森森+森森森森森森森森+
町+++++++++++++++++町
#10:2次元配列のマップに道を追加する
ここでは、前回に引き続いて、RPGの簡単なマップを作って、城と町の間を道路で接続します。
ANDは、両方の条件が成立した場合、全体の条件が成立します。
全てが不成立、どれか1つでも不成立の場合には、不成立となります。
Rubyでは、「&&」と記述します。
条件A | 条件B | 全体 |
---|---|---|
不成立 | 不成立 | 不成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
成立 | 成立 | 成立 |
ORは、どれか1つの条件が成立した場合、全体の条件が成立します。
全てが不成立の場合には、不成立となります。
Rubyでは、「||」と記述します。
条件A | 条件B | 全体 |
---|---|---|
不成立 | 不成立 | 不成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
成立 | 成立 | 成立 |
landmap = Array.new(10).map{Array.new(20,"森")}
landmap.each do |line|
line.each do |area|
print area
end
puts ""
end
道は、行が2で割り切れるか、列が3で割り切れる場合で、そこが「森」の時に配置する。landmap = Array.new(10).map{Array.new(20,"森")}
landmap[0][0] = "城"
landmap[0][19] = "町"
landmap[9][19] = "町"
landmap.each_with_index do |line, i|
print "#{i}:"
line.each_with_index do |area, j|
if (i % 2 == 0 || j % 3 == 0) && area == "森"
print "+"
else
print area
end
end
puts ""
end
class Array (Ruby 2.4.0)
https://docs.ruby-lang.org/ja/latest/class/Array.html