今度は HP と MP を 変数 で表してみましょう。

HP を表す 変数 hp と MP を表す 変数 mp を作ります。

var hp = 153
var mp = 25

HPMP のような 変数名 にしなかったのは、 変数名 は小文字で付ける決まりになっているからです。

HP という名前の 変数 を作ることもできますが、コードを読んでいる人が混乱するのでやめましょう。

さて、 hpmp を表示してみましょう。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()
ゆうしゃ
HP 153
MP 25

次に、魔王が勇者を攻撃します。前回と同じようにダメージを計算しましょう。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

var damage = (185 - 97) / 2

print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")
print()
ゆうしゃ
HP 153
MP 25

まおうのこうげき。
ゆうしゃに44のダメージ。

次は、勇者の HP を damage の分だけ減らしたいところです。

ダメージを受けた後の勇者の HP は hp - damage です。

これを新しい hp の値として hp代入 します。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

var damage = (185 - 97) / 2

print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")

hp = hp - damage

hp = hp - damage という式は、算数や数学の感覚では変なように感じられます。

算数や数学では = の左右は等しくないといけません。 hphp - damage が等しいというのは変です。

しかし、 Swift の = は単にの右側の値を左側に 代入 するという意味なので、この式に問題はありません。

hp = hp - damage と書くと、 hp - damage 、つまり 153 - 44 の計算結果が新しい hp の値として 代入 されます。

結果を表示してみます。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

var damage = (185 - 97) / 2

print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")
print()

hp = hp - damage

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()
ゆうしゃ
HP 153
MP 25

まおうのこうげき。
ゆうしゃに44のダメージ。

ゆうしゃ
HP 109
MP 25

ちゃんと HP がダメージの分だけ減って表示されましたね!

このように、 変数 の値を増やしたり減らしたりすることはよくあるので、もっと簡単な書き方が用意されています。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

var damage = (185 - 97) / 2

print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")
print()

hp -= damage

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

このように、 hp -= damage のように書くと hp = hp - damage と同じ意味になります。

同じように a += b と書くと a = a + b の意味になります。

コードを読む人にもわかりやすいので、 変数 の値を増やしたり減らしたりするときは +=-= を使うようにしましょう。

それでは、ついでに HP を回復する魔法「ヒーリング」を勇者に使わせてみましょう。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

var damage = (185 - 97) / 2

print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")
print()

hp -= damage

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

print("ゆうしゃはヒーリングのまほうをつかった。")
print("ゆうしゃのHPがかいふくした。")
print()

HP が 30 回復したとすると、 += を使って次のように書けます。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

var damage = (185 - 97) / 2

print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")
print()

hp -= damage

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

print("ゆうしゃはヒーリングのまほうをつかった。")
print("ゆうしゃのHPがかいふくした。")
print()

hp += 30

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()
ゆうしゃ
HP 153
MP 25

まおうのこうげき。
ゆうしゃに44のダメージ。

ゆうしゃ
HP 109
MP 25

ゆうしゃはヒーリングのまほうをつかった。
ゆうしゃのHPがかいふくした。

ゆうしゃ
HP 139
MP 25

おや?魔法を使ったのに MP が減っていません。

忘れずに勇者の MP も減らしましょう。ヒーリングの消費 MP を 5 とするとこのようにすれば OK です。

var hp = 153
var mp = 25

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

var damage = (185 - 97) / 2

print("まおうのこうげき。")
print("ゆうしゃに\(damage)のダメージ。")
print()

hp -= damage

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()

print("ゆうしゃはヒーリングのまほうをつかった。")
print("ゆうしゃのHPがかいふくした。")
print()

hp += 30
mp -= 5

print("ゆうしゃ")
print("HP \(hp)")
print("MP \(mp)")
print()
ゆうしゃ
HP 153
MP 25

まおうのこうげき。
ゆうしゃに44のダメージ。

ゆうしゃ
HP 109
MP 25

ゆうしゃはヒーリングのまほうをつかった。
ゆうしゃのHPがかいふくした。

ゆうしゃ
HP 139
MP 20

ちゃんと MP が減りましたね。

ずいぶんと RPG っぽくなってきました!