-
200926 - TILTIL/2021 2020. 9. 27. 02:31
iOS
가위바위보 게임을 하는 앱을 만들었다.
import Foundation enum RockScissorsPaper: Int { case rock = -1 case scissors = 0 case paper = 1 }
케이스를 열거형으로 선언했다. 원시값을 Int로 지정했다.
func makeStartingImage(slectedImage: UIImageView, imageName: String = "rock") { return slectedImage.image = UIImage(named: imageName) ?? nil } func makeImage(slectedImage: UIImageView, hand: RockScissorsPaper) { return slectedImage.image = UIImage(named: "\(hand)") ?? nil }
처음 시작 이미지를 정하는 메서드와 열거형을 파라미터로 받아 이미지를 생성하는 메서드를 만들었다,
두 함수를 하나의 함수로 만들고 싶었지만 실패했다.
func presentAlert(message: String) { let makeAlert = UIAlertController(title: "결과", message: message, preferredStyle: .alert) let actionAlert = UIAlertAction(title: "확인", style: .default) makeAlert.addAction(actionAlert) present(makeAlert, animated: false) }
저번부터 계속 만들어오던 Alert도 메서드로 구현했다.
let leftNum = Int.random(in: -1 ... 1) let rightNum = Int.random(in: -1 ... 1) let myHand = RockScissorsPaper(rawValue: leftNum) let yourHand = RockScissorsPaper(rawValue: rightNum) guard let mine = myHand,let yours = yourHand else { return } makeImage(slectedImage: leftImageView, hand: mine) makeImage(slectedImage: rightImageView, hand: yours)
열거형의 RawValue를 활용하면서 랜덤으로 이미지를 만들도록 했다.
guard let myHandRawValue = myHand?.rawValue, let yourHandRawValue = yourHand?.rawValue else { return } let result = myHandRawValue - yourHandRawValue switch result { case 0: presentAlert(message: "비김😅") case -1, 2: presentAlert(message: "승😀") default: presentAlert(message: "패😢") }
원시값의 차를 이용해서 switch문으로 분기시켰다.
case가 깔끔하게 나눠지지 않아서 아쉽지만 if를 사용했을 때보다 간결해졌다.
Swift 문법
새로운 개념을 공부하지 않고 지금까지 배웠던 부분들을 복습했다.
728x90'TIL > 2021' 카테고리의 다른 글
200930 - TIL (0) 2020.10.01 200928 - TIL (0) 2020.09.29 200925 - TIL (0) 2020.09.26 200923 - TIL (0) 2020.09.24 200921 - TIL (0) 2020.09.22