- class Hero
- def kill(bug, skill)
- skill.do(bug)
- end
- end
- class Skill
- def do(bug="bug")
- raise "This is abstract method"
- end
- end
- # 雷电
- class Thunder < Skill
- def do(bug="bug")
- puts 'delay for 3 second'
- puts 'thunder 2 times'
- puts 'thunder continuely'
- puts "#{bug} HP -1000"
- end
- end
- # 地震
- class Earthquake < Skill
- def do(bug)
- puts "#{bug} HP -500"
- puts 'earthquick for 2 second'
- puts "#{bug} black out for 5 second"
- end
- end
- # 旋风
- class Whirlwind < Skill
- def do(bug)
- puts 'scope 100 tornado 5 second and move'
- puts "#{bug} HP continuely -150/per second "
- end
- end
- class ChristianStart<Skill
- def do(bug)
- puts "all enemy die!"
- puts "#{bug} die for ever!"
- end
- end
- puts "\r\n"
- puts 'beat pig'
- puts "------------"
- Hero.new.kill('pig', Thunder.new)
- puts "\r\n"
- puts 'beat white'
- puts "------------"
- Hero.new.kill('white', Earthquake.new)
- puts "\r\n"
- puts 'beat ox'
- puts "------------"
- Hero.new.kill('ox', Whirlwind.new)
- puts "\r\n"
- puts 'beat all'
- puts "------------"
- Hero.new.kill("all enemies", ChristianStart.new)
来源: http://www.phpxs.com/code/1006863/