SwiftUI:Button & Alert

44 篇文章 0 订阅
这是一个基于SwiftUI的猜国旗应用示例,包含一个简单的用户界面,用于展示国旗并让用户选择正确的答案。应用使用了`@State`变量来管理游戏状态,包括当前显示的国旗、分数和提示信息。当用户点击国旗时,会调用`flagTapped`函数判断答案是否正确,并显示得分。此外,`askQuestion`函数用于更新问题以开始新一轮的游戏。
摘要由CSDN通过智能技术生成
import SwiftUI


struct ContentView: View {
    @State var showingScore = false
    @State var scoreTitle = ""
    @State var countries = ["Estonia", "France", "Germany","Ireland", "Italy", "Nigeria", "Poland", "Russia", "Spain", "UK", "US"].shuffled()//须添加图片资源
    @State var correctAnswer = Int.random(in: 0...2)
    
    var body: some View {
        ZStack {
            LinearGradient(gradient: Gradient(colors: [Color.blue, Color.black]), startPoint: .top, endPoint: .bottom).edgesIgnoringSafeArea(.all)

            VStack(spacing: 30) {
                
                VStack {
                    Text("Tap the flag of").foregroundColor(.white)
                    Text(countries[correctAnswer]).foregroundColor(.white).font(.largeTitle).fontWeight(.black)
                }
                
                ForEach(0..<3) { number in
                    Button(action: {
                        flagTapped(number)
                    }) {
                        Image(countries[number]).renderingMode(.original)
                            .clipShape(Capsule())
                            .overlay(Capsule().stroke(Color.black, lineWidth: 1))
                            .shadow(color:.black, radius: 2)
                    }
                }
                Spacer()
            }.alert(isPresented: $showingScore) {
                Alert(title: Text(scoreTitle), message: Text("Your score is ??"), primaryButton: .cancel(Text("Cancel")){
                    
                },
                secondaryButton: .destructive(Text(("Continue")))
                {
                    askQuestion() }
                )
            }
        }
    }
    
    func flagTapped(_ number: Int) {
        print("number=\(number), correct=\(correctAnswer)")
        if number == correctAnswer {
            scoreTitle = "Correct"
        } else {
            scoreTitle = "Wrong"
        }
        showingScore = true
    }
    
    func askQuestion() {
        countries.shuffled()
        correctAnswer = Int.random(in: 0...2)
    }
}

在这里插入图片描述
from:SwiftUI 100天 猜国旗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值