福笑いゲーム画面を作成する
最後に福笑いのゲームを行う画面を作成します。新規ファイル作成手順で、LuckyLaughGameView.swift
を追加してください。また作成後のView
のコードも次のように変更します。
import SwiftUI struct LuckyLaughGameView: View { var body: some View { ZStack { Image(systemName: "capsule.portrait.fill") .resizable() .frame(width: 240, height: 320) .foregroundStyle(.yellow) } } } #Preview { LuckyLaughGameView() }
LuckyLaugh
フォルダ内にLuckyLaughGameView.swift
が追加されて、次のようになっていれば問題ありません。

Image(systemName: "capsule.portrait.fill")
は福笑いゲームの顔の輪郭になる部分です。ZStack
を使用している理由は、これから追加する顔のパーツを重ねられるようにするためです。
次にドラッグできる顔のパーツを配置するために、作成したDraggableImage(systemName: )
をZStack
内に記述します。
SFSymbolsには目、鼻、口のような形のシンボルも用意されており、今回はそれを使用します。
struct LuckyLaughGameView: View { var body: some View { ZStack { Image(systemName: "capsule.portrait.fill") .resizable() .frame(width: 240, height: 320) .foregroundStyle(.yellow) // ここを追加↓ DraggableImage(systemName: "eye") DraggableImage(systemName: "eye") DraggableImage(systemName: "nose") DraggableImage(systemName: "mouth") .foregroundStyle(.red) DraggableImage(systemName: "rectangle.ratio.3.to.4.fill") } } }
DraggableImage(systemName: "rectangle.ratio.3.to.4.fill")
はモヒカンヘアー用のパーツです。DraggableImage
で追加したView
が画面の左上に表示されます。

それでは、実際にプレビュー上でドラッグをしてパーツを移動させて福笑いゲームで遊んでみましょう。

これでゲーム画面も完成です。
アプリを完成させる
これまで作成したLuckyLaughGameView
とLuckyLaughRuleView
をひとつの画面上の中でタブを使用して切り替えられるようにします。
すでに作成済みのLuckyLaughView
の変数body
の中を次のように変更します。
struct LuckyLaughView: View { var body: some View { TabView { Tab("ゲーム", systemImage: "gamecontroller") { // ここを変更↓ LuckyLaughGameView() } Tab("ルール", systemImage: "questionmark.circle") { // ここを変更↓ LuckyLaughRuleView() } } } }
各Tab
内のコンテンツに作成済みのゲーム画面とルール画面を設定しています。プレビューでもタブを選択することで画面を切り替えられるようになりました。

以上で福笑いゲームの完成です。
まとめと次回
今回はアプリを作る過程で、システムで用意されている画像の使い方や自前で用意した画像の使い方、ドラッグで対象のView
を移動させる方法を学びました。
特にSF Symbolsは、高品質でさまざまなバリエーションもあるため、アプリ開発を助けてくれます。今回紹介したシンボルはほんのひと握りのものなので、ぜひ色々と見て、使ってみてください。
次回はいよいよ最終回です。これまで作成したアプリをひとまとめにしたアプリを作成します。お楽しみに!
