วิทย์ม.ต้น: เขียน Scratch ต่อ, หัดใช้ Clone และ Broadcast

วันนี้เด็กๆม.ต้นก็เขียนโปรแกรม Scratch กันต่อนะครับ วันนี้ผมแนะนำเด็กๆให้รู้จักคำสั่งพวก Clone และ Broadcast

เราใช้คำสั่ง create clone of … เพื่อสร้างตัวละครใน Scratch เพิ่มขึ้น ตัวที่ถูกสร้างเรียกว่าเป็น clone (โคลน) ใช้คำสั่ง when I start as a clone เพื่อให้รู้ว่าตัวที่เป็นโคลนควรจะทำอะไรบ้าง ใช้คำสั่ง delete this clone เพื่อลบโคลนให้หายไปครับ

สามคำสั่งหลักเกี่ยวกับ Clone ครับ
สามคำสั่งหลักเกี่ยวกับ 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 เพื่อประกาศให้ดาวต่างๆรู้ว่าจะเริ่มทำการจำลองการเคลื่อนที่ล่ะนะ:

broadcast StartSimulation เพื่อประกาศให้ดาวต่างๆรู้ว่าจะเริ่มคำนวณการเคลื่อนที่ล่ะนะ
broadcast StartSimulation เพื่อประกาศให้ดาวต่างๆรู้ว่าจะเริ่มคำนวณการเคลื่อนที่ล่ะนะ

ดาวต่างๆก็คอยฟังประกาศ ถ้ามีประกาศว่า StartSimulation ก็เตรียมตัววาดวงโคจร:

ถ้าดาวได้ยินว่า StartSimulation ก็เตรียมวาดวงโคจรได้
ถ้าดาวได้ยินว่า StartSimulation ก็เตรียมวาดวงโคจรได้

หรือเมื่อแก้สมการอนุพันธ์การเคลื่อนที่ของดาวจากแรงโน้มถ่วงเสร็จ ได้ตำแหน่งใหม่ของดาว ก็ broadcast UpdatePositions เพื่อประกาศให้ดาวขยับตัวไปตำแหน่งใหม่ได้:

เมื่อแก้สมการอนุพันธ์การเคลื่อนที่ของดาวจากแรงโน้มถ่วงเสร็จ ได้ตำแหน่งใหม่ของดาว ก็ broadcast UpdatePositions เพื่อประกาศให้ดาวขยับตัวไปตำแหน่งใหม่ได้
เมื่อแก้สมการอนุพันธ์การเคลื่อนที่ของดาวจากแรงโน้มถ่วงเสร็จ ได้ตำแหน่งใหม่ของดาว ก็ broadcast UpdatePositions เพื่อประกาศให้ดาวขยับตัวไปตำแหน่งใหม่ได้

เมื่อดาวได้ยินประกาศที่ว่า UpdatePositions ดาวก็ขยับไปตำแหน่งใหม่ที่คำนวณได้มา:

เมื่อดาวได้ยินประกาศ UpdatePositions ดาวก็ขยับไปตำแหน่งใหม่ที่คำนวณได้มา
เมื่อดาวได้ยินประกาศ UpdatePositions ดาวก็ขยับไปตำแหน่งใหม่ที่คำนวณได้มา

สำหรับเรื่อง Broadcast ถ้ายังไม่เข้าใจ ให้เด็กๆไปดูเพิ่มเติมที่ https://www.youtube.com/watch?v=BnYbOCiudyc และ https://en.scratch-wiki.info/wiki/Broadcast ครับ

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.