Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import SwiftUI
- struct ContentView: View {
- @State private var num1 = Int()
- @State private var num2 = Int()
- @State private var difficulty = 2
- @State private var selectedNumberOfQuestions = 5
- @State private var questionNumber = 0
- @State private var numbers = [1...12]
- @State private var correctAnswer = Int()
- @State private var score = 0
- @State private var randomAnswers = [Int]()
- @State private var isVisible = false
- @State private var endGame = false
- let numberOfQuestions = [5, 10, 20]
- var body: some View {
- NavigationView {
- VStack {
- VStack {
- Stepper("Select difficulty: \(difficulty)", value: $difficulty, in: 2...12)
- .padding()
- HStack {
- Text("Number of questions")
- Picker("", selection: $selectedNumberOfQuestions) {
- ForEach(numberOfQuestions, id: \.self) {
- Text("\($0)")
- }
- }
- .pickerStyle(.segmented)
- }
- .padding()
- Divider()
- }
- Text("Question number: \(questionNumber)")
- Spacer()
- Text("What is: \(num1) x \(num2)")
- .padding()
- HStack {
- ForEach(randomAnswers, id: \.self){ num in
- Button {
- withAnimation{
- numberTapped(num)
- }
- } label: {
- Text("\(num)")
- .frame(width: 50, height: 50)
- .foregroundColor(.white)
- .font(.title2.bold())
- .background(.indigo)
- .clipShape(Circle())
- }
- .padding(.vertical, 8.0)
- .alert("Game Over", isPresented: $endGame) {
- Button("Ok", action: newGame)
- } message: {
- Text("Your score is \(score)")
- }
- }
- }
- Spacer()
- if !isVisible {
- Button {
- answer()
- isVisible.toggle()
- } label: {
- Text("Start Game")
- }
- .padding()
- }
- Text("Score: \(score)")
- }
- .navigationTitle("Math Game")
- }
- }
- func answer() {
- for _ in 1...4 {
- num1 = Int.random(in: 1...difficulty)
- num2 = Int.random(in: 1...difficulty)
- correctAnswer = num1 * num2
- randomAnswers.append(correctAnswer)
- }
- createRandomAnswer()
- }
- func createRandomAnswer() {
- randomAnswers.shuffle()
- }
- func numberTapped(_ num: Int) {
- if num == correctAnswer {
- score += 1
- questionNumber += 1
- randomAnswers.removeAll()
- answer()
- } else {
- randomAnswers.removeAll()
- questionNumber += 1
- answer()
- }
- if questionNumber == selectedNumberOfQuestions {
- endGame = true
- }
- }
- func newGame() {
- score = 0
- questionNumber = 0
- randomAnswers.removeAll()
- isVisible.toggle()
- }
- }
- struct ContentView_Previews: PreviewProvider {
- static var previews: some View {
- ContentView()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment