Swift/IOS 앱구현

How to make an App-lesson8: 스위프트 UI 스터디

망삼드 2023. 4. 25. 17:54

https://youtu.be/YDtZrQjrp10

드디어 마지막 강의입니다..

이강의를 듣고 이분이 따로 운영하는 사이트에 등록해서 다른 강의들도 들어보려고 합니다

이번강의에선 저번에 만든 카드게임이 실제로 작동되도록 만들었습니다

 

deal 버튼을 누르면 바뀌고 이전 카드에서 컴퓨터가 이겼는지 플레이어가 이겼는지 계산해줍니다

이번 수업에선

1. 값이 바뀔 수 있게 하기

- 랜덤한 값이 들어가도록하기

2. 카드 값 계산하는 로직짜기

3. 점수 바꿔주기

 

 

이전에 변수로 선언해둔 부분을 @state를 붙여줬습니다 이렇게 해야 그 변수들의 값을 바꿀 수 있습니다

 

이번에 건들여준건 사실 이부분밖에없습니다

저번 수업에서 deal버튼을 누르면 deal card라고 프린트 되는 부분이였습니다

이번엔 이 function이

1. randomize the player card

2. randomizer the cpu card

3. updatae score

할 수 있도록 바꿔줬습니다

 

먼저 카드가 랜덤하게 나와야하기 때문에

player와 cpu의 카드 value를 Int.random(in : 2..14) 를통해 range를 지정한 random한 정수가 나오도록 설정해줬습니다

cpucard = "card" + String(CPUCardValue)

에서 보면 알수 있듯이 string들을 concat하는 것이기 때문에 Int를 뒤에 넣어주면 에러가 뜹니다

따라서 String()안에 넣어줘서 형변환을 시켜줍니다

 

 

또한 카드 값들에 따라 점수가 달라져야 하기때문에 

if 문으로 조건을 넣어주고 점수가 올라가도록 해줬습니다

 

 

전체코드입니다

import SwiftUI

struct ContentView: View {
    //card store
    @State var playerCard = "card7" //modify property
    @State var CPUCard = "card13"
    
    @State var playerScore = 0
    @State var cpuScore = 0
    
    var body: some View {
        ZStack{
            Image("background-plain")
            //imagesize가 screen size 보다 클경우 ignoresafearea를 안해줘도 다 채운다
            VStack{
                Spacer()
                Image("logo")
                Spacer()

                HStack{
                    Spacer()
                    Image(playerCard)
                    Spacer()
                    Image(CPUCard)
                    Spacer()
                }
                Spacer()
                //더블클릭하면 코드를 넣을 수 있게 만들어짐
                Button {
                    deal()
                } label: {
                    Image("button")
                }

                Spacer()
                HStack{
                    Spacer()
                    VStack{
                        Text("Plyaer")
                            .font(.headline)
                            .padding(.bottom,10.0)
                        //int값을 string으로 바꿔준다
                        Text(String(playerScore)).font(.largeTitle)
                        
                    }
                    Spacer()
                    VStack{
                        Text("CPU")              .font(.headline)
                            .padding(.bottom,10.0)


                        Text(String(cpuScore)).font(.largeTitle)
                        
                    }
                    Spacer()

                }
                .foregroundColor(.white)
                Spacer()
            }
        }
    }
    //print deal card하는 함수
    func deal(){
        //randomize the players card
        var playerCardValue = Int.random(in: 2...14)
        var CPUCardValue = Int.random(in: 2...14)
        playerCard = "card" + String(playerCardValue) // card와 Concat 해야하기 때문에
        //randomizer the cpu card
        CPUCard = "card" + String(CPUCardValue)
        //update score
        if playerCardValue > CPUCardValue {
            playerScore += 1
        }
        else if CPUCardValue > playerCardValue {
            cpuScore += 1
        }
        
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

 

 

이렇게 한 강의가 끝났네요

처음에 앱개발에 너무 어렵게 생각했는데 이렇게 하나씩 해결해 나가면.. 어떻게든 졸프를 잘 마무리 할 수 있지 않을까.. 하는 기대도 듭니다

아직 한참 멀었지만요 ...ㅎㅎ