Skip to main content

레슨 4: 중첩 루프를 사용한 프로젝트 흐름

다음 두 개의 디스크를 모으세요

  • 이제 VR 로봇이 빨간색 디스크를 마주보고 있으므로, VR 로봇은 파란색 디스크를 모으는 데 사용했던 것과 동일한 동작을 반복해서 빨간색 디스크를 집어 올려 옮겨야 합니다. 디스크를 줍기 위해 앞으로 운전하고, 돌아서서 같은 색깔의 골대로 돌아와 디스크를 떨어뜨리는 행동입니다.

    디스크 무버 놀이터의 위에서 내려다본 모습. 점선 화살표는 VR 로봇이 빨간 골에서 빨간 디스크를 모아 골에 떨어뜨리는 경로를 나타낸 다음, 오른쪽을 가리키면 녹색 골로 이동합니다.
  • 첫 번째 빨간색 디스크가 이동되면 VR 로봇은 녹색 목표 지점으로 이동하여 파란색과 빨간색 디스크를 이동하는 데 사용된 것과 동일한 동작을 수행하여 첫 번째 녹색 디스크를 이동해야 합니다.

    시작 부분에 있는 디스크 무버 놀이터의 위에서 내려다본 모습. 점선 화살표는 로봇이 각 디스크를 수집하기 위해 이동해야 하는 경로를 나타냅니다. 화살표는 각 골대에서 첫 번째 디스크를 가리키고, 추가 오른쪽 화살표는 각 골대 영역 사이를 가리킵니다.
  • 동작을 여러 번 반복하려면 루프를 사용할 수 있습니다.
    VEXcode VR Python의 주요 정의 내에서 루프 명령을 실행합니다. 이 명령은 첫 번째 줄에 괄호 안에 콜론을 사용하여 값 범위를 읽고, wait 명령 아래에 들여쓰기를 하여 괄호 안에 5, MSEC를 사용하여 wait을 읽습니다.
  • 프로젝트 상단, 첫 번째 주석 위에 for 루프를 추가하고 range 함수 매개변수를 '3'으로 설정합니다. for 루프가 주 정의 내에서 들여쓰기되었는지 확인하세요.

    def main():
        for repeat_count in range(3):
            wait(5, MSEC)
  • 에서루프로 코드를 복사하려면 들여쓰기에 세심한 주의를 기울여야 합니다. 먼저wait명령 앞에 공백을 추가하여 루프가 다음과 같이 보이도록 합니다.

    def main():
        for repeat_count in range(3):
    
    
            
            wait(5, MSEC)
  • 다음으로,for루프에 넣을 명령을 선택하고wait명령 위에 복사하여 붙여넣습니다. 단순히 복사하여 붙여 넣으면 들여쓰기가 정확하지 않다는 점에 유의하세요. for루프의 회색 표시선이 끊어지고wait명령과 연결이 끊어졌습니다. 이는 프로젝트가 의도한 대로 실행되지 않을 것이라는 시각적 신호입니다.위의 프로젝트를 for 루프에 복사해서 붙여넣었는데 들여쓰기가 잘못되었습니다. 다음 코드 블록에 올바른 들여쓰기가 표시되어 있습니다.
  • 에서까지의 루프 안에 있는 명령을 선택하고 'Tab'을 사용하여 루프 안에 있는 명령을 올바르게 들여쓰기합니다. 올바르게 들여쓰기가 이루어지면 회색 표시선이 for루프와 wait명령을 연결하여 바깥쪽 루프의 경계를 보여줍니다. 완료되면 프로젝트는 다음과 같습니다. 

    def main():
        for repeat_count in range(3):
            # 1. Down Eye Sensor
            을 사용하여 디스크로 드라이브합니다. down_eye.near_object()가 아닌 경우:
                drivetrain.drive(FORWARD)
                wait(5, MSEC)
            drivetrain.stop()
    
            # 2. 디스크
            집어 올립니다. magnet.energize(BOOST)
    
            # 3. 거리 센서를 사용하여 목표 지점까지 주행
            drivetrain.turn_to_heading(180, DEGREES)
            while front_distance.get_distance(MM) > 200:
                drivetrain.drive(FORWARD)
                wait(5, MSEC)
            drivetrain. stop()
    
            # 4. 목표
            에 디스크를 놓습니다. magnet.energize(DROP)
            drivetrain.drive_for(REVERSE, 100, MM)
    
            # 5. 방향을 돌려 다음 목표지점으로 이동합니다.
            drivetrain.turn_to_heading(90, DEGREES)
            drivetrain.drive_for(FORWARD, 800, MM)
    
            # 6. 디스크
            드라이브트레인으로 전환.turn_to_heading(0, DEGREES)  
    
        wait(5, MSEC)
  • 위에서 설명한 대로 명령을 이동하고 들여쓰기를 조정하는 방법은 아래 영상을 시청해 보세요. 비디오 클립에서는 프로젝트의 6개 댓글 섹션이 강조 표시되고, 상황에 맞는 메뉴가 열립니다. '잘라내기' 옵션을 선택한 다음 커서를 에서 루프 명령 아래에 놓습니다. 컨텍스트 메뉴가 다시 열리고 '붙여넣기'가 선택됩니다. 그러면 명령은 에서 루프 내에 있지만 들여쓰기가 잘못되었습니다. 6개의 주석 섹션이 다시 강조 표시되고 키보드의 'Tab'을 눌러 루프 내에서 프로젝트를 올바르게 들여쓰기합니다.
비디오 파일
  • Disk Mover Playground가 아직 열려 있지 않으면 열고 프로젝트를 실행합니다.
  • 이 프로젝트를 실행하면, VR 로봇이 각 색상의 디스크를 하나씩 집어서 해당 색상의 목표에 떨어뜨립니다.

    프로젝트가 끝난 후 VR 로봇을 위에서 내려다본 모습입니다. 각 색깔 디스크가 일치하는 골에 하나씩 들어 있고, VR 로봇이 오른쪽 하단 모서리에 있는 녹색 골 가장자리의 오른쪽 벽을 향하고 있습니다.

귀하의 정보를 위해

VR 로봇이 계속해서 벽을 향해 돌진하는 모습이 눈에 띕니다. 이 프로젝트에서는 VR 로봇에게 오른쪽으로 방향을 돌려 다음 목표를 향해 세 번 주행하라고 지시했기 때문에 이러한 행동이 예상됩니다. 첫 번째는 파란색에서 빨간색으로 운전하는 것입니다. 두 번째는 빨간색에서 초록색으로 가는 것이고, 세 번째는 초록색에서 벽으로 가는 것입니다. 왜냐하면 다른 색깔의 골이 없기 때문입니다. VR 로봇이 벽에 부딪히면 프로젝트를 중지하세요. VR 로봇이 녹색 디스크를 집어 올려 이동한 후 멈추도록 프로젝트를 개선할 수 있지만, 이렇게 하면 프로젝트 전반적인 복잡성이 증가할 것입니다.

프로젝트가 끝난 후 VR 로봇을 위에서 내려다본 모습. 왼쪽 모서리에 플레이그라운드 창의 중지 버튼이 강조 표시되어 있습니다. 놀이터에서, 정지 버튼을 눌렀을 때, 일치하는 골에 각 색깔 디스크를 하나씩 넣고, 녹색 골 중앙의 오른쪽 벽을 바라보는 VR 로봇을 놓습니다.

 

 

질문

아래 링크를 선택하여 수업 퀴즈에 참여하세요.

Google 문서 / .docx / .pdf