diff --git a/PrimePickApp/QuizData/QuizDataManager.swift b/PrimePickApp/QuizData/QuizDataManager.swift index 3848b7e..71e9114 100644 --- a/PrimePickApp/QuizData/QuizDataManager.swift +++ b/PrimePickApp/QuizData/QuizDataManager.swift @@ -9,21 +9,39 @@ import Foundation import GameplayKit class QuizDataManager { - func makeQuizData() -> [PrimeQuizEntity] { + func makeQuizData(difficulty: String) -> [PrimeQuizEntity] { let primeData = PrimeData() var quizData: [PrimeQuizEntity] = [] - let primeNumbers = primeData.generateOneOrTwoDigitPrimes() let timestamp = UInt64(Date().timeIntervalSince1970 * 1000) var generator = SeededGenerator(seed: timestamp) for i in 1...10 { - let randomInt = Int.random(in: 1...99, using: &generator) - let isCorrect = primeNumbers.contains(randomInt) + var isCorrect: Bool = false + var randomInt: Int = 0 + if difficulty == "Easy" { + randomInt = Int.random(in: 1...99, using: &generator) + let primeNumbers = primeData.generateOneOrTwoDigitPrimes() + isCorrect = primeNumbers.contains(randomInt) + } else if difficulty == "Normal" { + randomInt = Int.random(in: 100...999, using: &generator) + let primeNumbers = primeData.generateThreeDigitPrimes() + isCorrect = primeNumbers.contains(randomInt) + } else if difficulty == "Hard" { + repeat { + randomInt = Int.random(in: 100...999, using: &generator) + } while isMultipleOf235(randomInt) + let primeNumbers = primeData.generateThreeDigitPrimes() + isCorrect = primeNumbers.contains(randomInt) + } let primeQuizEntity = PrimeQuizEntity(quizId: i, number: randomInt, isCorrect: isCorrect) quizData.append(primeQuizEntity) } return quizData } + + func isMultipleOf235(_ number: Int) -> Bool { + return number % 2 == 0 || number % 3 == 0 || number % 5 == 0 + } } struct SeededGenerator: RandomNumberGenerator { diff --git a/PrimePickApp/QuizNumberView.swift b/PrimePickApp/QuizNumberView.swift index 3d0bbdc..c9ba021 100644 --- a/PrimePickApp/QuizNumberView.swift +++ b/PrimePickApp/QuizNumberView.swift @@ -9,6 +9,7 @@ import SwiftUI struct QuizNumberView: View { @Binding var quizNumber: Int + let difficulty: String let quizData: [PrimeQuizEntity] var body: some View { @@ -23,9 +24,15 @@ struct QuizNumberView: View { .frame(width: 300, height: 200) // フレームサイズを指定 .shadow(radius: 10) // シャドウを追加して立体感を出す - Text(quizData[quizNumber].number.description) - .font(.custom("ArialRoundedMTBold", size: 180)) - .foregroundStyle(Color.gray) + if difficulty == "Easy" { + Text(quizData[quizNumber].number.description) + .font(.custom("ArialRoundedMTBold", size: 180)) + .foregroundStyle(Color.gray) + } else { + Text(quizData[quizNumber].number.description) + .font(.custom("ArialRoundedMTBold", size: 120)) + .foregroundStyle(Color.gray) + } } } } @@ -34,6 +41,6 @@ struct QuizNumberView_Previews: PreviewProvider { @State static var quizNumber = 3 static var previews: some View { - QuizNumberView(quizNumber: $quizNumber, quizData: [PrimeQuizEntity(quizId: 0, number: 3, isCorrect: true)]) + QuizNumberView(quizNumber: $quizNumber, difficulty: "Easy", quizData: [PrimeQuizEntity(quizId: 0, number: 3, isCorrect: true)]) } } diff --git a/PrimePickApp/QuizView.swift b/PrimePickApp/QuizView.swift index e924d8b..57238c5 100644 --- a/PrimePickApp/QuizView.swift +++ b/PrimePickApp/QuizView.swift @@ -18,7 +18,7 @@ struct QuizView: View { init(difficulty: String) { self.difficulty = difficulty - quizData = manager.makeQuizData() + quizData = manager.makeQuizData(difficulty: difficulty) } var body: some View { @@ -32,6 +32,7 @@ struct QuizView: View { QuizNumberView( quizNumber: $quizNumber, + difficulty: difficulty, quizData: quizData ) .frame(height: UIScreen.main.bounds.height / 3)