見出し画像

はじめてみよう。プログラミング! - 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)

これでスッキリと終わらすことができました。

この記事が気に入ったらサポートをしてみませんか?