มากันหลายคน อย่าเดินชนหนูนะ | กิจกรรม Scratch หุ่นเดินตามเส้น checkpoint #6

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

แท้จริงแล้ว หากท่านผ่าน checkpoint #5 ก็นับว่าท่านได้ทำภารกิจสำคัญลุล่วงหมดแล้ว ที่เหลือเป็นเพียงส่วนเพิ่มเติม หรือ extra credit ที่ทำเพื่อเอามันเฉยๆ ครับ .. และนี่แหละคือความสนุกอย่างแท้จริง!!!

ท่านจะทำภารกิจแตกต่างจากนี้ก็ได้ จะเพิ่มเติม ต่อเติม หรือดัดแปลงอย่างไรก็ได้ ตามจินตนาการของท่านได้เลย

สิ่งที่เขียนไว้ในนี้เป็นเพียงตัวอย่างและ guideline ให้ลองช่วยกันคิด ช่วยกันทำเท่านั้นเอง

เราจะเพิ่มตัวละคร “คน” ลงไปจำนวนมาก (อย่างน้อย 2-3 คน) ให้คนเดินไปเดินมา แบบอัตโนมัติบ้างก็ได้ เดินตามตำแหน่งของเมาส์ก็ได้ เดินตามการกดปุ่มคีย์บอร์ดก็ได้ (โดยใช้ปุ่ม W-A-S-D แทนปุ่มลูกศร) เมื่อคนเดินชนเส้นเทาเราอาจกำหนดให้คนเปลี่ยนทิศการเดินก็ได้ หรืออาจจะเล่นเปียโนส่งเสียงบางอย่างก็ได้ แล้วแต่ความสนุกของเราเลย

หุ่นยนต์ของเราจะเดินชนคนหลายครั้ง เราจะมีวิธีใดดีในการป้องกันหุ่นยนต์ไม่ให้เดินเหยียบคน? เรามีหลักการคิดได้หลายทาง นี่เป็นตัวอย่างกระบวนการคิดแบบหนึ่ง

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

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

ตัวอย่างการทำงานของโปรแกรม (ซึ่งอาจแตกต่างจากนี้อย่างไรก็ได้)

https://youtu.be/uaFpMoYjQ-Q

ชวนคิด

  1. ถ้าเราเป็นผู้ออกแบบ self driving car เราจะใช้แนวคิดบางอย่างจากงานนี้ได้หรือไม่?
  2. ถ้าหุ่นยนต์ชนมนุษย์ ใครควรจะเป็นคนรับผิด?​

เฉลย

เนื่องจากมีวิธีทำหลายวิธีมาก ขึ้นอยู่กับจินตนาการของแต่ละคน จึงไม่จำเป็นต้องปิดบังเฉลยในปัญหาข้อนี้

ขอให้ใช้วิดีโอเฉลยนี้เพื่อศึกษาถึงตัวอย่างแนวทางการแก้ปัญหาเพียงแบบหนึ่ง อย่าทำตามทุกขั้นตอน เพราะในความเป็นจริงเราสามารถพลิกแพลงได้หลายสิบ หลายร้อยแบบ

https://youtu.be/Ot0ylW-9J9Y