変数では通常値を変更できないが、@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独特の書き方は覚えないといかんね。