Skip to main content

레슨 3: 여러 While 루프를 사용한 프로젝트 흐름

이제 VR 로봇을 벽 미로 놀이터의 문자 'A'로 안내하는 텍스트 프로젝트를 만들었으니, 조건문과 센서 값을 사용하여 기술을 확장해 보겠습니다. 이 수업에서는 VR 로봇을 벽 미로 놀이터에서 숫자 '2'로 이동시킨 다음, 문자 'B'로 이동하려면 추가 명령이 필요한 이유를 알아봅니다. 미니 챌린지에서는 이러한 기술을 적용하여 벽 미로의 시작 부분에서 숫자 '3'까지 탐색하게 됩니다.

놀이터 중앙 하단의 녹색 화살표에서 VR 로봇이 출발하는 벽 미로 놀이터의 위에서 내려다본 모습입니다. 숫자 2는 빨간색 상자로 강조 표시되어 있으며, 미로의 왼쪽 아래 사분면 중앙에 위치하며, 문자 A 바로 왼쪽에 있습니다. 숫자 2는 세 개의 벽으로 둘러싸인 모서리에 있습니다.

학습 성과

  • 범퍼 센서가 눌릴 때까지 VR 로봇이 앞으로 주행하는 프로젝트의 프로그램 흐름을 설명하세요.

프로젝트 이름 바꾸기

  • 이전 수업의 프로젝트가 아직 로드되지 않았다면 Unit4Lesson2 프로젝트를 로드하세요.
  • 프로젝트 이름을 Unit4Lesson3로 바꾸세요.VEXcode VR 도구 모음에서 프로젝트 이름으로 Unit 4 Lesson 3을 표시합니다. 프로젝트 이름은 빨간색 상자로 강조 표시되어 있습니다.

     

 

'A' 문자로 구동되는 프로젝트의 흐름

이전 수업에서는 VR 로봇이 벽 미로 놀이터의 문자 'A'까지 이동했습니다. 벽 미로에서 새로운 위치로 이동하기 위한 준비에 따라 프로젝트 흐름을 분석해 보겠습니다.

VR 로봇이 놀이터 중앙 하단의 시작 위치에 있는 벽 미로 놀이터의 위에서 내려다본 모습. A라는 글자는 로봇의 바로 왼쪽에 있으며, 짧은 벽으로 구분되어 있습니다.
  • 벽 미로 놀이터의 'A' 문자로 운전하기 위한 프로젝트 흐름을 더 잘 이해하려면 이전 프로젝트를 수정하거나 이 기본 프로젝트와 일치하도록 새 프로젝트를 만드십시오.

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(좌, 90, 도)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(좌, 90, 도)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • 프로젝트에서 not 조건과 함께 while루프를 사용하는 경우에도 해당 프로젝트의 프로그램 흐름은 여전히 위에서 아래로 동일한 순서를 따릅니다. while루프를 사용하면 조건이 충족되는 동안 프로그램 흐름이 특정 지점에서 "일시 중지"될 수 있습니다. not연산자을 사용하면 조건이 False로 보고될 때까지 프로젝트가 루프에 머무를 수 있습니다. 그러면 프로젝트는 루프 밖의 다음 명령으로 흘러갑니다. 왼쪽 범퍼가 눌렸다는 등의 부울 조건은 True 또는 False 값을 보고합니다. VR 로봇을 문자 'A'까지 이동시키는 이 코드에서 VR 로봇은 왼쪽 범퍼가 눌리는 부울 조건이 참이 될 때까지 앞으로 이동합니다.
    문자 'A'까지 이동하기 위한 프로젝트의 흐름은 다음과 같습니다.위의 프로젝트 흐름을 설명하는 프로젝트 흐름도에서 왼쪽에 표시된 문자 A로 이동합니다. 오른쪽의 화살표는 프로젝트가 어떻게 진행되는지 나타냅니다. 첫째, 빨간색 순환 화살표는 범퍼가 눌리지 않은 동안 while 루프의 조건이 false를 반환하여 로봇이 앞으로 주행한다는 것을 보여줍니다. 녹색 아래쪽 화살표는 범퍼를 누르면 조건이 참으로 보고되어 프로젝트가 루프에서 벗어나 로봇이 왼쪽으로 90도 회전한다는 것을 보여줍니다. 이 시퀀스는 프로젝트의 각 루프마다 반복됩니다.

VR 로봇의 동작은 각while루프가 어떻게 실행되는지 보여줍니다. VR 로봇의 움직임을 함께 분석해 보면, 프로젝트에서while루프가 실행된 후 VR 로봇이 어디로 이동했는지 명확하게 볼 수 있습니다.왼쪽에는 세 개의 연속적인 while 루프가 포함된 Python 코드가 나와 있으며, 각 루프는 로봇이 왼쪽 범퍼가 눌릴 때까지 전진하도록 지시합니다. 각 루프에서 범퍼를 누르면 로봇이 특정 동작을 수행합니다.  첫 번째 루프에서는 로봇이 범퍼가 눌릴 때까지 앞으로 주행한 다음 90도 왼쪽으로 회전합니다. 오른쪽 이미지는 이 동작 후 미로에서 로봇의 위치를 보여주며 노란색 원으로 표시되어 있습니다.  두 번째 루프에서는 로봇이 범퍼가 눌릴 때까지 다시 앞으로 주행한 후 90도 왼쪽으로 회전합니다. 두 번째 이미지는 이번 턴 이후 미로에서 로봇의 업데이트된 위치를 보여줍니다.  세 번째이자 마지막 루프에서는 로봇이 범퍼가 눌릴 때까지 앞으로 주행합니다. 범퍼를 누르면 로봇이 움직임을 멈춥니다. 마지막 이미지는 미로 내에서 로봇이 멈춘 위치를 보여주며, 다시 노란색 원으로 강조 표시되어 있습니다.

 

숫자 '2'로 운전하세요

이 수업에서는 VR 로봇이 벽 미로 놀이터의 숫자 '2'로 주행하도록 프로젝트를 편집합니다!

놀이터 중앙 하단의 녹색 화살표에서 VR 로봇이 출발하는 벽 미로 놀이터의 위에서 내려다본 모습입니다. 숫자 2는 빨간색 상자로 강조 표시되어 있으며, 미로의 왼쪽 아래 사분면 중앙에 위치하며, 문자 A 바로 왼쪽에 있습니다. 숫자 2는 세 개의 벽으로 둘러싸인 모서리에 있습니다.
  • 2과의 프로젝트에서는 VR 로봇이 좌회전하여 'A' 문자로 이동합니다. 숫자 '2'를 찾아가려면 VR 로봇은 오른쪽으로 돌아서 앞으로 이동한 다음 왼쪽으로 돌아야 합니다.

    VR 로봇이 A 마커 위에 위치하여 왼쪽 벽을 바라보는 벽 미로 놀이터의 위에서 내려다본 모습입니다. 빨간색 화살표는 A를 가리키고, 세 개의 녹색 화살표는 2번으로 가는 경로를 보여줍니다. 녹색 화살표는 A 맞은편 벽을 향해 위쪽을 가리키고, 그다음 2번의 왼쪽에 있는 다음 벽을 향해 왼쪽을 가리키고, 그다음 2번이 있는 모서리를 향해 아래쪽을 가리킵니다.
  • 두 번째 turn_for명령의 방향을 왼쪽 대신 오른쪽으로 변경합니다. 이제 프로젝트는 다음과 같이 보일 것입니다.

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(좌, 90, 도)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(우, 90, 도)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • 아직 열려 있지 않으면 Wall Maze Playground 을 실행하고 프로젝트를 실행합니다.
  • VR 로봇이 숫자 '2'를 향해 운전을 시작하지만 벽 앞에서 멈춥니다. 따라서 VR 로봇은 벽에 닿으면 멈추는 대신 왼쪽으로 회전해야 합니다.

    VR 로봇이 문자 A 맞은편 벽을 바라보고 위를 가리키고 있는 월 미로 놀이터의 위에서 내려다본 모습입니다.
  • "재설정" 버튼을 선택하면 놀이터가 재설정되고 VR 로봇이 시작 위치로 돌아갑니다.놀이터 인터페이스 전체를 보여주는 벽 미로 놀이터. 놀이터 인터페이스의 왼쪽 하단에 있는 재설정 버튼은 빨간색 상자로 강조 표시됩니다.

     

  • VR 로봇을 숫자 '2'로 구동하기 위해 stop 명령을 제거하고 다음 명령으로 바꿔 코드를 편집합니다.

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(좌, 90, 도)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(우, 90, 도)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(좌, 90, 도)
    	
    	while not left_bumper.pressed():
    		drivetrain.drive(전진)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(좌, 90, DEGREES)
    
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • 아직 열려 있지 않으면 Wall Maze Playground 을 실행하고 프로젝트를 실행하세요.
  • VR 로봇이 벽 미로 놀이터에서 숫자 '2'를 향해 운전하는 모습을 지켜보세요!

    월 미로 놀이터를 위에서 내려다본 모습. VR 로봇은 이제 2번째 마커 위에 위치하며, 앞쪽이 벽에 밀착된 채 아래쪽 벽을 향하고 있습니다.
  • "재설정" 버튼을 선택하면 놀이터가 재설정되고 VR 로봇이 시작 위치로 돌아갑니다.

이 강의의 나머지 부분을 계속하려면 다음 버튼을 선택하세요.