kotlin入門 後編 09 【 クラスとインスタンス⑦ 】ゲームで考えてみる

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
}

インスタンス内の変数は編集可能です。

 

 

まとめ

・ 関数にインスタンスを渡すことを学習しました。

・ 変数を渡すより、プログラムが読みやすく、編集しやすくなります。