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