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

ผลการเรียนรู้
- ระบุว่าคำสั่ง if else เรียกใช้คำสั่งภายใน สาขา 'if' หรือ 'else' ตามค่าบูลีนที่รายงาน
- ระบุว่าคำสั่ง if else โดยปกติใช้กับคำสั่ง for loop หรือคำสั่ง infinite while loop เพื่อตรวจสอบเงื่อนไขมากกว่าหนึ่งครั้ง
- ระบุและอธิบายว่าทำไมจึงใช้คำสั่ง if else กับลูป
- อธิบายสาเหตุที่ทำให้มีการเรียกใช้สาขา if หรือสาขา else ในโปรเจ็กต์ที่มีคำสั่ง if else
เหตุใดจึงต้อง ใช้คำชี้แจงถ้าเป็นอย่างอื่น?
การ ท้าทาย Castle Crasher แบบไดนามิกแตกต่างจากการท้าทาย Castle Crasher ในหน่วยที่ 2 การท้าทายหน่วยที่ 2 ใช้การเรียงลำดับอย่างง่ายและคำสั่ง Drivetrain เพื่อเคาะปราสาทบนสนามเด็กเล่นแบบคงที่
def main (): drivetrain.set_drive_velocity (
100, PERCENT) drivetrain.set_turn_velocity (
100, PERCENT) drivetrain.drive_for
(FORWARD, 1550, MM) drivetrain.turn_for
(RIGHT, 180, DEGREES) drivetrain.drive_for
(FORWARD, 700, MM)
drivetrain.turn_for (RIGHT, 90, DEGREES)อย่างไรก็ตามเนื่องจากรูปแบบที่เปลี่ยนแปลงไปของ Dynamic Castle Crasher Playground คำสั่ง Drivetrain เพียงอย่างเดียวจะไม่เพียงพอที่จะทำให้ VR Robot ล้มปราสาทสองแห่งหรือมากกว่า ชุดคำสั่ง Drivetrain อาจทำงานในสนามเด็กเล่นหนึ่งแต่ไม่ใช่ในสนามเด็กเล่นอื่น จำเป็นต้องใช้อัลกอริทึมที่ใช้เซ็นเซอร์และ การเลือกในการทำซ้ำ คำสั่ง if else จะถูกใช้เพื่อสร้างอัลกอริทึมโดยการเพิ่มการเลือกด้วยคำสั่งเงื่อนไขลงในโปรเจ็กต์นี้

คำชี้แจงถ้าเป็นอย่างอื่น
ข้อความ if else เป็น ข้อความที่ยอมรับเงื่อนไขบูลีน คำสั่ง if else เป็น คำสั่งแบบมีเงื่อนไขที่ ควบคุมการไหลของโครงการ คำสั่ง if else จะดำเนินการตามลำดับคำสั่งเฉพาะ if ตรงตามเงื่อนไข else (เมื่อเงื่อนไข ไม่ ) จะดำเนินการชุดคำสั่งอื่นอีก ซึ่งทำให้เกิดการ 'แยกสาขา' ของกระแสงานโครงการ มีเพียงสาขาเดียวใน กรณีที่ไม่เช่นนั้น จะถูกดำเนินการในแต่ละครั้ง
ถ้าเงื่อนไข:
ผ่าน
อย่างอื่น:
ผ่าน- หากเงื่อนไขถูกรายงานเป็น True คำสั่งที่อยู่ภายในสาขา 'if' จะทำงาน
- หากเงื่อนไขถูกรายงานว่าเป็นเท็จคำสั่งภายใน สาขา 'อื่น' จะทำงาน
- เมื่อเรียกใช้คำสั่งทั้งหมดภายในสาขาใดสาขาหนึ่งแล้วโครงการจะย้ายไปยังคำสั่งถัดไป นอกคำสั่ง if else
คุณมีแนวโน้มที่ จะใช้ ตรรกะอื่นๆบ่อยครั้งในการกระทำในชีวิตประจำวันของคุณ ตัวอย่างเช่น เมื่อตัดสินใจว่าคุณต้องนำอะไรไปด้วยเมื่อออกจากบ้าน ตามสภาพอากาศภายนอก คุณสามารถใช้ตรรกะ ถ้าไม่ใช่ ได้ ถ้าคือ ฝนตก ให้พกร่มไปด้วย ถ้าไม่ใช่ ให้พกแว่นกันแดดไปด้วย
สาขา 'ถ้า' -
- ในสถานการณ์นี้ เงื่อนไข 'ฝนตก' เป็นจริง ดังนั้น สาขา 'ถ้า' จะถูกดำเนินการ และคุณจะใช้ร่ม

สาขา 'อื่นๆ' -
- ในสถานการณ์นี้ ไม่ ตรงกับสภาพของ 'ฝน' ดังนั้น สาขา 'อื่นๆ' จะถูกดำเนินการและคุณจะใช้แว่นกันแดด

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

- นอกจากนี้ (เมื่อหุ่นยนต์ VR ตรวจไม่พบปราสาท) ให้ หันไปตรวจสอบปราสาทในสถานที่อื่นบนสนามเด็กเล่น

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

- ตั้งชื่อ โครงการUnit9Lesson2

-
เพิ่มความคิดเห็นลงในพื้นที่ทำงานที่ระบุความตั้งใจสำหรับโครงการตามขั้นตอนที่ระบุไว้ข้างต้น ความคิดเห็นแรกจะอธิบายเงื่อนไขของคำสั่ง if else และอีกสองความคิดเห็นถัดไปจะอธิบายการกระทำของแต่ละสาขาของคำสั่ง if else โปรดจำไว้ว่าความคิดเห็นของ Python เริ่มต้นด้วยสัญลักษณ์ # (ปอนด์) โปรเจกต์ของคุณควรมีลักษณะดังนี้:
def main (): # เซ็นเซอร์ระยะทางตรวจจับปราสาทได้หรือไม่? # ตรวจพบปราสาทพังโดยเซ็นเซอร์ระยะทาง # เปิดเพื่อค้นหาปราสาทโดยใช้เซ็นเซอร์ระยะทาง -
หากไม่ สามารถใช้ ข้อความอื่นเพื่อกระตุ้นการดำเนินการแต่ละอย่างที่ระบุไว้ข้างต้นได้ การดำเนินการแต่ละอย่างจะขึ้นอยู่กับว่าเงื่อนไขบูลีนในคำสั่ง if else รายงานเป็นจริง หรือเป็นเท็จ เพิ่มคำสั่ง if else หลังความคิดเห็น ตอนนี้โปรเจกต์ของคุณควรมีลักษณะดังนี้:
def main (): # เซ็นเซอร์ระยะทางตรวจจับปราสาทได้หรือไม่? # ตรวจพบปราสาทที่ชนโดยเซ็นเซอร์ระยะทาง # เปิดเพื่อค้นหาปราสาทโดยใช้เซ็นเซอร์ระยะทาง หากเงื่อนไข: ผ่าน อื่น: ผ่าน -
แต่ละสาขาของคำสั่ง if else สามารถกำหนดได้โดยใช้คำอธิบายประกอบ หากเซ็นเซอร์ระยะ ทางตรวจพบปราสาทหุ่นยนต์ VR ควรขับรถไปเคาะปราสาทมิ ฉะนั้นควรหันไปตรวจจับปราสาท ย้ายสาขา if and else ของโครงการเพื่อให้สอดคล้องกับความคิดเห็นที่อธิบายถึงการดำเนินการที่เกี่ยวข้อง ตอนนี้โปรเจกต์ของคุณควรมีลักษณะดังนี้:
def main (): # เซ็นเซอร์ระยะทางตรวจจับปราสาทได้หรือไม่? หากเงื่อนไข: # Crash castle detected by a Distance Sensor pass else: # Turn to find a castle using the Distance Sensor pass
เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป