스위프트 베이스볼 게임 만들기 v0.3

v0.3 버전에서는 Enum을 활용하여 Strike, Ball 케이스를 분기하고, 변수에 Property Observer를 활용했습니다.

조금 더 똑똑하게 Smart Brain 만들기

수정사항: Enum, Property Observer 추가

class SmartBrain {
    
    private enum PickCase {
        case allStrike
        case ballAndStrike(strike: Int, ball: Int)
        case out
        func printString() -> String {
            switch self {
            case .out:
                return "3 Out 💩"
            case .ballAndStrike(strike: let s, ball: let b):
                return "S: \(s), B: \(b)"
            case .allStrike:
                return "YES👌🏻👏🏻♥️"
            }
        }
    }
    
    func compareCheck(arr1: [Int], arr2: [Int], myStr: String) -> (SL: String, HL: String) {
        var strike: Int = 0
        var ball: Int = 0
        var caseCheck: PickCase

        for i in 0..<arr1.count {
            if arr1[i] == arr2[i] {
                strike += 1
            }else if arr2.contains(arr1[i]) {
                ball += 1
            }
        }
        
        // Property Observer
        var historyStr: String?
        var displayStr: String = "" {
            didSet {
                historyStr = myStr + " ➜ " + displayStr + "\n"
            }
        }
        
        if strike + ball == 0 {
            displayStr = PickCase.out.printString()
        }else if strike == 3 {
            displayStr = PickCase.allStrike.printString()
        }else {
            displayStr = PickCase.ballAndStrike(strike: strike, ball: ball).printString()
        }

        return (SL: displayStr, HL: historyStr!)
    }
    
    // 랜덤의 3자리 Int 생성 함수
    func makeRandomList() -> [Int] {
        var randomNumberList: [Int] = []
        while randomNumberList.count < 3 {
            let randomNum: Int = Int(arc4random_uniform(10))
            if !randomNumberList.contains(randomNum) {
                randomNumberList.append(randomNum)
            }
        }
        return randomNumberList
    }
    
}