Swift랑 친해지기/Swift PlayGround

AND연산자 사용 - 이것 및(AND) 저것 확인하기

데브킹덕 2021. 12. 27. 15:38

초반 AND연산자를 이용해서 연습해 본 코드 

보석이 없을경우 공백으로 놓아야 되서 문제가 되지 않을까라는 생각이 들어서 

어떻게 해야 공백이 생기지 않을까 고민을 겁나 해보았다...  

(다행히 공백을 두어도 실행은 되었다...)

for i in 1 ... 7 {                                  
    moveForward()
    if isOnGem && !isBlockedLeft {    //보석이 있고, 왼쪽에 막혀있지 않을경우
        collectGem()                  // 보석을 수집해라
    }else if !isOnGem{                // **문제발생**보석이 없을경우
                                      // 넣을것이 없어 공백으로 두었다.
    }else if isOnGem && isBlockedLeft {     //보석이 있고 왼쪽이 벽으로 막혀있다면
        collectGem()                     // 보석을 수집하고
        turnRight()                      // 오른쪽으로 돌고
        moveForward()                      
        moveForward()                    // 앞으로 두칸 이동
        if isBlocked && isOnClosedSwitch{   //앞이 막혀있고 스위치가 닫혀있으면
            toggleSwitch()             //스위치를 누르고
            turnLeft() 
            turnLeft()                // 왼쪽으로 뒤돌아보게 하고
            moveForward()
            moveForward()             // 앞으로 두칸 이동
            turnRight()               // 오른쪽으로 돌아라 
        }
    }
    
}

 

isBlockedLeft 함수를 사용하지 않을 경우도 연습해 보았다.

for i in 1 ... 7 {         // 7번동안 반복
    moveForward()          // 앞으로 한칸이동
    turnLeft()             // 왼쪽으로 돌아라(벽이 있는지 확인 하기 위함)
    if isOnGem && !isBlocked {     //보석이 자리에 있고 앞이 막혀있지 않다면 
        collectGem()               // 보석을 수집하고
        turnRight()                // 오른쪽으로 돌아라
    }else if !isOnGem{             // 보석이 자리에 있지 않는다면
        turnRight()                // 오른쪽으로 돌아라 
    }else if isOnGem && isBlocked {     //보석이 있는데 앞이 막혀 있다면
        collectGem()               // 보석을 수집하고
        turnRight()                
        turnRight()                // 오른쪽으로 두번 돌아 뒤돌아보기 
        moveForward()              
        moveForward()              // 앞으로 두칸 이동
        if isBlocked && isOnClosedSwitch{   //만약 벽에 막혀있으면서 스위치가 꺼져있다면
            toggleSwitch()           //스위치를 키고
            turnLeft()
            turnLeft()               // 왼쪽으로 두번 돌아 뒤돌아보기
            moveForward()
            moveForward()            // 앞으로 두칸 이동
            turnRight()              // 오른쪽으로 돌아라
        }
    }
    
}

최대한 간단하게 연습해본 코드

여러번 만지면서 보기 편하게는 바꾼것 같긴하다.. 

 

for i in 1 ... 7 {                       // 7번동안 반복
    moveForward()                  		 // 앞으로 한칸 이동
    if isBlockedLeft && isOnGem {		 // 왼쪽에 벽으로 막혀있고 보석이 있으면
        collectGem()				     // 보석을 수집하고
        turnRight() 					 // 오른쪽으로 돌아서
        moveForward()	 				 
        moveForward() 	 	 	 	 	 // 앞으로 두칸 이동
        toggleSwitch() 	 	 	 	 	 // 스위치를 누른다
        turnRight() 	 	 	 	 	 
        turnRight() 		 	 	 	 // 오른쪽으로 두번 돌아 반바퀴 회전
        moveForward()
        moveForward() 	 	 	 	 	 // 앞으로 두칸 이동
        turnRight() 	 	 	 	 	 // 오른쪽으로 돌기
    }else if !isBlockedLeft{ 	 	 	 // 왼쪽에 벽으로 막혀있지 않으면 
        collectGem()   	 	 	 	 	 // 보석을 수집해라 
    }               	 	 	 	 	 // 왼쪽에 벽으로 막혀있으면 그냥 pass~
    
}

Swift Playground - 코딩배우기1  이것 및(AND) 저것 확인하기

논리연산자AND