เริ่มเรียนรู้ Physical Programming ด้วย Scratch และ GPIO บน Raspberry Pi ตอนที่ 5

[ตอนที่ 1][ตอนที่ 2][ตอนที่ 3][ตอนที่ 4]

ตอนนี้จะเป็นตอนสุดท้ายสำหรับการเสนอตัวอย่างการใช้ GPIO Server ของ Scratch 1.4 บน Raspberry Pi แล้วครับ หลังจากนี้ก็จะเป็นเข้าสู่เรื่องการใช้ Remote Sensing Protocol ซึ่งเป็นการสื่อสารระหว่าง Scratch 1.4 กับ Python โปรแกรมครับ

ในตอนนี้จะแสดงตัวอย่างการเชื่อมโยงกริยาของตัวละครเข้ากับค่าที่รับได้จาก GPIO ในรูปแบบของเกมส์ครับ กติกาของเกมส์นี้ง่ายมาก ตัวละครจะได้รับคะแนน 10 คะแนนในตอนเร่ิมเล่น และจะต้องกระโดดหลบลูกบอลล์ที่กลิ้งออกมาให้ได้ หากหลบไม่ทันโดนบอลล์ก็จะเสียคะแนน 1 คะแนน เกมส์จะยุติเมื่อคะแนนลดหลงเหลือ 0

สร้างสภาพแวดล้อม

กำหนดตัวละคร (Sprite)

1. Ball (Sprite1)





2. Jumper (Sprite2)



ตัวละครตัวนี้มีสองกริยา คือ idle state คือท่ายืนตรง  และ jumping state ใช้ชื่ออ้างอิงว่า breakdance-2 ใช้ชื่อในการอ้างอิงสำหรับ costume เป็น breakdance-1 และ breakdance-2 ตามลำดับ


3. Stage background 






หลังจากนั้นก็จัดวางตำแหน่งของตัวละครตามต้องการ ก็จะได้ออกมาดังภาพข้างล่าง





เขียน Script กัน

1. Ball  (Sprite1)

กำหนดทิศทางการเคลื่อนที่ 

Ball จะกลิ้งออกมาจากเวทีทางด้านขวามือ มุ่งไปสู่ด้านซ้าย โดยใช้การวน loop ร่วมกับการกำหนดทิศทาง





ระยะเวลาในการออกมาบนเวที (Stage) ของ Ball จะเป็นแบบสุ่ม ทำโดยการกำหนดการหน่วงเวลาไว้แบบสุ่มระหว่าง 1,2 หรือ 3 วินาที



ตรวจสอบการชน (collision detection

ในการเคลื่อนที่ของ Ball จะต้องมีการตรวจสอบการชนกับตัวละครตัวอื่นในที่นี้คือ Sprite2 หากมีการชนเกิดชึ้น

  • ผู้เล่นจะเสียคะแนนไป 1 คะแนน และ 
  • Ball จะเปลี่ยนทิศทางการเคลื่อนที่


Script ทั้งหมดในส่วนของการเคลื่อนที่ของ Ball มารวมกันจะได้






Script ทั้งหมดของ Ball (รวมการกำหนดตำแหน่งบน Stage และค่าเริ่มต้น)





2. Jumper (Sprite2)

กริยาเดียวที่ Sprite2 นี้กระทำคือการกระโดด การกระโดดทำได้โดยการเปลี่ยนตำแหน่งในแนวตั้ง ดังภาพ



การกระโดดจะโยงกับการเปลี่ยน costume ด้วย ดังนั้นเราจะเติม block ที่ช่วยการเปลี่ยน costume ของตัวละคร




นอกจากจะโยงกับการเปลี่ยน costume แล้ว การกระโดดจะเกิดขึ้นได้ก็ต่อเมื่อได้รับค่าจาก GPIO Pin โดยเราจะนำเอาความรุ้เรื่องการใช้ Push button switch จากตอนที่ 3 มาใช้ จะได้




Script ทั้งหมดสำหรับ Sprite2



ผลลัพธ์ 





ปล.

1. เอกสารการใช้งาน Scratch 1.4
2. Source code ของโครงงาน

Previous
Next Post »