가위바위보 게임 앱

쏘스야·2023년 4월 5일
0

ios 개발자의 첫걸음

목록 보기
43/61

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
}
profile
개발자

0개의 댓글