Skip to main content

บทเรียนที่ 4: ย้ายดิสก์สีแดงและสีเขียว

  • ถัดไปหุ่นยนต์ VR จะต้องขับเคลื่อนไปข้างหน้าเพื่อไปยังเป้าหมายสีถัดไป โปรดทราบว่าหุ่นยนต์ VR จะต้องขับไปข้างหน้าสี่สี่เหลี่ยมตารางหรือ 800 มิลลิเมตร (มม.) เพื่อขับไปยังศูนย์กลางของเป้าหมายสีถัดไป

    มุมมองด้านบนของ Disk Mover Playground โดยมีหุ่นยนต์ VR อยู่ที่ขอบประตูสีน้ำเงินหลังจากวางดิสก์สีน้ำเงินตัวแรกลงหันหน้าไปทางประตูสีแดงทางด้านขวา ลูกศรชี้จากด้านหน้าของหุ่นยนต์ VR ไปยังเป้าหมายสีแดงซึ่งบ่งบอกถึงการเคลื่อนไหวที่ตั้งใจไว้ต่อไป
  • เพิ่มบล็อก [Drive for] ลงในรหัสและตั้งค่าพารามิเตอร์เป็น 800 มิลลิเมตร (มม.)

    โครงการ VEXcode VR เดียวกันจากหน้าก่อนหน้านี้โดยมีการเพิ่มความคิดเห็นและไดรฟ์สำหรับบล็อกในตอนท้ายของสแต็ก บล็อกเพิ่มเติมสองบล็อกอ่านไดรฟ์ไปยังเป้าหมายถัดไปจากนั้นขับไปข้างหน้า 800 มม.
  • ตอนนี้หุ่นยนต์ VR จะต้องหันไปเผชิญหน้ากับดิสก์สี

    มุมมองด้านบนของ Disk Mover Playground โดยมี VR Robot อยู่ในตำแหน่งพื้นที่เป้าหมายสีแดง ลูกศรโค้งชี้จากด้านหน้าของ VR Robot ไปทางดิสก์สีแดงซึ่งแสดงถึงการหันหน้าเข้าหาดิสก์สีแดงที่จำเป็น
  • เพิ่มบล็อก [Turn to heading] หนึ่งวินาทีในรหัสและตั้งค่าพารามิเตอร์เป็นศูนย์องศา การดำเนินการนี้จะเปลี่ยนหุ่นยนต์ VR ให้หันหน้าไปทางดิสก์สี

    โครงการ VEXcode VR เดียวกันพร้อมบล็อกความคิดเห็นและเปลี่ยนเป็นบล็อกหัวเรื่องที่เพิ่มลงในส่วนท้ายของสแต็ก บล็อกทั้งสองนี้อ่านได้หมุนไปที่ดิสก์จากนั้นหมุนไปที่ทิศทาง 0 องศา
  • เปิด Disk Mover Playground และเรียกใช้โครงการ
  • หุ่นยนต์ VR จะหยิบและย้ายดิสก์สีน้ำเงินอันแรกไปยังเป้าหมายสีน้ำเงินจากนั้นขับข้ามเป้าหมายสีแดง หุ่นยนต์ VR จะหันหน้าไปทางดิสก์สีแดงด้วย

    มุมมองด้านบนของ Disk Mover Playground ที่มี VR อยู่ที่ขอบด้านหน้าของเป้าหมายสีแดงหันหน้าไปทางดิสก์สีแดง
  • ตอนนี้หุ่นยนต์ VR หันหน้าไปทางดิสก์สีแดงแล้วหุ่นยนต์ VR จะต้องทำซ้ำพฤติกรรมเดิมที่ใช้ในการรวบรวมดิสก์สีน้ำเงินเพื่อรับและย้ายดิสก์สีแดง พฤติกรรมของการขับรถไปข้างหน้าเพื่อรับดิสก์หันหลังกลับและขับรถกลับไปยังเป้าหมายสีเดียวกันเพื่อส่งดิสก์ออก

    มุมมองด้านบนของ Disk Mover Playground ที่มี VR อยู่ที่ขอบด้านหน้าของเป้าหมายสีแดงหันหน้าไปทางดิสก์สีแดง ลูกศรประแสดงการเคลื่อนไหวที่จำเป็นในการขับรถไปรับดิสก์สีแดงอันแรกส่งไปยังเป้าหมายสีแดงจากนั้นเลี้ยวและขับไปยังเป้าหมายสีเขียว
  • เมื่อดิสก์สีแดงตัวแรกถูกย้ายหุ่นยนต์ VR จะต้องขับไปยังเป้าหมายสีเขียวและดำเนินการเช่นเดียวกับที่ใช้ในการย้ายดิสก์สีน้ำเงินและสีแดงเพื่อย้ายดิสก์สีเขียวตัวแรก

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

    บล็อก VEXcode VR Repeat จากกล่องเครื่องมือโดยตั้งค่าพารามิเตอร์เป็นค่าเริ่มต้นคือ 10
  • เพิ่มบล็อค [Repeat] ลงในโค้ดและตั้งค่าพารามิเตอร์เป็น ‘3’

    ภาพรวมของการเพิ่มบล็อกการทำซ้ำในโครงการ VEXcode VR ที่มีอยู่เพื่อให้บล็อกทั้งหมดที่จำเป็นในการหยิบและย้ายดิสก์สีน้ำเงินตัวแรกไปยังเป้าหมายสีน้ำเงินหันไปขับไปยังเป้าหมายถัดไปแล้วหันไปเผชิญหน้ากับดิสก์จะถูกห่อไว้ภายใน C ของบล็อกการทำซ้ำ พารามิเตอร์บล็อกการทำซ้ำถูกตั้งค่าเป็น 3
  • เปิด Disk Mover Playground และเรียกใช้โครงการ
  • เมื่อโครงการนี้ทำงานหุ่นยนต์ VR จะหยิบและวางดิสก์หนึ่งแผ่นของแต่ละสีลงในเป้าหมายสีที่สอดคล้องกัน

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

    หน้าต่างสนามเด็กเล่นแสดงหุ่นยนต์ VR ภายในพื้นที่เป้าหมายสีเขียวในตอนท้ายของโครงการโดยมีปุ่มหยุดที่เน้นด้วยกล่องสีแดงที่ระบุว่าหยุดโครงการก่อนที่หุ่นยนต์จะวิ่งเข้าสู่กำแพง

สำหรับข้อมูลของคุณ

การวางห่วงหนึ่งไว้ภายในอีกห่วงหนึ่งเรียกว่าการซ้อนกัน เมื่อคุณ "ซ้อน" ลูปลูปด้านนอกจะควบคุมจำนวนครั้งที่ลูปด้านในดำเนินการ มีลูปหลายประเภทที่สามารถซ้อนกันได้ ตัวอย่างเช่นในรหัสก่อนหน้าข้างต้นบล็อก [ทำซ้ำจนกว่า] จะซ้อนอยู่ภายในบล็อก [ทำซ้ำ]

โครงการ VEXcode VR เดียวกันจากก่อนหน้านี้แสดงให้เห็นว่าบล็อกการทำซ้ำจนกว่า C จะซ้อนกันภายในบล็อกการทำซ้ำทำให้หุ่นยนต์สามารถเคลื่อนย้ายดิสก์สามแผ่นได้สำเร็จ

บล็อก [ทำซ้ำ] ยังสามารถซ้อนอยู่ในบล็อก [ทำซ้ำ] อื่นได้อีกด้วย ในตัวอย่างต่อไปนี้เนื่องจากบล็อก [Repeat] ด้านนอกถูกตั้งค่าเป็น ‘3’ หุ่นยนต์ VR จะวาดสี่เหลี่ยมสามอันบนสนามเด็กเล่น

ทางด้านซ้ายโปรเจกต์จะแสดงบล็อกการทำซ้ำที่ตั้งค่าเป็น 3 โดยบล็อกการทำซ้ำจำเป็นต้องเขียนโค้ดหุ่นยนต์ VR เพื่อวาดสี่เหลี่ยมจัตุรัสที่ซ้อนกันอยู่ภายในซึ่งแสดงให้เห็นถึงแนวคิดของลูปที่ซ้อนกัน ทางด้านขวาหน้าต่างสนามเด็กเล่นจะแสดงสี่เหลี่ยมทั้งสามที่วาดโดยหุ่นยนต์จากโปรเจกต์

ลูปที่ซ้อนกันมีประโยชน์ในโครงการที่หุ่นยนต์ VR ทำพฤติกรรมเดียวกันซ้ำมากกว่าหนึ่งครั้ง Nesting loops จัดระเบียบและควบแน่นโครงการ ซึ่งจะเป็นประโยชน์ในการทำความเข้าใจบริบทและวัตถุประสงค์ของรหัสรวมถึงทำให้ง่ายต่อการค้นหาข้อผิดพลาด

เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป