Skip to main content

บทเรียนที่ 4: การใช้อนันต์ขณะลูป

การแก้ปัญหาเขาวงกตดิสก์

การสร้างโครงการ

  • โหลดโครงการ Unit7Lesson3 จากบทเรียนก่อนหน้าหรือสร้างโครงการใหม่ตามที่แสดงที่นี่เพื่อเริ่มต้น
def main ():
	# If front eye detects green then turn right
    if front_eye.detect (GREEN): drivetrain.turn_for
        (RIGHT, 90, DEGREES)

    # If front eye detects blue then turn left
    if front_eye.detect (BLUE): drivetrain.turn_for
        (LEFT, 90, DEGREES)

    # If front eye detect red then stop
    if front_eye.detect (RED): 
        drivetrain.stop ()

    # If front eye detect none then drive forward
    if front_eye.detect (NONE): 
        drivetrain.drive (FORWARD)
  • เปลี่ยนชื่อ โครงการUnit7Lesson4แถบเครื่องมือ VEXcode VR พร้อมกล่องชื่อโปรเจกต์ที่เรียกออกมา ชื่อโครงการหน่วยที่ 7 บทเรียนที่ 4

     

  • ลากหรือพิมพ์อนันต์ใน ขณะ ที่ลูปไปที่ด้านบนของโครงการและตั้งเงื่อนไขเป็นจริง
def main ():
    while True:
    	รอ (5, มิลลิวินาที)
  • ย้ายคำสั่ง wait เพื่อสร้างพื้นที่สำหรับคำสั่งที่จะเข้าไปในลูป while แบบอนันต์
def main ():
    while True:
    
    
    	รอ (5, มิลลิวินาที)
  • ภายในอนันต์ใน ขณะที่ วนซ้ำให้คัดลอกและวางข้อความก่อนหน้า หาก ข้อความอยู่ภายในวนซ้ำ อย่าลบคำสั่ง wait ที่ด้านล่างของลูป while โปรเจกต์ของคุณอาจเป็นแบบนี้ โปรดทราบว่าการคัดลอกและวางคำสั่งด้วยวิธีนี้ไม่ได้ส่งผลให้เกิดการเยื้องที่ถูกต้อง
def main ():
    while True:
        
    # If front eye detects green then turn right
    if front_eye.detect (GREEN): drivetrain.turn_for
        (RIGHT, 90, DEGREES)

    # If front eye detects blue then turn left
    if front_eye.detect (BLUE): drivetrain.turn_for
        (LEFT, 90, DEGREES)

    # If front eye detects red then stop
    if front_eye.detect (RED): 
        drivetrain.stop ()

    # If front eye detect none then drive forward
    if front_eye.detect (NONE): drivetrain.drive 
        (FORWARD)

    wait (5, MSEC)
  • จำไว้ว่าการเยื้องมีความสำคัญมากใน VEXcode VR Python เพื่อให้การไหลของโครงการดำเนินการตามที่ตั้งใจไว้ คำสั่ง if จะต้องถูกเยื้องเข้าไปภายในลูป while ที่ไม่มีที่สิ้นสุด เลือกคำสั่ง if แล้วกด 'Tab' เพื่อย่อหน้าเข้าไปในลูป while แบบอนันต์ เมื่อเยื้องกันอย่างถูกต้องโปรเจกต์ของคุณควรมีลักษณะดังนี้: 
def main ():
    while True:
        
        # If front eye detects green then turn right
        if front_eye.detect (GREEN): drivetrain.turn_for
            (RIGHT, 90, DEGREES)

        # If front eye detects blue then turn left
        if front_eye.detect (BLUE): drivetrain.turn_for
            (LEFT, 90, DEGREES)

        # If front eye detects red then stop
        if front_eye.detect (RED): 
            drivetrain.stop ()

        # If front eye detect none then drive forward
        if front_eye.detect (NONE): drivetrain.drive 
            (FORWARD)

        wait (5, MSEC)
  • เมื่อเพิ่มลูป while แบบอนันต์ ลงในโครงการ คำสั่ง if ทั้งหมด จะได้รับการตรวจสอบเงื่อนไขซ้ำๆ เปิด Disk Maze Playground และรันโครงการ
  • เมื่อโครงการนี้ทำงานหุ่นยนต์ VR จะนำทาง Disk Maze Playground ตั้งแต่ต้นจนจบ เมื่อหุ่นยนต์ VR ตรวจพบสีแดงมันจะหยุดการขับขี่

    หุ่นยนต์ VR บน Disk Maze Playground ที่มีหุ่นยนต์ VR หยุดอยู่หน้าดิสก์สีแดงใกล้กับมุมขวาล่างของสนามเด็กเล่น

โดยสรุป

  • ในโครงการจากบทเรียนก่อนหน้า เงื่อนไขภายในคำสั่ง if จะได้รับการตรวจสอบเพียงครั้งเดียวเท่านั้น เนื่องจากเงื่อนไขภายในคำสั่ง หาก ได้รับการตรวจสอบเพียงครั้งเดียว หุ่นยนต์ VR จึงขับเคลื่อนไปข้างหน้าอย่างไม่มีสิ้นสุด เพราะเงื่อนไขที่ตรวจพบ "ไม่มีสี" ได้รับการรายงานว่าเป็นจริงในตอนเริ่มต้นของโครงการ
  • ขณะนี้ได้เพิ่มลูปอินฟินิตี้ while เข้าไปแล้ว เงื่อนไขของคำสั่ง if แต่ละคำสั่งจะถูกตรวจสอบซ้ำๆ กัน เงื่อนไขของลูปขณะ ที่ เป็นจริงเสมอดังนั้น รหัสภายในลูปขณะ ที่ จะดำเนินการเสมอ นี่จะตรวจสอบเงื่อนไขของคำสั่ง if ซ้ำๆ ในขณะที่โครงการกำลังทำงานอยู่ 
  • ในระหว่างการไหลของโครงการ ถ้าเงื่อนไขของคำสั่ง if เป็นจริง คำสั่งภายในคำสั่ง if จะถูกดำเนินการ หากเงื่อนไขของคำสั่ง if เป็นเท็จ คำสั่งภายในคำสั่ง if จะไม่ถูกดำเนินการ และการไหลของโครงการจะดำเนินต่อไปจนถึงคำสั่งถัดไป สิ่งนี้ช่วยให้หุ่นยนต์ VR สามารถทำพฤติกรรมที่ไม่ต่อเนื่องเช่นการหมุนหรือหยุดเมื่อตรวจพบสีบางอย่าง
  • หาก ข้อความถูกใช้กับอนันต์ ในขณะที่ วนซ้ำ เพื่อให้แน่ใจว่ามีการตรวจสอบเงื่อนไขอย่างต่อเนื่อง

คำถาม

โปรดเลือกลิงก์ด้านล่างเพื่อเข้าถึงแบบทดสอบบทเรียน

Google Doc /.docx /.pdf