บทที่ 2: คำแถลงเงื่อนไขถ้า/อื่นๆ
ในบทเรียนนี้คุณจะสร้างโครงการที่หุ่นยนต์ VR เคาะอาคารอย่างน้อยสองแห่งบนสนามเด็กเล่น Crasher Castle แบบไดนามิก จำเป็นต้องใช้อัลกอริทึมเพื่อแก้ปัญหาโดยใช้ลูปและการตอบรับจากเซ็นเซอร์เนื่องจากเลย์เอาต์ของสนามเด็กเล่นจะเปลี่ยนไปตามการรีเซ็ตแต่ละครั้ง
ตัวอย่างของรูปแบบสนามเด็กเล่น Crasher Castle แบบไดนามิก:

ผลการเรียนรู้
- ระบุว่าบล็อก [If then else] เป็นบล็อก C ที่เรียกใช้บล็อกภายในสาขา If หรือ Else ตามค่าบูลีนที่รายงาน
- ระบุว่าบล็อก [If then else] ปกติจะใช้กับบล็อก [Repeat] หรือ [Forever] เพื่อตรวจสอบสภาพมากกว่าหนึ่งครั้ง
- ระบุและอธิบายว่าเหตุใดจึงใช้บล็อค [If then else] กับลูป
- อธิบายสิ่งที่จะทำให้สาขา [ถ้าเป็นเช่นนั้น] ดำเนินการในโครงการ
วิธีใช้บล็อค [ถ้าเป็นเช่นนั้น]
ความท้าทายนี้แตกต่างจากความท้าทาย Castle Crasher ในหน่วยที่ 2 การท้าทายหน่วยที่ 2 ใช้การเรียงลำดับอย่างง่ายและคำสั่ง Drivetrain เพื่อเคาะอาคารบนสนามเด็กเล่นแบบคงที่

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

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

-
- หากหุ่นยนต์ VR ไม่พบอาคารปราสาทให้หันไปตรวจสอบอาคารปราสาทอีกครั้ง
-
เนื่องจากอาคารเป็นวัตถุเดียวในสนามเด็กเล่น Crasher Castle Crasherจึงสามารถใช้เซ็นเซอร์ระยะทางเพื่อตรวจจับอาคารปราสาทได้

-
เมื่อขั้นตอนที่ 1 และ 2 เสร็จสมบูรณ์หุ่นยนต์ VR สามารถย้อนกลับไปยังขั้นตอนที่ 1 และใช้เซ็นเซอร์ระยะทางเพื่อค้นหาอาคารถัดไปที่จะล้ม
-
เริ่มโครงการใหม่ใน VEXcode VR และตั้งชื่อ โครงการUnit9Lesson2

-
เพิ่ม [ความคิดเห็น] สองช่วงตึกลงในพื้นที่ทำงานและกรอกขั้นตอนที่ระบุไว้ด้านบน

-
บล็อก [ถ้าเป็นเช่นนั้น] สามารถใช้เพื่อทริกเกอร์การดำเนินการแต่ละอย่างที่ระบุไว้ข้างต้น การดำเนินการแต่ละครั้งขึ้นอยู่กับว่าเงื่อนไขบูลีนในบล็อก [ถ้าเป็นเช่นนั้น] รายงานจริงหรือเท็จ เพิ่มบล็อค [If then else] ใต้บล็อค [Comment]

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

- หากมีการรายงานเงื่อนไขเป็นจริงบล็อกภายในสาขา If Then จะทำงาน
- หากเงื่อนไขถูกรายงานว่าเป็นเท็จบล็อกภายในสาขาอื่นๆจะทำงาน

เมื่อบล็อกทั้งหมดภายในสาขาใดสาขาหนึ่งทำงานแล้วโครงการจะย้ายไปยังบล็อกถัดไปนอกบล็อก [ถ้าเป็นเช่นนั้น]
-
ในโครงการนี้สามารถใช้เซ็นเซอร์ระยะทางเพื่อตรวจจับสิ่งปลูกสร้างบนสนามเด็กเล่นได้ เพิ่ม <Distance found object> บล็อคไปที่บล็อค [If then else]

สำหรับข้อมูลของคุณ
<Distance found object> บล็อกนี้เป็นบล็อกนักข่าวบูลีนที่รายงานว่าเซ็นเซอร์ระยะทางพบวัตถุด้านหน้าของหุ่นยนต์ VR หรือไม่ บล็อกนี้จะรายงานความจริงเมื่อมีวัตถุหรือพื้นผิวภายใน 3000 มิลลิเมตร (มม.) ของหุ่นยนต์ VR

-
ตอนนี้แต่ละสาขาของบล็อก [If then else] จะต้องได้รับการกำหนดโดยใช้ความคิดเห็นที่สร้างขึ้นในตอนต้นของโครงการ เมื่อ <Distance found object> บล็อกรายงานเป็นจริงหุ่นยนต์ VR ควรขับรถไปที่อาคารนั้นเพื่อล้มมัน ย้ายบล็อก [ความคิดเห็น] นั้นไปยังสาขา ‘ถ้าเป็นเช่นนั้น’ ของโครงการ

-
ย้ายบล็อก [ความคิดเห็น] อื่นๆไปยังสาขา ‘อื่นๆ' ของโครงการสำหรับสิ่งที่ควรเกิดขึ้นหากหุ่นยนต์ VR ตรวจไม่พบอาคาร

-
เพิ่มบล็อก [Drive] ลงในสาขา ‘If Then’ ของบล็อก [If then else]

-
เมื่อ <Distance found object> บล็อกรายงานเท็จหุ่นยนต์ VR จะต้องหันหลังกลับและค้นหาอาคารบนสนามเด็กเล่น เพิ่มบล็อก [Turn] ใต้บล็อก [Comment] ในสาขา ‘Else’ ของบล็อก [If then else]

-
ก่อนที่โปรเจกต์จะได้รับการทดสอบจะต้องเพิ่มอีกหนึ่งบล็อค [ถ้าเป็นเช่นนั้น] บล็อกจะตรวจสอบสภาพเพียง ครั้งเดียว ก่อนที่จะย้ายไปยังบล็อกถัดไปในกองซ้อน ในหน่วยที่ 7 บล็อก [ตลอดกาล] ถูกเพิ่มเข้าไปในโครงการเพื่อสั่งให้หุ่นยนต์ VR ตรวจสอบสภาพของเซ็นเซอร์ดวงตาลงซ้ำๆ เพื่อให้แน่ใจว่าสภาพเซ็นเซอร์ระยะห่างได้รับการตรวจสอบซ้ำๆ ให้ลากบล็อก [ตลอดไป] ไปยังพื้นที่ทำงานรอบๆ บล็อก [If then else]

-
เปิด Dynamic Castle Crasher Playground และดำเนินโครงการ

-
เมื่อหุ่นยนต์ VR เคาะอาคารอย่างน้อยสองหลังแล้วให้โหลดสนามเด็กเล่นใหม่และเรียกใช้โครงการในรูปแบบอื่นของสนามเด็กเล่น Crasher Castle แบบ ไดนามิก

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

- ในระหว่างการดำเนินโครงการหุ่นยนต์ VR อาจผลักชิ้นส่วนอาคารไปจนถึงขอบและตกจากสนามเด็กเล่น นี่เป็นเพราะ <Distance found object> บล็อกยังคงรายงานว่ามีวัตถุอยู่ด้านหน้าของหุ่นยนต์ VR เมื่อบล็อกนี้รายงานเป็นจริงหุ่นยนต์ VR จะขับเคลื่อนไปข้างหน้า นำหุ่นยนต์ VR ให้ตกลงจากโต๊ะ
เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป