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
}
インスタンス内の変数は編集可能です。
まとめ
・ 関数にインスタンスを渡すことを学習しました。
・ 変数を渡すより、プログラムが読みやすく、編集しやすくなります。