ViewController.swift
class ViewController: UIViewController {
// 변수, 속성
@IBOutlet weak var mainLabel: UILabel!
@IBOutlet weak var myChoiceLabel: UILabel!
@IBOutlet weak var comChoiceLabel: UILabel!
@IBOutlet weak var myImgView: UIImageView!
@IBOutlet weak var comImgView: UIImageView!
// 랜덤수를 지정해서 강제로 optional 을 벗겨냈다.
var myChoice: Rps = Rps(rawValue: Int.random(in: 0...2))!
var comChoice: Rps = Rps.rock
// 함수, 메서드
// 화면에 들어오면 처음 실행되는 함수
override func viewDidLoad() {
super.viewDidLoad()
// 1. 첫번째/두번째 이미지뷰에 준비 이미지를 띄운다.
comImgView.image = #imageLiteral(resourceName: "ready")
myImgView.image = #imageLiteral(resourceName: "ready")
// myImgView.image = UIImage(named: "ready.png")
// 2. 첫번째/두번째 레이블에 준비라고 문자열을 띄운다.
comChoiceLabel.text = "준비"
myChoiceLabel.text = "준비"
}
@IBAction func rpsButtenTapped(_ sender: UIButton) {
// 1. 가위/바위/보를 선택해서 그 정보를 저장해야함.
// 2. 내가 선택한 것을 이미지뷰에 표시
// 3. 내가 선택한 것을 레이블에 표시
guard let title = sender.currentTitle else {return}
// 버튼의 문자를 가져온다.
// let title = sender.currentTitle!
switch title {
case "가위" :
myChoice = Rps.scissors
myImgView.image = #imageLiteral(resourceName: "scissors")
myChoiceLabel.text = "가위"
case "바위":
myChoice = Rps.rock
myImgView.image = #imageLiteral(resourceName: "rock")
myChoiceLabel.text = "바위"
case "보":
myChoice = Rps.paper
myImgView.image = #imageLiteral(resourceName: "paper")
myChoiceLabel.text = "보"
default:
break
}
}
@IBAction func selectButtenTapped(_ sender: UIButton) {
// 1. 컴퓨터가 랜덤 수 이미지뷰에 표시
// 2. 컴퓨터가 랜덤 수를 레이블에 표시
switch comChoice {
case Rps.scissors:
comImgView.image = #imageLiteral(resourceName: "scissors")
comChoiceLabel.text = "가위"
case Rps.rock:
comImgView.image = #imageLiteral(resourceName: "rock")
comChoiceLabel.text = "바위"
case Rps.paper:
comImgView.image = #imageLiteral(resourceName: "paper")
comChoiceLabel.text = "보"
}
// 3. 기존에 선택된 정보를 컴퓨터가 선택된 정보를 비교를 해서 판단해야한다.
if comChoice == myChoice {
mainLabel.text = "비겼다"
} else if comChoice == .rock && myChoice == .paper {
mainLabel.text = "이겼다"
} else if comChoice == .paper && myChoice == .scissors {
mainLabel.text = "이겼다"
} else if comChoice == .scissors && myChoice == .rock {
mainLabel.text = "이겼다"
} else {
mainLabel.text = "졌다"
}
}
@IBAction func resetButtenTapped(_ sender: UIButton) {
// 1. 컴퓨터가 준비 이미지를 이미지뷰에 표시
comImgView.image = #imageLiteral(resourceName: "ready")
// 2. 컴퓨터가 준비 문자열을 레이블에 표시
comChoiceLabel.text = "준비"
// 3. 내 선택 이미지에도 준비 이미지를 이미지뷰에 표시
myImgView.image = #imageLiteral(resourceName: "ready")
// 4. 내 선택 레이블에도 준비 문자열을 레이블에 표시
myChoiceLabel.text = "준비"
// 5. 메인레이블에도 선택하세요라는 문자열을 표시
mainLabel.text = "선택하세요"
// 6. 컴퓨터가 다시 랜덤 수를 선택하고 저장하는 것을 해야한다.
comChoice = Rps(rawValue: Int.random(in: 0...2))!
}
}
Rps.swift
import Foundation
// 원시값
enum Rps: Int {
case rock
case paper
case scissors
}