บทที่ 2: การใช้บล็อก [รอจนกว่า]
ในบทเรียนนี้คุณจะสร้างโปรเจกต์โดยใช้เซ็นเซอร์กันชนและบล็อค [รอจนกว่าจะถึง] ในการประลองมินิคุณจะใช้ทักษะเหล่านี้เพื่อนำทางจากจุดเริ่มต้นของเขาวงกตกำแพงไปยังตัวอักษร ‘A’

ผลการเรียนรู้
- ระบุว่าบล็อกที่ไม่รอให้สแต็คดำเนินการต่อแม้ว่าพฤติกรรมของบล็อกจะยังไม่เสร็จสมบูรณ์ก็ตาม
- ระบุว่าบล็อกรอหยุดสแต็กชั่วคราวจนกว่าพฤติกรรมของบล็อกนั้นจะเสร็จสมบูรณ์
- ระบุว่าการเน้นการดำเนินการของโครงการจะแสดงภาพบล็อกการรอเทียบกับการไม่รอ
- ระบุว่าบล็อก [รอจนกว่า] เป็นบล็อกควบคุมที่ยอมรับค่าบูลีน
- ระบุว่าบล็อก [รอจนกว่า] จะตรวจสอบเงื่อนไขบูลีนซ้ำๆและจะไม่ย้ายไปยังบล็อกถัดไปจนกว่าเงื่อนไขจะรายงานเป็นจริง
- ระบุว่าบล็อก [รอจนกว่า] ถูกใช้กับบล็อกที่ไม่มีการรอ (เช่นไดรฟ์) เพื่อตรวจสอบสภาพเซ็นเซอร์
- ระบุว่า <Pressing bumper> บล็อกรายงานค่าจริงหรือเท็จในบล็อก [รอจนกว่า]
- ระบุว่าบล็อก [Drive for] และ [Turn for] เป็นบล็อกพิเศษที่สามารถรอหรือไม่รอได้อย่างไร
- อธิบายวิธีสร้างโปรเจกต์ที่มี VR Robot ขับไปข้างหน้าจนกว่าจะกด Bumper Sensor
ตั้งชื่อและบันทึกโครงการ
- เริ่มโครงการใหม่ใน VEXcode VR และตั้งชื่อ โครงการUnit4Lesson2

[รอจนกว่า] บล็อก
บล็อก [รอจนกว่า] เป็นบล็อกควบคุมที่ยอมรับเงื่อนไขบูลีน [รอจนกว่า] บล็อกตรวจสอบเงื่อนไขบูลีนซ้ำๆและควบคุมการไหลของโครงการ โปรเจกต์จะไม่ย้ายไปยังบล็อกถัดไปในสแต็กจนกว่าเงื่อนไขในรายงานบล็อก [รอจนกว่า] จะเป็นจริง บล็อก [รอจนกว่า] จะถูกใช้ร่วมกับบล็อกที่ไม่ต้องรอเช่น [Drive] หรือ [Turn]
สำหรับข้อมูลของคุณ
บล็อกที่ไม่รอและรอจะเป็นตัวกำหนดว่าบล็อกถัดไปจะเริ่มทำงานเมื่อใด บล็อกรอเช่น [Drive for] และ [Turn for] ทำพฤติกรรมของพวกเขาให้เสร็จก่อนที่จะย้ายไปยังบล็อกถัดไปในกองซ้อน บล็อกที่ไม่ต้องรอเช่น [Drive] และ [Turn] จะยังคงย้ายไปยังบล็อกถัดไปในกองซ้อนแม้ว่าพฤติกรรมของบล็อกที่ไม่ต้องรอจะไม่สมบูรณ์ก็ตาม
บางช่วงตึกเช่น [Drive for] และ [Turn for] อาจเป็นช่วงตึกที่รอหรือไม่รอก็ได้ การเลือกลูกศรบนบล็อกจะเปลี่ยนบล็อกจากการรอเป็นบล็อกที่ไม่ต้องรอ

การใช้สวิทช์บล็อก
บล็อกสวิตช์ที่ไม่รอจะเพิ่มพารามิเตอร์ "wait=False" ที่ส่วนท้ายของบล็อก "wait = False" เป็นคำสั่ง Python ที่บอกบล็อกไม่ให้รอและย้ายไปยังบล็อกถัดไปในกองซ้อน

-
ลากบล็อก [ไดรฟ์] ที่ไม่ต้องรอลงในพื้นที่ทำงาน

-
ติดบล็อค [รอจนกว่า] ใต้บล็อค [ไดรฟ์]

-
บล็อก [รอจนกว่า] ยอมรับเงื่อนไขบูลีน โปรเจกต์นี้จะใช้ Bumper Sensor เพื่อขับผ่าน Wall Maze Playground ลากบล็อก <Pressing bumper> บูลีนไปยังบล็อก [รอจนกว่า]

-
ลากในบล็อค [หยุดขับ] และเพิ่มลงในโปรเจกต์

- เปิด Wall Maze Playground หากยังไม่ได้เปิดและดำเนินโครงการ
- ดู VR Robot ขับรถจากจุดเริ่มต้นของ Wall Maze และหยุดเมื่อมีการกด Bumper Sensor ที่ผนัง
-
บล็อก [ไดรฟ์] ช่วยให้หุ่นยนต์ VR สามารถขับไปข้างหน้าได้ในขณะที่ตรวจสอบสภาพของเซ็นเซอร์กันชนด้วย <Pressing bumper> บล็อก เมื่อ <Pressing bumper> รายงานเป็นจริงหุ่นยนต์ VR จะย้ายไปยังบล็อกถัดไปในสแต็กและหยุดการขับขี่

สำหรับข้อมูลของคุณ
หากต้องการดูภาพการรอคอยเมื่อเทียบกับบล็อกที่ไม่ต้องรอให้ดูฟังก์ชันไฮไลต์การดำเนินการรหัสใน VEXcode VR ในช่วงเริ่มต้นของโครงการนี้ไฮไลต์สีเขียวจะปรากฏขึ้นรอบๆบล็อก [รอจนกว่าจะเป็นไปตามเงื่อนไข นี่เป็นเพราะบล็อก [รอจนกว่า] เป็นบล็อกรอ ไฮไลต์สีเขียวจะปรากฏขึ้นเพื่อข้ามบล็อกที่ไม่ต้องรอเพราะคำสั่งเหล่านี้จะดำเนินการอย่างรวดเร็ว

การใช้สวิทช์บล็อก
นี่คือบล็อกสวิตช์ที่มีคำสั่ง [รอจนกว่า] ด้วย <Bumper pressed>
บูลีนรีพอร์เตอร์ 
while not left_bumper.pressed (): เป็นคำสั่ง Python ที่ตรวจสอบว่ากำลังกดกันชนด้านซ้าย อยู่หรือไม่ wait (5, msec) เป็นคำสั่ง Python ที่ หยุดการดำเนินการตรวจสอบชั่วคราวเป็น เวลา 5 มิลลิวินาที (มิลลิวินาที) ดังนั้นโครงการจะตรวจสอบว่ามีการกดกันชนด้านซ้ายทุกๆ 5 มิลลิวินาทีหรือไม่ บรรทัดของรหัสนี้อยู่เยื้องใต้บรรทัดแรกของรหัสเนื่องจากคำสั่งนี้เป็นพฤติกรรมที่จะทำซ้ำจนกว่าจะตรงตามเงื่อนไข (ในกรณีนี้คือกันชนด้านซ้ายที่กด) ใน VEXcode VR คำสั่ง รอ จะถูกเพิ่มโดยใช้เงื่อนไขวนซ้ำ เสมอ วัตถุประสงค์ของคำสั่งรอคือเพื่อให้แน่ใจว่า VEXcode VR สามารถดำเนินโครงการได้อย่างถูกต้องตามที่ตั้งใจไว้เนื่องจากลักษณะบนเว็บของแพลตฟอร์ม VEXcode VR ไม่ควรลบคำสั่ง wait เมื่อใช้ลูปเงื่อนไข เพราะ โปรเจ็กต์ของคุณอาจไม่ทำงานตามที่ตั้งใจไว้ เมื่อกดกันชนซ้ายแล้วหุ่นยนต์จะหยุดขับ
เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป