เส้นทางเวียนวน ไข่มุกชนเส้นรึยัง | กิจกรรม Scratch หุ่นเดินตามเส้น checkpoint #3

ภารกิจสำหรับ checkpoint นี้

เราจะวาดเส้นทางเดินบนเวทีให้กับหุ่นยนต์ โดยใช้เส้นสีเทาวาดเป็นวงรี ที่อาจมีการลดเลี้ยวเคี้ยวคดเล็กน้อย (แต่อย่าเพิ่งเลี้ยวหักมุมมากเกินไป) จากนั้นจะทดลอง “เล่นเกม”​ ใช้คีย์บอร์ดควบคุมหุ่นยนต์ให้เดินตามเส้น โดยที่ไม่ออกนอกเส้น วนไปเรื่อยๆ

จากนั้นเราจะเขียนโปรแกรมให้หุ่นยนต์มีระบบตรวจจับการ “ออกนอกเส้น” และแจ้งเตือนเราโดยอัตโนมัติ และจะหยุดรอคำสั่งจากเรา 1-2 วินาทีก่อนที่จะเดินต่อไป ทั้งนี้หุ่นยนต์จะแจ้งเตือนผ่านกล่องข้อความเท่านั้น โดยไม่ตัดสินใจทำอะไรเองสักอย่างเดียว คนที่จะตัดสินใจป้อนคำสั่งจะต้องเป็นตัวเราเอง

ไข่มุกในมือทั้งสองจะกลายร่างเป็นเซนเซอร์ที่มีค่าในภารกิจนี้

  • เมื่อไข่มุกด้านซ้ายสัมผัสกับเส้นเทา ให้หุ่นยนต์พูดว่า “มือซ้ายชนเส้น” และหยุดเดินเป็นเวลา 1-2 วินาที
  • เมื่อไข่มุกด้านขวาสัมผัสกับเส้นเทา ให้หุ่นยนต์พูดว่า “มือขวาชนเส้น” และหยุดเดินเป็นเวลา 1-2 วินาที

ลองเล่นเกมนี้ไปสักพักหนึ่ง แล้วสำรวจความคิดตนเอง โดยสังเกตสิ่งต่อไปนี้

  1. เมื่อหุ่นยนต์พูดว่า “มือซ้ายชนเส้น” แปลว่าหุ่นยนต์กำลังจะหลุดออกนอกเส้นไปทิศทางใด? ดังนั้นท่านควรกดปุ่มใดบนคีย์บอร์ด?
  2. คำถามเดียวกับ #1 สำหรับกรณี “มือขวาชนเส้น”
  3. การหันซ้าย หันขวา ของหุ่นยนต์เป็นมุมที่มากหรือน้อยเกินไปหรือไม่? ถ้าหมุนน้อยไปจะเป็นอย่างไร? ถ้าหมุนมากไปจะเป็นอย่างไร? ท่านคิดว่าควรปรับแก้เป็นกี่องศา?​ (ลองปรับแก้ได้เลย)

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

ตัวอย่างผลลัพธ์

ตัวอย่างโปรแกรมที่ถูกต้อง และการทดลองเล่น รวมถึงขั้นตอนการสำรวจความคิดตนเอง ระหว่างเล่นเกม (ขั้นตอนนี้สำคัญเท่ากับขั้นตอนการเขียนโปรแกรม)

https://youtu.be/gnXdwPHmNW4

วิธีการวาดเส้นบนเวที

  1. มองไปที่บริเวณ Stage ด้านล่างขวา แล้วกดที่ Backdrops
  2. จะพบว่าสคริปต์ของหุ่นยนต์หายไปแล้ว ให้มองไปที่มุมบนซ้าย คลิกที่แท็บ Backdrops
  3. กดปุ่มเครื่องมือภู่กัน เลือกสี Fill เป็นสีเทา โดยเลือก Saturation เป็น 0 (จะเทาเข้มหรืออ่อนก็ได้)
  4. วาดเส้นเป็นวงไปรอบพื้นที่ ระวังตกขอบ อย่าลืมเผื่อที่ให้หุ่นยนต์ด้วย
  5. ถ้าต้องการแก้ไข สามารถกดปุ่ม Undo หรือปุ่มยางลบแล้วลบบางส่วนของเส้นได้
  6. เมื่อเสร็จแล้ว ให้กดที่แท็บ Code แล้วคลิกที่ตัวละคร Robot จะพบโปรแกรมเดิมอีกครั้ง

ลองดูวิธีการในวิดีโอสาธิตนี้ครับ

https://youtu.be/HGioKUdUBo4

Hints / คำสั่งที่อาจมีประโยชน์

  1. Controls -> if … then …
  2. Sensing -> color ___ is touching ___?
  3. Look -> say _____ for 2 seconds

ลองดูคำแนะนำเพิ่มเติมจากวิดีโอนี้

ปัญหาที่มักพบ

  1. ถ้าหุ่นยนต์ตัวใหญ่เกินไปจะทำให้การควบคุมทำได้ลำบาก เพราะจะรู้สึกอึดอัดคับแคบ ชนเส้นสองส่วนพร้อมกัน หรืออาจตกขอบเวที ปัญหานี้แก้ได้โดยปรับขนาดให้เล็กลงโดยมี 2 วิธีคือ อาจแก้ตัวเลขที่ช่อง Size ใต้เวทีให้น้อยกว่า 100% หรืออาจใช้บล็อกคำสั่ง Looks -> set size to ___%
  2. ถ้าหุ่นยนต์ตัวเล็กเกินไปก็จะเกิดปัญหาเช่นกัน อย่างน้อยไข่มุกทั้งสองลูกจะต้อง “คร่อมเส้น” ได้ (อยู่คนละข้างของเส้น)
  3. ถ้าหุ่นยนต์เดินเร็วเกินไปจะทำให้หลุดออกจากเส้นได้ง่าย
  4. ไข่มุกจะต้องล้ำมาทางด้านหน้าของจุดหมุนของตัวละคร และจะต้องแผ่ออกไปด้านข้างพอสมควร ไม่มีสูตรสำเร็จว่าจะต้องอยู่ตำแหน่งไหน ลักษณะการเดินของหุ่นยนต์ของแต่ละคนอาจไม่เหมือนกัน
  5. องศาของการเลี้ยว ถ้าน้อยเกินไปก็อาจชนซ้ำแล้วซ้ำเล่า ไม่สามารถหมุนตัวออกจากการชนเส้นได้เสียที แต่ถ้าองศามากเกินไปก็จะทำให้ ___________ ? (ท่านคิดว่าน่าจะทำให้เป็นอย่างไร? ลองคิดดู หรือลองทดลองดู)
  6. ถ้าไข่มุกชนเส้นแล้วไม่มีอะไรเกิดขึ้นให้ท่านทดลองดูดสีใหม่ (สำหรับบล็อกเงื่อนไข color ___ is touching ___ ?) โดยให้ใช้การดูดสีที่กลางไข่มุก หรือกลางเส้น อย่าดูดที่ริมเส้น และอย่าใช้สายตาเปรียบเทียบสีเอาเอง
  7. การหักมุมที่มากเกินไปของเส้น อาจทำให้เกิดปัญหาได้ แต่ก็เป็นความท้าทายอย่างหนึ่งที่น่าสนุก ดังนั้นควรทำเส้นทางให้ง่ายในช่วงแรก แล้วค่อยปรับแก้ให้วิบากมากขึ้น

ชวนคิด

  1. เมื่อหุ่นยนต์พูดว่า “มือซ้ายชนเส้น” แปลว่าหุ่นยนต์กำลังจะหลุดออกนอกเส้นไปทิศทางใด? ดังนั้นท่านควรกดปุ่มใดบนคีย์บอร์ด?
  2. คำถามเดียวกับ #1 สำหรับกรณี “มือขวาชนเส้น”
  3. การหันซ้าย หันขวา ของหุ่นยนต์เป็นมุมที่มากหรือน้อยเกินไปหรือไม่? ถ้าหมุนน้อยไปจะเป็นอย่างไร? ถ้าหมุนมากไปจะเป็นอย่างไร? ท่านคิดว่าควรปรับแก้เป็นกี่องศา?​ (ลองปรับแก้ได้เลย)
  4. ลองกลั่นกรองกลยุทธ์ในการเล่นเกมนี้ ออกมาเป็นอัลกอริทึม จดไว้ในกระดาษในรูปแบบของ pseudocode หรือ flowchart แล้วเราจะนำอัลกอริทึมนี้มาเขียนเป็นโปรแกรมใน checkpoint #4

เฉลย

วิดีโอลับ [vid90 เฉลย | checkpoint 3 | หุ่นยนต์เดินตามเส้น | Scratch activity]