変数では通常値を変更できないが、@Stateで値を更新できるようになる
swiftは型推論を実装している
swift基本型: int, Uint(符号なし), Float, Double, String, Bool
初期値をnullとして、タップされたらグーに変わる
VStack { if answerNumber == 0 { Text("これからじゃんけんをします") } else if answerNumber == 1 { Image("gu") .resizable() .aspectRatio(contentMode: .fit) Text("グー") } else if answerNumber == 2 { } else { } Button(action: { print("タップされたよ!") answerNumber = Int.random(in: 1...3) }) { Text("じゃんけんする!") } }
数値をランダムに算出するものを関数(function)と呼ぶ
同じジャンケンが続かないようにする
repeat {} while で繰り返し処理する
Button(action: { answerNumber = Int.random(in: 1...3) var newAnswerNumber = 0 repeat { newAnswerNumber = Int.random(in: 1...3) } while answerNumber == newAnswerNumber answerNumber = newAnswerNumber }) { Text("じゃんけんする!") }
スタイリング
Text("じゃんけんする!") .frame(maxWidth: .infinity) .frame(height: 100) .font(.title) .background(Color.pink) .foregroundColor(Color.white)
こちらで完成
var body: some View { VStack { if answerNumber == 0 { Spacer() Text("これからじゃんけんをします") .padding(.bottom) } else if answerNumber == 1 { Image("gu") .resizable() .aspectRatio(contentMode: .fit) Text("グー") Spacer() } else if answerNumber == 2 { Image("choki") .resizable() .aspectRatio(contentMode: .fit) Text("チョキ") .padding(.bottom) Spacer() } else { Image("pa") .resizable() .aspectRatio(contentMode: .fit) Text("パー") .padding(.bottom) Spacer() } Button(action: { answerNumber = Int.random(in: 1...3) var newAnswerNumber = 0 repeat { newAnswerNumber = Int.random(in: 1...3) } while answerNumber == newAnswerNumber answerNumber = newAnswerNumber }) { Text("じゃんけんする!") .frame(maxWidth: .infinity) .frame(height: 100) .font(.title) .background(Color.pink) .foregroundColor(Color.white) } } }
なるほど、感どころはわかったような気がする
swift独特の書き方は覚えないといかんね。