고민사항🤔 맵을 천천히 살펴보니 다음과 같은 결론을 얻을 수 있었다. 1. 블루포탈로 이동 2. 잼이 1개이상일 시 블루포탈 비활성화 3. 잼을 먹음 4. 잼이 2개라면 블루포탈 활성화 and 핑크포탈 비활성화 5. 잼이 3개라면 핑크포탈 활성화 pinkPortal.isActive = false var gemCount = 0 var switchCount = 0 func move() { if !isBlocked { moveForward() } else { turnLeft() } } func collect() { if isOnGem { collectGem() gemCount += 1 } } func potalHandler() { if gemCount == 1 { bluePortal.isActive = fal..
고민 🤔 1. while문의 실행 조건 > 보석을 수집할 때 동일한 수의 스위치를 작동시켜야한다. var gem = 0 //보석을 할당할 변수 var switchCount = 0 //스위치를 할당할 변수 두개의 변수에 할당된 정수가 같아질때까지 작동 2. 초기엔 둘 다 0임으로 while문에 || (or)연산자를 통해 추가 조건을 작성해준다 while gem == 0 || gem != switchCount { //여기에 움직임, 보석수집, 스위치 On코드 작성 } 3. 움직임에 대한 코드 작성 앞이 막혀있지 않다면 앞으로 직진 왼쪽이 막혀있다면 오른쪽으로 턴, 오른쪽이 막혀있다면 왼쪽으로 턴 func moveFlow() { if !isBlocked{ moveForward() } else if isBloc..
고민할 사항🤔 주어진 문제를 정리해보면 1. 보석은 3개만 수집되어야한다. 2. 스위치는 4개만 작동되어야한다. Flow 생각 1. 보석을 담은 변수와 , 스위치 카운터를 담은 변수가 있어야한다. var gemCounter = 0 var switchCounter = 0 2. 하나씩 추가하며 조건에 충족하면 더이상 보석을 수집하거나 스위치를 누르면 안된다. while gemCounter < 3 || switchCounter < 4 { //조건을 만족할때까지 실행될 코드 작성 } 3. 움직임 - 왼쪽이 막혀있지 않다면 왼쪽으로 돌기 - 오른쪽이 막혀있지 않다면 오른쪽으로 돌기 - 그 외의 경우에는 직진 func moveFlow() { if !isBlockedLeft { turnLeft() moveForwar..
Swift에서 프로퍼티, 인스턴스 메서드, 타입 메서드는 다음과 같은 의미를 가집니다 프로퍼티 (Properties): 프로퍼티는 클래스, 구조체, 또는 열거형과 같은 타입에 값을 저장하는 변수나 상수입니다. 이들은 인스턴스 프로퍼티와 타입 프로퍼티로 나뉩니다. 인스턴스 메서드 (Instance Methods): 특정 클래스, 구조체, 또는 열거형의 인스턴스에 속하는 메서드입니다. 이 메서드들은 특정 타입의 인스턴스에 대해 호출되며, 해당 인스턴스의 데이터에 접근하거나 수정하는 기능을 수행할 수 있습니다. 타입 메서드 (Type Methods): 타입 자체에 연결된 메서드입니다. static 키워드를 사용하여 선언하며, 클래스의 경우 class 키워드를 사용하여 재정의가 가능한 타입 메서드를 만들 수도 ..
이 글은 아래 링크를 보고 나름대로의 해석을 거쳐 정리된 문서입니다. ~ ! https://docs.swift.org/swift-book/documentation/the-swift-programming-language/protocols/ Documentation docs.swift.org 서문 프로토콜은 특정 작업이나 기능에 적합한 메서드, 속성 및 기타 요구사항들의 청사진을 의미합니다. 클래스, 구조체, 또는 열거형은 이러한 프로토콜을 채택하여 요구사항들을 실제로 구현합니다. 프로토콜의 요구사항을 만족시키는 모든 타입으은 해당프로토콜을 준수한다고 말할 수 있습니다. 프롵모콜을 확장하여 일부 요구사항들을 구현하거나 준수하는 타입들이 이용할 수 있는 추가 기능을 구현할 수도 있습니다. 프로토콜 구문 프로토..
NavigationCotroller는 왜 사용할까? 애플 공식문서를 확인해보면 이미지로 한눈에 알 수 있다. 밑에 이미지 처럼 View들의 계층을 Stack구조로 관리 할 수 있게된다. 즉 선입후출 구조로 View들이 계층일 이루게 해주는 역할을 한다. `NavigationCotroller`을 적용한다면 View들은 애플이 친절하게 이미 구현해 놓은 강력한 기능들을 사용 할 수 있다. 애플 공식문서에 나온 NavigationController 특징 요약 UINavigationController는 하나 이상의 뷰 컨트롤러를 관리하는 컨테이너 뷰 컨트롤러이며. 이 인터페이스에서는 한 번에 하나의 뷰 컨트롤러만 표시됨. 뷰 컨트롤러는 순서가 있는 배열(네비게이션 스택)을 통해 관리되며 배열의 첫 번째 뷰 컨트..
Swift는 다양한 제어 흐름 (control flow) 구문을 제공함. For-in Loops 범위가 정해져 있거나 반복하고자 하는 element가 명확할때 사용 (범위연산자, 배열, 등) let names = ["Anna", "Alex", "Brian", "Jack"] for name in names { print("Hello, \(name)!") } // Hello, Anna! // Hello, Alex! // Hello, Brian! // Hello, Jack! 딕셔너리의 key : value 값을 활용해 사용 가능 딕셔너리의 순서는 정해져 있지 않음으로 랜덤값으로 출력됨 let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] for (animalName, ..