はじめてみよう。プログラミング! - Swift Playgroundsでゲーム作成-6。
前回でひとまずゲームの終了までできました。ここでちょっとアレンジです。まずゲームオーバーを少し変えてみましょう。
少し無理やりな感じもありますが。
今の処理です。"time==0"で動気をリセットして
status = "gameover"
とすると止まります。
if time == 0{
status = "gameover"
for i in 0..<moles.count{
moles[i].center.y = locations[i][1]
}
}
でも、これではゲームは止まっても、処理は続いている状態です。止めてみましょう。
フレームワークを使います。今の実行環境はSwiftPlaygroundsなので独自のものを取り込みます。"PlaygroundSupport"を"import"します。
import PlaygroundSupport
処理を止めるのはこのフレームワークにある、
PlaygroundPage.current.finishExecution()
を使います。
実際の止め方ですが、ゲーム終了と同時に終わらすことはできないようなので、少しカウントダウンをしてから終わらせます。そのための変数です。
var overCount = 2
ゲームが進んでいる時はstatusは"running"となっていて時間Timerが"0"となった場合statusは"gameover"とします。その時の処理です。変数overCountを"1"ずつ減らして、"0"になった場合の処理です。
else if status == "gameover"{
overCount -= 1
if overCount == 0 {
PlaygroundPage.current.finishExecution()
}
}
これでプログラム自体は止まります。
止まると同時に時間と得点のみ表示させてあとの画面(オレンジの半円)は消してしまい、代わりに"GameOver"と表示してみます。
else if status == "gameover"{
for location in locations{
hole = Circle(radius: 4.0)
hole.color = .green
hole.center = Point(x: location[0], y: location[1] + 5.6)
}
scoreDisp = Text(string: "Game Over",fontSize:80.0,fontName: "Menlo-Bold",color:Color.red)
overCount -= 1
if overCount == 0 {
PlaygroundPage.current.finishExecution()
}
}
画面表示は
for location in locations{
hole = Circle(radius: 4.0)
hole.color = .green
hole.center = Point(x: location[0], y: location[1] + 5.6)
}
という処理により見えなくしています。あとは"GamaOver"と表示させます。
scoreDisp = Text(string: "Game Over",fontSize:80.0,fontName: "Menlo-Bold",color:Color.red)
これでスッキリと終わらすことができました。