본문 바로가기
Swift랑 친해지기/Swift PlayGround

세상의 가장자리 - 코딩배우기2

by 데브킹덕 2022. 1. 5.

var ruby = 0
var switchNum = 0

while switchNum < 6{
    if !isBlockedLeft {
        turnLeft()
    }
    if isBlocked {
        turnLeft()
        turnLeft()
    }
    if isOnClosedSwitch{
        toggleSwitch()
        switchNum += 1
        if switchNum == 1 {
            turnRight()
            turnRight()
            greenPortal.isActive = false
        }
        if switchNum == 4 {
            greenPortal.isActive = true
        }
        if switchNum == 5 {
            orangePortal.isActive = false
            moveForward()
            turnRight()
        }
    }
    if isOnGem{
        collectGem()
        ruby += 1
        if ruby == 1  {
            greenPortal.isActive = false
            orangePortal.isActive = false
        }
        if ruby == 6{
            orangePortal.isActive = true
        }
    }
    moveForward()
}

 

1. ruby와 switchNum 이라는 변수에 값 0을 준다. 

var ruby = 0
var switchNum = 0

2. 내가 미션을 클리어 하기 위해 이동할 방향을 선정한다.

왼쪽이 막혀있지 않으면 왼쪽으로 돌아라라는 개념을 끝까지 쓰기 위해 노력해보았다 .

앞이 막혀 있다면 왼쪽으로 뒤돌기도 만들었다. 

if !isBlockedLeft {             // 왼쪽이 막혀있지 않다면
        turnLeft()              // 왼쪽으로 회전해라
    }
    if isBlocked {              // 앞이 막혀있다면
        turnLeft()
        turnLeft()              // 왼쪽으로 회전해 뒤를 돌아봐라
    }

3. 스위치에 관련하여 코드를 먼저 짜면서 스위치가 켜져있는 개수에 따라 포털이 닫히고 열림을 설정해 보았다. 

    if isOnClosedSwitch{                    // 스위치가 닫혀있으면
        toggleSwitch()                      // 스위치를 키세요
        switchNum += 1                      // switchNum이라는 변수에 +1을 하세요.
        if switchNum == 1 {                 // 만약에 switchNum이 1이 되면은 
            turnRight()                       
            turnRight()                     // 오른쪽으로 뒤 돌아보세요
            greenPortal.isActive = false    // 그린포탈을 닫아주세요 (나머지 3개의 스위치를 켜기위해) 
        }
        if switchNum == 4 {                 // 만약에 switchNum이 4가 되면은
            greenPortal.isActive = true     // 그린포탈을 열어주세요 (보석을 먹기 위해 이동)
        }
        if switchNum == 5 {                 // 만약에 switchNum이 5가 되면은
            orangePortal.isActive = false   // 오렌지포탈을 닫아주세요
            moveForward()                   // 한칸 이동하고
            turnRight()                     // 오른쪽을 봐주세요 (마지막 스위치를 켜기 위하여 방향설정)
        }
    }

4. 마찬가지로 보석에 관련하여 코드를 짜면서 보석에 개수에 따라 포털이 닫히고 열림을 설정해 보았다.

    if isOnGem{                              // 만약에 보석이 있다면
        collectGem()                         // 보석을 수집하고
        ruby += 1                            // ruby 변수 값에 +1을 한다.
        if ruby == 1  {                      // ruby가 만약 1이라면
            greenPortal.isActive = false     // 그린포탈이 닫히고
            orangePortal.isActive = false    // 오렌지 포탈이 닫힌다. (보석을 수집하기 위하여)
        }
        if ruby == 6{                        // ruby가 만약 6이라면
            orangePortal.isActive = true     // 오렌지 포탈을 연다. ( 스위치 2개 있는곳에 가기 위해)
        }
    }

5. 마지막으로 while 문으로 반복하게 한다. 

while switchNum < 6 {   // 루트를 정했기 때문에 스위치 6이되면 반복이 되지 않게 설정하였다.
    //이동 코드
    moveforward()       // 반복문이 실행되는 동안 앞으로 한칸 이동하는것을 고정적으로 설정해두었다.
}

 

 

* 세상의 가장자리 - 코딩배우기 2

* Swift Playground 스위프트 플레이그라운드 

이번문제는 왕초보한테는 최대의 난제였다. 

전체를 6번은 코드를 갈아 엎은 것 같다.