스토리 3개가 전부였을 때는 이전까지의 코드에 문제가 없었지만,
스토리의 수가 늘어날 수록 코드가 복잡해지게 된다.
MVC design pattern과 구조체를 다루는 것을 연습하는 정도에 의미를 두고
다른 로직을 사용하기 위해 코드를 수정했다.
먼저 stories 배열에 제공받은 Story들을 넣었다.
Story(
title: "Your car has blown a tire on a winding road in the middle of nowhere with no cell phone reception. You decide to hitchhike. A rusty pickup truck rumbles to a stop next to you. A man with a wide brimmed hat with soulless eyes opens the passenger door for you and asks: 'Need a ride, boy?'.",
choice1: "I'll hop in. Thanks for the help!", choice1Destination: 2,
choice2: "Better ask him if he's a murderer first.", choice2Destination: 1
),
Story(
title: "He nods slowly, unfazed by the question.",
choice1: "At least he's honest. I'll climb in.", choice1Destination: 2,
choice2: "Wait, I know how to change a tire.", choice2Destination: 3
),
Story(
title: "As you begin to drive, the stranger starts talking about his relationship with his mother. He gets angrier and angrier by the minute. He asks you to open the glovebox. Inside you find a bloody knife, two severed fingers, and a cassette tape of Elton John. He reaches for the glove box.",
choice1: "I love Elton John! Hand him the cassette tape.", choice1Destination: 5,
choice2: "It's him or me! You take the knife and stab him.", choice2Destination: 4
),
Story(
title: "What? Such a cop out! Did you know traffic accidents are the second leading cause of accidental death for most adult age groups?",
choice1: "The", choice1Destination: 0,
choice2: "End", choice2Destination: 0
),
Story(
title: "As you smash through the guardrail and careen towards the jagged rocks below you reflect on the dubious wisdom of stabbing someone while they are driving a car you are in.",
choice1: "The", choice1Destination: 0,
choice2: "End", choice2Destination: 0
),
Story(
title: "You bond with the murderer while crooning verses of 'Can you feel the love tonight'. He drops you off at the next town. Before you go he asks you if you know any good places to dump bodies. You reply: 'Try the pier.'",
choice1: "The", choice1Destination: 0,
choice2: "End", choice2Destination: 0
)
Story.swift의 Story 구조체에 property를 2개 추가했다.
struct Story {
let title : String
let choice1 : String
let choice1Destination : Int
let choice2 : String
let choice2Destination : Int
}
각각의 choice에 따른 choiceDestination을 사용할 것이며,
nextStory() method에서 storyNumber 대신 choice1Destination / choice2Destination을
각각의 선택에 따라 사용할 것이다.
위의 Story Outline대로 어플이 실행되도록 코드를 수정할 것이다.
nextStory() 코드블럭을 위와 같이 수정해서
의도했던 것처럼 실행되는 것을 확인할 수 있었다.
결과만 보면 간단하지만
이번 프로젝트는 아무런 도움 없이 코드를 작성했어서 생각보다 시간이 오래 걸렸다.
구조체가 무엇인지 알고있는 것과
구조체를 실제로 작성하고, 코드를 사용해 구조체 안의 property, method 등을 실제로 사용할 줄 아는 것은
조금 다른 것 같았다.
꼭 구조체 뿐 아니라 다른 것들도 마찬가지일 듯 한데,
이번 프로젝트를 통해서 그래도 구조체나 MVC를 사용하는 방법을 어느정도 감을 잡지 않았나..
하는 생각이 든다.
갈 길이 멀다.
'Today I Learned' 카테고리의 다른 글
20210715 BMI caculator project -2 (0) | 2021.07.17 |
---|---|
20210713 BMI calculator project -1 (0) | 2021.07.15 |
20210711 Destiny project -2 (0) | 2021.07.12 |
20210706 Destiny project -1 (0) | 2021.07.06 |
20210701 Quizzler project - 5 (0) | 2021.07.01 |