【Kotlin入門⑦】KotlinでRPGプログラムを作る
スポンサードリンク
おはようございます。Shotaです。
今回の記事では、Kotlinのオブジェクト指向の概念を応用して、コーディングだけで動くKotlinのRPGプログラムを作ろうと思います。
本題に入る前に、今回の記事の内容は以下の内容の知識があることを前提として説明します。まだ理解できていない方はこちらの過去記事を参照ください。
【過去の記事】
shotanukumizu-1000.hatenablog.com
shotanukumizu-1000.hatenablog.com
それでは早速、本題に入りましょう。
設計する具体的なプログラムの概要
今回実装するKotlinプログラムの内容は次の通りです。
以上の内容に沿った簡単なRPGプログラムをKotlin言語でコーディングしていきます。
実装
キャラクターの基本ステータス
class Character constructor(name:String, hp:Int, attack:Int, defense: Int) { val name = name var hp = hp val attack = attack val defense = defense }
まず最初にCharacter
クラスを作成します。基本ステータスはキャラクターにデフォルトで備わっているので、コンストラクタで表現します。
名前は変数name
でString
型、HP、攻撃力、守備力はそれぞれhp
、attack
、defense
ですべてInt
型と定義します。
変数ですが、HPだけは変動するので変数名にvar
を書きます。それ以外の変数は定数として扱いますのでval
をその前に書きます。
キャラクターの基本パラメータを表示するメソッド
次にキャラクターの基本パラメータを表示するメソッドを書きます。関数名はshow_status
として、以下のように書きます。
fun show_status():Unit { println("name: $name, hp:$hp, attack: $attack, defense: $defense") }
今回の場合は変数名ではなく変数の値を出力したいので、変数名に$
を置きます。ちなみに今作った関数は返り値を出さないので関数名の最後に:
をつけてUnit
と書きます。(コードの可読性を上げるため)
先程書いた関数のコードはCharacter
クラスのメソッドとして扱うので、クラスの中にこのようにしてコーディングします。
class Character constructor(name:String, hp:Int, attack:Int, defense: Int) { val name = name var hp = hp val attack = attack val defense = defense fun show_status():Unit { println("name: $name, hp:$hp, attack: $attack, defense: $defense") } }
これをmain
関数で以下のようにして実行してみましょう。
class Character constructor(name:String, hp:Int, attack:Int, defense: Int) { val name = name var hp = hp val attack = attack val defense = defense fun show_status():Unit { println("name: $name, hp: $hp, attack: $attack, defense: $defense") } } fun main() { val man = Character("shota", 15, 7, 7) // インスタンスの作成 man.show_status() //メソッドの実行 }
▼実行結果
name: shota, hp: 15, attack: 7, defense: 7
このように基本パラメータを出力できました。
逃げるコマンドの実装
逃げるコマンドを実装するのは簡単です。関数run
を作って以下のように定義するだけです。
fun run() { println("$name runs.") }
これをCharacter
クラスの中において実行すれば簡単に逃げるコマンドを実装できます。
fun main() { val man = Character("shota", 15, 7, 7) // インスタンスの作成 man.run() }
▼プログラムの全体像
class Character constructor(name:String, hp:Int, attack:Int, defense: Int) { val name = name var hp = hp val attack = attack val defense = defense fun show_status():Unit { println("name: $name, hp:$hp, attack: $attack, defense: $defense") } fun run() { println("$name runs.") } } fun main() { val man = Character("shota", 15, 7, 7) man.run() }
▼実行結果
shota runs.
このようにして逃げるコマンドを簡単に実装できます。
攻撃コマンドの実装
次は、攻撃コマンドの実装に入ります。実装する攻撃コマンドの詳細は次の通りです。
これら3つの機能をKotlinプログラムで実装していきましょう。
ダメージ計算
- 攻撃するとき、攻撃したキャラクターの攻撃力から攻撃を受けた相手の守備力を引いた値でダメージを計算する。もし攻撃力が守備力の数値以下であればダメージは0とする
まずはこちらの処理をKotlinプログラムで書いていこうと思います。これをプログラムに起こすと次の通りになります。
fun attack(self: Character, target: Character) { println("${self.name} attacks") var atk_point = self.attack - target.defense if (atk_point<= 0) { println("No damage.") } else { println("The Hit decreased by $atk_point") } }
キャラクターのHPが0になっている場合の処理
今度はこれらをKotlinプログラムで実装していきます。これらをKotlinプログラムに変換すると以下のようになります。
fun attack(self: Character, target: Character) { println("${self.name} attacks") if (target.hp <= 0) { println("The Character has been dead.") } var atk_point = self.attack - target.defense if (atk_point <= 0) { println("No damage.") } else { println("The Hit decreased by $atk_point") } if (target.hp == 0) { println("${target.name} defeated") } }
この処理は基本的に条件分岐の構文を使ってコンソール上にprintln
関数を使って書いているだけなので詳細は割愛します。
プログラムの全体像
今回の記事で紹介したプログラムの全体像は次のようになります。
class Character constructor(name: String, hp: Int, attack: Int, defense: Int) { val name = name var hp = hp val attack = attack val defense = defense fun show_status(): Unit { println("name: $name, hp:$hp, attack: $attack, defense: $defense") } fun attack(self: Character, target: Character) { println("${self.name} attacks") var atk_point = self.attack - target.defense if (target.defense <= 0) { println("No damage.") } else { println("The Hit decreased by $atk_point") } if (target.hp == 0) { println("${target.name} defeated") } } fun run() { println("$name runs.") } } fun main() { val man = Character("shota", 15, 7, 7) val enemy = Character("slime", 4, 8, 3) man.attack(man, enemy) }
まとめ
今回はKotlinプログラムで簡単なRPGをコンソール上で実行するプログラムを書きました。
今回の記事を参考に、Kotlinについて興味を持ってくだされば幸いです。
今日の記事はこれで終了です。
【ソースコード】