Skip to main content

บทที่ 2: ถ้าข้อความอื่นๆ

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

ตัวอย่างของเลย์เอาต์ Dynamic Castle Crasher Playground:

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

ผลการเรียนรู้

  • ระบุว่าคำสั่ง 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  จะถูกใช้เพื่อสร้างอัลกอริทึมโดยการเพิ่มการเลือกด้วยคำสั่งเงื่อนไขลงในโปรเจ็กต์นี้

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

คำชี้แจงถ้าเป็นอย่างอื่น

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

ถ้าเงื่อนไข:
	ผ่าน
อย่างอื่น:
	ผ่าน
  • หากเงื่อนไขถูกรายงานเป็น True คำสั่งที่อยู่ภายในสาขา 'if' จะทำงาน
  • หากเงื่อนไขถูกรายงานว่าเป็นเท็จคำสั่งภายใน สาขา 'อื่น' จะทำงาน
  • เมื่อเรียกใช้คำสั่งทั้งหมดภายในสาขาใดสาขาหนึ่งแล้วโครงการจะย้ายไปยังคำสั่งถัดไป นอกคำสั่ง  if else

คุณมีแนวโน้มที่ จะใช้ ตรรกะอื่นๆบ่อยครั้งในการกระทำในชีวิตประจำวันของคุณ ตัวอย่างเช่น เมื่อตัดสินใจว่าคุณต้องนำอะไรไปด้วยเมื่อออกจากบ้าน ตามสภาพอากาศภายนอก คุณสามารถใช้ตรรกะ ถ้าไม่ใช่ ได้ ถ้าคือ ฝนตก ให้พกร่มไปด้วย ถ้าไม่ใช่ ให้พกแว่นกันแดดไปด้วย

สาขา 'ถ้า' -

  • ในสถานการณ์นี้ เงื่อนไข 'ฝนตก' เป็นจริง ดังนั้น สาขา 'ถ้า' จะถูกดำเนินการ และคุณจะใช้ร่ม ด้านซ้ายเป็นตัวอย่างรหัสที่อ่านถ้าฝนตก: ให้ใช้ร่ม หลังจากข้อความ if จะเขียนว่าอื่น: ให้ใช้แว่นกันแดด เหนือรหัสคือเมฆฝนที่มีละอองฝน ด้านขวาเป็นร่มสีสันสดใสที่มีหยดน้ำอยู่ ตามรหัสถ้าฝนตกบุคคลนั้นจะใช้ร่มมิฉะนั้นพวกเขาจะใช้แว่นตากันแดด

สาขา 'อื่นๆ' -

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

 

คำแถลงการณ์ถ้าไม่เช่นนั้นและปัญหา Crasher Castle แบบไดนามิก

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

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

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

การวางแผนโปรเจกต์ด้วยคำสั่ง If else

  • เริ่มโปรเจกต์ใหม่ และเลือก Dynamic Castle Crasher Playground เมื่อได้รับแจ้ง ภาพขนาดย่อสำหรับสนามเด็กเล่น Dynamic Castle Crasher ที่เห็นเมื่อเลือกสนามเด็กเล่นใหม่ใน VEXcode VR
  • ตั้งชื่อ โครงการUnit9Lesson2
    แถบเครื่องมือ VEXcode VR ที่ชื่อโครงการถูกเน้นด้วยสีแดง ชื่อโครงการอ่านหน่วยที่ 9 บทเรียนที่ 2
  • เพิ่มความคิดเห็นลงในพื้นที่ทำงานที่ระบุความตั้งใจสำหรับโครงการตามขั้นตอนที่ระบุไว้ข้างต้น ความคิดเห็นแรกจะอธิบายเงื่อนไขของคำสั่ง 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

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