class JewelryBox < Box def look() puts "宝箱はキラキラと輝いている。" end end # openメソッドのオーバーライド class Box def initialize(item) @item = item end def open() puts "宝箱を開いた。#{@item}を手にいれた。" end end class MagicBox < Box def open() puts "宝箱を開いた。#{@item}が襲いかかってきた!" end end class Player def initialize(name) @name = name end def attack(enemy) puts "#{@name}は、#{enemy}を攻撃した!" end end puts "=== パーティでスライムと戦う ===" hero = Player.new("勇者") warrior = Player.new("戦士") party = [hero, warrior] # p party party.each do |player| player.attack("スライム") end class Player def initialize(name) @name = name end def attack(enemy) puts "#{@name}は、#{enemy}を攻撃した!" end end class Wizard < Player def attack(enemy) puts "シャラララーン!" puts "#{@name}は、#{enemy}に炎を放った!" end end puts "=== パーティでスライムと戦う ===" hero = Player.new("勇者") warrior = Player.new("戦士") wizard = Wizard.new("魔法使い") party = [hero, warrior, wizard] # p party party.each do |player| player.attack("スライム") end class Wizard < Player def initialize() super("魔法使い") end def attack(enemy) spell() puts "#{@name}は、#{enemy}に炎を放った!" end private def spell() puts "シャラララーン" end end