https://paiza.io/ja ← サイトを開いてください。
このページでは「ゲームをテーマ」に学習したいと思います。
前回の内容を複雑にして、掘り下げたいと思います。
ゲームで考えてみる

関数で表示
fun main() { LevelUp() } fun LevelUp() { println("おばけはレベルが上がった!!") println("レベルが6になった") println("HPが220になった") println("APが11になった") println("DPが4になった") }
変数だと大変・・・
fun main() { val name:String = "おばけ" var level:Int = 5 var hp:Int = 200 var ap:Int = 10 var dp:Int = 3 LevelUp(name,level,hp,ap,dp) } fun LevelUp( NAME:String ,LEVEL:Int ,HP:Int ,AP:Int ,DP:Int ) { println("${ NAME }はレベルが上がった!!") println("レベルが${ LEVEL + 1 }になった") println("HPが${ HP + 20 }になった") println("APが${ AP + 1 }になった") println("DPが${ DP + 1 }になった") }

変数で管理すると、関数の引数が複雑になる。
- 複数の場所で使いにくくなる。
- 引数の増減も管理しにくくなる。
- 変数の値も変化させにくい。
インスタンスを利用
変数をインスタンスにまとめて、引数に渡す

fun main() { val m:Monster = Monster() LevelUp(m) } fun LevelUp( M:Monster ) { println("${ M.name }はレベルが上がった!!") println("レベルが${ M.level + 1 }になった") println("HPが${ M.hp + 20 }になった") println("APが${ M.ap + 1 }になった") println("DPが${ M.dp + 1 }になった") } class Monster { var name:String = "おばけ" var level:Int = 5 var hp:Int = 200 var ap:Int = 10 var dp:Int = 3 }
インスタンス化すると、関数がシンプルになる。
結果的に、読みやすいプログラム、改良修正しやすくなる。
インスタンスの編集
コピーしたインスタンスは同期(シンクロ)している。

fun main() { val m:Monster = Monster() LevelUp(m) LevelUp(m) LevelUp(m) } fun LevelUp( M:Monster ) { println("${ M.name }はレベルが上がった!!") M.level += 1 M.hp += 20 M.ap += 1 M.dp += 1 println("レベルが${ M.level }になった") println("HPが${ M.hp }になった") println("APが${ M.ap }になった") println("DPが${ M.dp }になった") } class Monster { var name:String = "おばけ" var level:Int = 5 var hp:Int = 200 var ap:Int = 10 var dp:Int = 3 }
インスタンス内の変数は編集可能です。
まとめ
・ 関数にインスタンスを渡すことを学習しました。
・ 変数を渡すより、プログラムが読みやすく、編集しやすくなります。