Swift初学者が電子レンジロジックを実装してみた!

#概要
現在、私はMENTAサービスを利用し、ヤマタクメンターにご指導いただいています。

ヤマタクメンターやサービスについて知りたい方はこちら！
(https://menta.work/plan/584)

その中で、今回は、応用学習の第２段ということで、
***「電子レンジロジックの実装」***の課題を行ったので、アウトプットしていきます。

なお、今回の課題はSwift初学者が作ったロジックであり、至らぬ点が多々あると思います。どうか、温かい目で見守っていただけると幸いです。

アドバイス等ありましたら、ご教授いただけると幸いです。


***環境***

-Playground

# 実装の要件

・電子レンジのワット数は900,600,200とする
・今回は、安全のために11分以上は加熱できないものとする

・タイマーの実装
　　・分と秒の概念を実装
　　・ 残り時間の出力
　　・残り時間が0秒になったら、「温め終了です」と出力し、タイマーを停止
　　・温める時間が11分以上だと「温めを開始できません！」、
　　 「タイマーを10分59秒以内に設定してください」と出力

・タイマーが10分59秒以内にセットされたら、温め可能フラグを返し、「温め開始!!」を出力
・選択されたワット数を出力

# 実装

```swift:VirtualVendingMachine.rb
import UIKit
import PlaygroundSupport

class VirtualMicrowave : UIViewController {

    //タイマーをセットしてください
    var timeSet = (min:0,sec:0)
    
    //Timerクラスの初期化
    var timer: Timer!
    
    //ワット数を決める
    enum powerConsumptionType{
        
        case bottun900W
        case bottun600W
        case bottun200W
     
        
    var displayName: String{
            
            switch self {
            
            case.bottun900W :
                
                return "900W"
            
            case.bottun600W :
            
                 return "600W"
                
            case.bottun200W :
                
                return "200W"
                
            }
        
    }
        
    }
    
    
    override func viewDidLoad() {
       super.viewDidLoad()
  
        //スタートタイマーを呼び出す
        startTimer()
        
   }
   
    
   override func viewWillAppear(_ animated: Bool) {
       super.viewWillAppear(animated)
   }
   
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
   }
   
   
    //温め可能フラグを返す
    func startWarm(type: powerConsumptionType) -> Bool {
    
    
       var isWarmable = false
        
       
        if  timeSet.min < 11 {
        
            print("温め開始！！:\(type.displayName)")
            
           return true
         
        
        }
        
        
        return isWarmable
        
        //カウントダウンタイマーを呼び出す
        countDownTimer()
      
 
    }
    
   
@objc func countDownTimer(){
       
  
    if timeSet.min == 0 && timeSet.sec == 0 {
           
           print("温め終了です")
           timer.invalidate()
  
 
   }else if timeSet.min > 10{
     
        
        print("温めを開始できません！")
        print("タイマーを10分59秒以内に設定してください")
        timer.invalidate()
        
    

    }else if timeSet.sec > 0 && timeSet.min < 11 {
        
    //秒数が0以上の時または10分以下の時
     
        timeSet.sec -= 1
        print("\(timeSet.min)分\(timeSet.sec)秒")
     
    
    } else if (timeSet.sec == 0) && timeSet.min > 0 {
    
    //秒数が0の時
      
        timeSet.sec += 59
        timeSet.min -= 1
    
        print("\(timeSet.min)分\(timeSet.sec)秒")

        
    }
    
        
    }
    
    //タイマーを起動するメソッド
    func startTimer() {
          timer = Timer.scheduledTimer(
               timeInterval: 1,
               target: self,
            selector: #selector(self.countDownTimer),
               userInfo: nil,
               repeats: true)
       }
    }

        
let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 300, height: 500))
let viewController = VirtualMicrowave()
viewController.view.backgroundColor = UIColor.gray
window.rootViewController = viewController
window.makeKeyAndVisible()
PlaygroundPage.current.liveView = window

let virtualMicrowave = VirtualMicrowave()
var isSuccessToWarm = virtualMicrowave.startWarm(type:.bottun200W)

print(isSuccessToWarm)

```

# まとめ

今回は、引数の使い方やPlaygroundの環境ではあるが、タイマーメソッドの使い方を学んだ。
ゼロからロジックを考えたので、基礎構文の理解が深まった。
追加機能を考えるとすれば、レンジ機能だけではなくオーブン、トースト機能などを追加してもいいかもしれません。