Today I Learned

20210711 Destiny project -2

돌맹이시터 2021. 7. 12. 00:48

 

Story.swift 파일 내에 구조체를 만들고, title / choice1 / choice2 를 각각 따로 저장하는 대신

하나의 배열에 넣어서 만들어봤다.

 

 

 

'Story' structure를 Story.swift에 만들어줌

 

 

 

 

 

StoryBrain.swift 안에 StoryBrain 구조체를 하나 만들었다.

구조체 안에서

위와 같이 3개의 스토리를 포함하는 'stories' 배열을 만들어줌

그리고, ViewController.swift에서 사용하기 위한 

getStoryTitle, getStoryChoice 함수를 만들어줌

 

 

 

 

 

ViewController.swift 는 위와 같이 수정하였다.

 

StoryBrain.swift에서 만든 구조체를 사용하기 위해 storyBrain이라는 하나의 변수를 선언해주고

 

updateUI 함수를 하나 만들어서, 나중에 코드를 반복적으로 작성하지 않게 만드는 동시에

viewDidLoad() 코드블럭을 더 간결하게 만들었으며 

우선 첫 번째 스토리가 각각 타이틀, 버튼들에 나오도록 만들었다.

 

 


 

 

 

Challenge ) stories들을 연결시키기

 

첫 번째 스토리에서

'Take a left'를 선택하면 2번 스토리가 화면에 나오게 하고,

'Take a right'를 선택하면 3번 스토리가 화면에 나오도록 할 것.

 

 

 

'choiceMade()' IBAction에는 두 버튼이 모두 연결된 상태이다.

 

 

    func getStoryChoice(buttonNumber : Int) -> String {
        if buttonNumber == 0 {
            return stories[storyNumber].choice1
        } else {
            return stories[storyNumber].choice2
        }
    }
    
    mutating func nextStory(usersChoice userchoice: String) {
        if userchoice == stories[storyNumber].choice1 {
            storyNumber += 1
        } else if userchoice == stories[storyNumber].choice2 {
            storyNumber += 2
        }
    }

 

StoryBrain.swift

 

우선 주어진 스토리가 3가지인데.. 

별다른 조건이 없었기 때문에 storyNumber를 각각의 조건에 따라 다르게 증가시키도록 코드를 작성했다.

 

 

 

    @IBAction func choiceMade(_ sender: UIButton) {
        
        storyBrain.nextStory(usersChoice: sender.currentTitle!)
        updateUI()
    }

 

 

ViewController.swift

 

버튼을 눌렀을 때 위에서 작성한 코드가 실행되도록 하였다.

 

 

일단은 테스트해봤을 때 주어진 challenge는 이룬 것 같다.

 

 

 


 

 

 

'Today I Learned' 카테고리의 다른 글

20210713 BMI calculator project -1  (0) 2021.07.15
20210712 Destiny project -3  (0) 2021.07.13
20210706 Destiny project -1  (0) 2021.07.06
20210701 Quizzler project - 5  (0) 2021.07.01
20210628 Quizzler project - 4 (with MVC design pattern)  (0) 2021.06.29