Skip to content

Commit

Permalink
[feat] 毎回問題が変わるように修正
Browse files Browse the repository at this point in the history
  • Loading branch information
mrs1669 committed May 22, 2024
1 parent 6da8a2c commit 6c57fbb
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
18 changes: 15 additions & 3 deletions PrimePickApp/MainView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct MainView: View {
.font(.headline)
.padding()

NavigationLink(destination: QuizView(difficulty: "Hard")) {
NavigationLink(destination: LazyView(QuizView(difficulty: "Hard"))) {
Text("Hard")
.padding()
.frame(maxWidth: .infinity)
Expand All @@ -38,7 +38,7 @@ struct MainView: View {
.padding(.horizontal, 50)
.padding(.bottom, 10)

NavigationLink(destination: QuizView(difficulty: "Normal")) {
NavigationLink(destination: LazyView(QuizView(difficulty: "Normal"))) {
Text("Normal")
.padding()
.frame(maxWidth: .infinity)
Expand All @@ -49,7 +49,7 @@ struct MainView: View {
.padding(.horizontal, 50)
.padding(.bottom, 10)

NavigationLink(destination: QuizView(difficulty: "Easy")) {
NavigationLink(destination: LazyView(QuizView(difficulty: "Easy"))) {
Text("Easy")
.padding()
.frame(maxWidth: .infinity)
Expand All @@ -65,6 +65,18 @@ struct MainView: View {
}
}
}

struct LazyView<Content: View>: View {
let content: () -> Content

init(_ content: @autoclosure @escaping () -> Content) {
self.content = content
}

var body: Content {
content()
}
}

#Preview {
MainView()
Expand Down
18 changes: 17 additions & 1 deletion PrimePickApp/QuizData/QuizDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,34 @@
//

import Foundation
import GameplayKit

class QuizDataManager {
func makeQuizData() -> [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)
let randomInt = Int.random(in: 1...99, using: &generator)
let isCorrect = primeNumbers.contains(randomInt)
let primeQuizEntity = PrimeQuizEntity(quizId: i, number: randomInt, isCorrect: isCorrect)
quizData.append(primeQuizEntity)
}
return quizData
}
}

struct SeededGenerator: RandomNumberGenerator {
private var rng: GKMersenneTwisterRandomSource

init(seed: UInt64) {
rng = GKMersenneTwisterRandomSource(seed: seed)
}

mutating func next() -> UInt64 {
return UInt64(rng.nextUniform() * Float(UInt64.max))
}
}

0 comments on commit 6c57fbb

Please sign in to comment.