diff --git a/ProjectClock.xcodeproj/project.pbxproj b/ProjectClock.xcodeproj/project.pbxproj index c348582..b96bbb0 100644 --- a/ProjectClock.xcodeproj/project.pbxproj +++ b/ProjectClock.xcodeproj/project.pbxproj @@ -10,10 +10,10 @@ 4F509BD225AE22D100726227 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F509BD125AE22D100726227 /* Models.swift */; }; 4F8A607125A9160400D88DC3 /* AddAlarmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F8A607025A9160400D88DC3 /* AddAlarmViewController.swift */; }; 4F98955225A9260400F51321 /* Net.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F98955125A9260400F51321 /* Net.swift */; }; - 4F9E458F25BA0558003F715D /* AlarmActivationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F9E458E25BA0558003F715D /* AlarmActivationViewController.swift */; }; 4FA419AF25AF93EC004CE0FC /* AlarmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FA419AE25AF93EC004CE0FC /* AlarmViewController.swift */; }; 4FD642D325B48C380069171E /* AlarmActivator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FD642D225B48C380069171E /* AlarmActivator.swift */; }; 4FD642DB25B4B7F60069171E /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FD642DA25B4B7F60069171E /* Utils.swift */; }; + 4FD642E025B4D5F30069171E /* AlarmActivationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FD642DF25B4D5F30069171E /* AlarmActivationViewController.swift */; }; 4FF0683F25A5F18700304E6B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF0683E25A5F18700304E6B /* AppDelegate.swift */; }; 4FF0684325A5F18700304E6B /* AccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF0684225A5F18700304E6B /* AccountViewController.swift */; }; 4FF0684625A5F18700304E6B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4FF0684425A5F18700304E6B /* Main.storyboard */; }; @@ -29,10 +29,10 @@ 4F509BD125AE22D100726227 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = ""; }; 4F8A607025A9160400D88DC3 /* AddAlarmViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAlarmViewController.swift; sourceTree = ""; }; 4F98955125A9260400F51321 /* Net.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Net.swift; sourceTree = ""; }; - 4F9E458E25BA0558003F715D /* AlarmActivationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlarmActivationViewController.swift; sourceTree = ""; }; 4FA419AE25AF93EC004CE0FC /* AlarmViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmViewController.swift; sourceTree = ""; }; 4FD642D225B48C380069171E /* AlarmActivator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmActivator.swift; sourceTree = ""; }; 4FD642DA25B4B7F60069171E /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; }; + 4FD642DF25B4D5F30069171E /* AlarmActivationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmActivationViewController.swift; sourceTree = ""; }; 4FF0683B25A5F18700304E6B /* ProjectClock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ProjectClock.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4FF0683E25A5F18700304E6B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4FF0684225A5F18700304E6B /* AccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewController.swift; sourceTree = ""; }; @@ -88,7 +88,7 @@ 4FF0684225A5F18700304E6B /* AccountViewController.swift */, 4FA419AE25AF93EC004CE0FC /* AlarmViewController.swift */, 4F8A607025A9160400D88DC3 /* AddAlarmViewController.swift */, - 4F9E458E25BA0558003F715D /* AlarmActivationViewController.swift */, + 4FD642DF25B4D5F30069171E /* AlarmActivationViewController.swift */, 4FF0684425A5F18700304E6B /* Main.storyboard */, 7C83963525AF375B0027A94C /* NotificationLogic.swift */, 4F98955125A9260400F51321 /* Net.swift */, @@ -183,7 +183,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4F9E458F25BA0558003F715D /* AlarmActivationViewController.swift in Sources */, 4F8A607125A9160400D88DC3 /* AddAlarmViewController.swift in Sources */, 4F98955225A9260400F51321 /* Net.swift in Sources */, 7C83963925AF68980027A94C /* TestingViewController.swift in Sources */, @@ -195,6 +194,7 @@ 4F509BD225AE22D100726227 /* Models.swift in Sources */, C7E638E825B88F8B00799512 /* MathExpressions.swift in Sources */, 7C83963625AF375B0027A94C /* NotificationLogic.swift in Sources */, + 4FD642E025B4D5F30069171E /* AlarmActivationViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ProjectClock/AlarmActivationViewController.swift b/ProjectClock/AlarmActivationViewController.swift index 1f9e798..bad2d6f 100644 --- a/ProjectClock/AlarmActivationViewController.swift +++ b/ProjectClock/AlarmActivationViewController.swift @@ -13,6 +13,12 @@ class AlarmActivationViewController: UIViewController var timer: Timer? var currentAlarm: Alarm? + //Outlets + @IBOutlet weak var puzzleView: UIView! + @IBOutlet weak var puzzleQuestionLabel: UILabel! + @IBOutlet weak var puzzleAnswerInput: UITextField! + var puzzleAnswers: [Int] = [] + init?(coder: NSCoder, currentAlarm: Alarm) { self.currentAlarm = currentAlarm @@ -27,6 +33,9 @@ class AlarmActivationViewController: UIViewController override func viewDidLoad() { super.viewDidLoad() + //Hide all inactive wakemethods + puzzleView.isHidden = true + timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(AlarmActivationViewController.playSound), userInfo: nil, repeats: true) setAlarmType() print(MathExpression.random()) @@ -48,7 +57,8 @@ class AlarmActivationViewController: UIViewController case "Jump": jumpAction() case "Puzzle": - puzzleAction() + self.puzzleAnswers = puzzleAction(puzzleQuestionLabel: puzzleQuestionLabel) + puzzleView.isHidden = false case "Smash": print("") default: @@ -57,8 +67,9 @@ class AlarmActivationViewController: UIViewController } } - @IBAction func debugForceStop(_ sender: Any) - { - timer?.invalidate() + @IBAction func checkPuzzleSolution(_ sender: Any) { + if puzzleAnswers.contains(Int(puzzleAnswerInput.text!)!) { + print("alarm solved") + } } } diff --git a/ProjectClock/Base.lproj/Main.storyboard b/ProjectClock/Base.lproj/Main.storyboard index 18d565f..98e9ab2 100644 --- a/ProjectClock/Base.lproj/Main.storyboard +++ b/ProjectClock/Base.lproj/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -639,22 +639,43 @@ - + + + + + + + + + + + + + + + + + + - - @@ -662,10 +683,15 @@ + + + + + - + @@ -701,6 +727,9 @@ + + + diff --git a/ProjectClock/MathExpressions.swift b/ProjectClock/MathExpressions.swift index 8c07acb..3628ba7 100644 --- a/ProjectClock/MathExpressions.swift +++ b/ProjectClock/MathExpressions.swift @@ -118,15 +118,19 @@ let c = MathExpression.random() } } +class QuadraticProb{ + //generates the roots + let root1 = Int.random(in: 1...10)//ax^2 + let root2 = Int.random(in: 1...10)//bx class QuadraticProb{ - + let a = Int.random(in: 1...10)//ax^2 let b = Int.random(in: 1...10)//bx let c = Int.random(in: 1...10)//c var roots = [Int]() - + func getProblem() -> String{ return "\(a)x^2 + \(b)x + \(c)" } @@ -134,7 +138,7 @@ class QuadraticProb{ //finds the roots of the quadratic **NOTE**: the return type is [Int], not a String func getAnswer() -> [Int]{ let d = Int(pow(Double(b), 2) - 4 * Double(a) * Double(c)) // discriminant - + // if d>0 , equation has two distinct real roots exist. if d > 0 { let x1 = Int((-Double(b) + sqrt(Double(d)))/(2*Double(a))) diff --git a/ProjectClock/NotificationLogic.swift b/ProjectClock/NotificationLogic.swift index 2f06fe5..8738f7d 100644 --- a/ProjectClock/NotificationLogic.swift +++ b/ProjectClock/NotificationLogic.swift @@ -8,6 +8,7 @@ import Foundation import CoreMotion import UserNotifications +import UIKit let motionManager = CMMotionManager() @@ -27,14 +28,15 @@ func jumpAction() { } -func puzzleAction() { +func puzzleAction(puzzleQuestionLabel: UILabel) -> [Int] { var problem = QuadraticProb() let answer = problem.getAnswer() let problemString = problem.getProblem() - print("Problem: \(problemString)") + puzzleQuestionLabel.text = "Solve: \(problemString)" print("Answer: \(answer)") + return answer } func smashAction() {