iOS/swift

임의의 장소에 보석 놓기 코드공유 (swift playground - 코딩 배우기2)

돌맹이시터 2021. 5. 5. 16:54

 

 

 

 

swift playground의 코딩배우기2, 도전과제 중 '임의의 장소에 보석 놓기' 코드 공유합니다.

 

보석의 수가 처음에 랜덤으로 주어지고,

포털을 적절히 열고 닫으면서 모든 보석을 수집하는 퍼즐입니다.

 

어려웠던 점은 포털을 켜고 끄는 조건을 어떻게 줄 수 있을까 하는 것이었는데,

저는 걸음수를 따로 변수로 두고, 전체 맵을 돌아다닐 수 있도록 하면서

특정 위치에서 포털이 on/off 되게 작성했습니다.

 

아래의 코드로 해결했는데,

필요하신 분이 있다면 참고하셔서 본인의 코드를 작성하시면 될 것 같아요

 

 

 

let totalGems = randomNumberOfGems

var walkCount = 0
var gemCount = 0

func navAround() {
    if !isBlocked && isBlockedRight {
        moveForward()
    } else if isBlocked && !isBlockedRight {
        turnRight()
        moveForward()
    } else if !isBlocked && !isBlockedRight && isBlockedLeft {
        turnRight()
        moveForward()
    } else if isBlocked && isBlockedRight {
        turnLeft()
        turnLeft()
        moveForward()
    }
}

while gemCount != totalGems {
    if walkCount == 0 || (walkCount > 6 && walkCount < 14) || walkCount > 16 {
        pinkPortal.isActive = false
        bluePortal.isActive = false
    } else if walkCount == 6 || walkCount == 14 {
        pinkPortal.isActive = true
        bluePortal.isActive = true
    }
    if isOnGem {
        collectGem()
        gemCount += 1
    }
    navAround()
    walkCount += 1
}