วันนี้เด็กๆม.ต้นก็เขียนโปรแกรม Scratch กันต่อนะครับ วันนี้ผมแนะนำเด็กๆให้รู้จักคำสั่งพวก Clone และ Broadcast
เราใช้คำสั่ง create clone of … เพื่อสร้างตัวละครใน Scratch เพิ่มขึ้น ตัวที่ถูกสร้างเรียกว่าเป็น clone (โคลน) ใช้คำสั่ง when I start as a clone เพื่อให้รู้ว่าตัวที่เป็นโคลนควรจะทำอะไรบ้าง ใช้คำสั่ง delete this clone เพื่อลบโคลนให้หายไปครับ
ตัวอย่างเช่น https://scratch.mit.edu/projects/226828866/ เราสร้างโคลนแมวออกมาหลายๆตัว โดยที่โคลนแต่ละตัวก็จะร้องเหมียวแล้วก็หายไปครับ:
ประโยชน์มันก็เช่นถ้าเราต้องการกองทัพหุ่นยนต์ในเกมของเรา เราก็สร้างตัวละครหุ่นยนต์ขึ้นมาตัวหนึ่งก่อน แล้วสร้างโคลนขึ้นมา 50 ตัวโดยโคลนแต่ละตัวก็มีโค้ดว่าพวกมันควรปฏิบัติตัวอย่างไรครับ
ให้เด็กๆไปดูเพิ่มเติมที่ https://scratch.mit.edu/projects/10170600/ และที่ https://en.scratch-wiki.info/wiki/Cloning ครับ
เราใช้คำสั่ง broadcast คู่กับ when I receive… คือให้ตัวละครป่าวประกาศข้อความบางอย่างด้วยคำสั่ง broadcast แล้วตัวละครอื่นๆใช้คำสั่ง when I receive คอยฟังข้อความที่อยากฟัง ถ้าได้ยินก็ทำงานต่อไปครับ ตัวอย่างเช่นที่ https://scratch.mit.edu/projects/226829837/ แมวร้องเหมียว แล้ว broadcast ว่าให้เป็ดร้องได้ เป็ดได้ยินดังนั้นก็ร้องก้าบแล้ว broadcast ว่าให้แมวร้องได้ แมวได้ยินดังนั้นก็ร้องเหมียว แล้วแล้ว broadcast ว่าให้เป็ดร้องได้ เป็นอย่างนี้ไปเรื่อยๆครับ
อีกตัวอย่างก็เช่นโค้ดที่ผมใช้จำลองการเคลื่อนที่ของดาวสองดวงเมื่อมีแรงโน้มถ่วงระหว่างกันที่ https://scratch.mit.edu/projects/225919898/
ที่ผมใช้คำสั่ง broadcast StartSimulation เพื่อประกาศให้ดาวต่างๆรู้ว่าจะเริ่มทำการจำลองการเคลื่อนที่ล่ะนะ:
ดาวต่างๆก็คอยฟังประกาศ ถ้ามีประกาศว่า StartSimulation ก็เตรียมตัววาดวงโคจร:
หรือเมื่อแก้สมการอนุพันธ์การเคลื่อนที่ของดาวจากแรงโน้มถ่วงเสร็จ ได้ตำแหน่งใหม่ของดาว ก็ broadcast UpdatePositions เพื่อประกาศให้ดาวขยับตัวไปตำแหน่งใหม่ได้:
เมื่อดาวได้ยินประกาศที่ว่า UpdatePositions ดาวก็ขยับไปตำแหน่งใหม่ที่คำนวณได้มา:
สำหรับเรื่อง Broadcast ถ้ายังไม่เข้าใจ ให้เด็กๆไปดูเพิ่มเติมที่ https://www.youtube.com/watch?v=BnYbOCiudyc และ https://en.scratch-wiki.info/wiki/Broadcast ครับ