Created
August 31, 2012 06:57
-
-
Save aya-eiya/3549740 to your computer and use it in GitHub Desktop.
マリオを抽象化してみた
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface キャラ { | |
public void 死ぬ() | |
} | |
abstract class Abs敵キャラ implements キャラ{ | |
String _name = "名無しさん" | |
public void 死ぬ(){ | |
println "${_name}死亡" | |
} | |
} | |
abstract class Absマリオ implements キャラ{ | |
public void 死ぬ(){ | |
println 'マリオ死亡' | |
} | |
public Absマリオ on敵に触れる(Abs敵キャラ 敵){ | |
死ぬ() | |
return new マリオの死体(); | |
} | |
} | |
class チビマリオ extends Absマリオ{ | |
} | |
class デカマリオ extends Absマリオ{ | |
public Absマリオ on敵に触れる(Abs敵キャラ 敵){ | |
return toチビ(); | |
} | |
private Absマリオ toチビ(){ | |
println 'ちっちゃくなっちゃった!' | |
return new チビマリオ() | |
} | |
} | |
class 無敵マリオ extends Absマリオ{ | |
public Absマリオ on敵に触れる(Abs敵キャラ 敵){ | |
敵.死ぬ() | |
return this; | |
} | |
} | |
class マリオの死体 extends Absマリオ{ | |
public void 死ぬ(){ | |
println 'し……死んでる……' | |
} | |
public Absマリオ on敵に触れる(Abs敵キャラ 敵){ | |
死ぬ() | |
return this; | |
} | |
} | |
Abs敵キャラ myノコノコ = new Abs敵キャラ(){ {_name = "ノコノコ"} } | |
List<Absマリオ> myマリオ達 = [new チビマリオ(),new デカマリオ(),new 無敵マリオ()] | |
myマリオ達.each { | |
println "(${it.class.name}が敵に触れ続けてみた)" | |
it.on敵に触れる(myノコノコ).on敵に触れる(myノコノコ).on敵に触れる(myノコノコ) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
(チビマリオが敵に触れ続けてみた)
マリオ死亡
し……死んでる……
し……死んでる……
(デカマリオが敵に触れ続けてみた)
ちっちゃくなっちゃった!
マリオ死亡
し……死んでる……
(無敵マリオが敵に触れ続けてみた)
ノコノコ死亡
ノコノコ死亡
ノコノコ死亡
Result: [チビマリオ@10d4ade, デカマリオ@1ae74f5, 無敵マリオ@80bc28]