บทเรียนที่ 4: การไหลของโปรเจกต์ด้วยลูปที่ซ้อนกัน
เก็บดิสก์สองตัวถัดไป
-
ตอนนี้หุ่นยนต์ VR หันหน้าไปทางดิสก์สีแดงแล้วหุ่นยนต์ VR จะต้องทำซ้ำพฤติกรรมเดิมที่ใช้ในการรวบรวมดิสก์สีน้ำเงินเพื่อรับและย้ายดิสก์สีแดง พฤติกรรมของการขับรถไปข้างหน้าเพื่อรับดิสก์หันหลังกลับและขับรถกลับไปยังเป้าหมายสีเดียวกันเพื่อส่งดิสก์ออก
-
เมื่อดิสก์สีแดงตัวแรกถูกย้ายหุ่นยนต์ VR จะต้องขับไปยังเป้าหมายสีเขียวและดำเนินการเช่นเดียวกับที่ใช้ในการย้ายดิสก์สีน้ำเงินและสีแดงเพื่อย้ายดิสก์สีเขียวตัวแรก
- เพื่อที่จะทำพฤติกรรมซ้ำหลายๆครั้งสามารถใช้ for loop ได้
-
เพิ่มลูป สำหรับ ที่ด้านบนของโปรเจ็กต์ เหนือความคิดเห็นแรก และตั้งค่าพารามิเตอร์ฟังก์ชันช่วง เป็น '3' ตรวจสอบให้แน่ใจว่า ลูปสำหรับอยู่เยื้องภายในคำจำกัดความหลัก
def main (): สำหรับ repeat_count ในช่วง (3): รอ (5, มิลลิวินาที)
-
หากต้องการคัดลอกโค้ดลงในลูป สำหรับ จะต้องใส่ใจกับการเยื้องอย่างระมัดระวัง ขั้นแรก ให้เพิ่มช่องว่างก่อนคำสั่ง wait เพื่อให้ลูปมีลักษณะดังนี้:
def main (): สำหรับ repeat_count ในช่วง (3): รอ (5, มิลลิวินาที)
- ขั้นตอนต่อไป ให้เลือกคำสั่งที่จะใส่ไว้ในลูป for และคัดลอกและวางไว้เหนือคำสั่ง wait สังเกตว่าการเยื้องจะไม่ถูกต้องหลังจากเพียงแค่คัดลอกและวาง เส้นตัวบ่งชี้สีเทาของลูป สำหรับ ขาด และถูกตัดการเชื่อมต่อจากคำสั่งรอ นี่คือคิวภาพที่โปรเจกต์ของคุณจะไม่ดำเนินการตามที่ตั้งใจไว้
-
เลือกคำสั่งภายใน ลูปสำหรับและใช้ 'แท็บ' เพื่อเยื้องคำสั่งภายในลูปอย่างถูกต้อง เมื่อเยื้องเข้าไปอย่างถูกต้อง เส้นตัวบ่งชี้สีเทาควรเชื่อมต่อลูป สำหรับ กับคำสั่ง รอ เพื่อแสดงขอบเขตของลูปด้านนอก เมื่อเสร็จแล้วโปรเจกต์ของคุณควรมีลักษณะดังนี้:
def main (): สำหรับ repeat_count ในช่วง (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, องศา) ในขณะที่ front_distance.get_distance (MM) > 200 : drivetrain.drive (ไปข้างหน้า) รอ (5, มิลลิวินาที ) drivetrain stop () #4. Drop disk in goal magnet.energize (DROP ) drivetrain.drive_for (REVERSE, 100, MM) #5. เลี้ยวและขับไปยังเป้าหมาย ถัดไป drivetrain.turn_to_heading (90, DEGREES) drivetrain.drive_for (FORWARD, 800, MM) #6 หันไปที่ ดิสก์ drivetrain.turn_to_heading (0, องศา) รอ (5, มิลลิวินาที)
- ดูวิดีโอด้านล่างเพื่อดูวิธีเลื่อนคำสั่งและปรับระยะเยื้องตามที่อธิบายไว้ข้างต้น ในคลิปวิดีโอจะมีการเน้นความคิดเห็นหกส่วนของโครงการและเปิดเมนูบริบท เลือกตัวเลือก ‘ตัด’ แล้ววาง เคอร์เซอร์ไว้ใต้คำสั่งสำหรับลูป เมนูบริบทจะเปิดขึ้นอีกครั้งและเลือก ‘วาง’ จากนั้นคำสั่งจะอยู่ภายใน ลูปสำหรับแต่เยื้องอย่างไม่ถูกต้อง ส่วนความคิดเห็นหกส่วนจะถูกไฮไลต์อีกครั้งและกด ‘Tab’ บนแป้นพิมพ์เพื่อเยื้องโปรเจกต์ภายในลูปให้ถูกต้อง
- เปิด Disk Mover Playground หากยังไม่ได้เปิดและเรียกใช้โครงการ
-
เมื่อโครงการนี้ทำงานหุ่นยนต์ VR จะหยิบและวางดิสก์หนึ่งแผ่นของแต่ละสีลงในเป้าหมายสีที่สอดคล้องกัน
สำหรับข้อมูลของคุณ
โปรดทราบว่าหุ่นยนต์ VR ยังคงขับเข้าไปในกำแพง พฤติกรรมนี้คาดว่าจะเกิดขึ้นเนื่องจากโครงการได้สั่งให้หุ่นยนต์ VR เลี้ยวขวาและขับไปสู่เป้าหมายต่อไปสามครั้ง ครั้งแรกคือการขับรถจากสีน้ำเงินเป็นสีแดง ประการที่สองคือจากสีแดงเป็นสีเขียวและประการที่สามคือจากสีเขียวเข้าไปในผนังเนื่องจากไม่มีเป้าหมายสีอื่น หยุดโครงการเมื่อหุ่นยนต์ VR ชนกำแพง โครงการอาจได้รับการปรับปรุงเพื่อให้หุ่นยนต์ VR หยุดทำงานหลังจากรับและย้ายดิสก์สีเขียวแต่สิ่งนี้จะเพิ่มความซับซ้อนโดยรวมของโครงการ