บอล นักเปียโน

ปกติลูกบอลจะเคลื่อนที่ไปมาตลอด เมื่อชนขอบเวทีก็จะเด้งกลับ แต่ถ้าชนกับคีย์เปียโนจะเกิดเสียงของคีย์นั้นๆ ส่วนจะเด้งกลับหรือผ่านไปเฉยๆ ขึ้นกับสถานะการสะท้อนในตัวแปร “rebound” ณ ขณะนั้น ลูกบอลมีอยู่ด้วยกัน 6 ลูก ตอนเริ่มต้นมีอยู่เพียง 3 ลูกเท่านั้นบนเวที แต่สามารถเพิ่มลดได้ด้วยปุ่มควบคุมจำนวน

สคริปต์ของลูกบอลนั้น ค่อนข้างยาวทีเดียว แต่มีลักษณะคล้ายกันทั้ง 6 ลูก ดังนั้นมาดูสคริปต์ของลูกแรก ก็น่าจะเพียงพอกับการทำความเข้าใจลูกบอลที่เหลือ

เมื่อเริ่มต้นบรรเลงเปียโน ลูกบอลแต่ละลูกจะปรากฎหรือไม่ ขึ้นกับตัวแปร “balls” ซึ่งถูกกำหนดด้วยปุ่มควบคุมจำนวนลูกบอล โดยการส่งรหัส “number of balls changed” บอกกับลูกบอลทุกลูกให้เช็คสิทธิการปรากฎตัว เช่น เมื่อได้รับรหัสนี้ ลูกบอล 1 (ball1) ตรวจดูว่า balls > 0 หรือไม่ ลูกบอล 2 (ball2) ตรวจดูว่า balls > 1  หรือไม่ เป็นต้น สำหรับบอล 1  ถ้ามากกว่า 0 ก็จะปรากฎบนเวที (show) ถ้าไม่ใช่ก็ซ่อนตัว (hide) ซึ่งในกรณีนี้ตอนเริ่มต้น ปุ่มควบคุมจำนวนลูกบอลได้กำหนดตัวแปร balls = 3 ทำให้ลูกบอล 1-3 ปรากฎบนเวที

เมื่อคลิกธงเขียวลูกบอลจะมาด้านหน้า (go to front) เพื่อให้เห็นลูกบอลตลอดเวลาขณะเคลื่อนที่ไปมา ทิศการเคลื่อนที่ถูกกำหนดแบบสุ่ม ระหว่าง 1 ถึง 360 องศา จากนั้นจะเคลื่อนที่ไปเรื่อยๆ โดยใช้บล็อกตลอดเวลา (forever) ควบคุม การเคลื่อนที่จะเร็วหรือช้าถูกกำหนดในตัวแปร “speed” ซึ่งเริ่มต้นที่ 10 จากนั้นจะตรวจสอบการชนขอบเวที ถ้าชนก็จะเด้งกลับ ก่อนที่จะเคลื่อนที่ต่อไปก็จะหยุด (wait) 0.01 วินาที

ระหว่างเคลื่อนที่ไปก็จะตรวจสอบด้วยว่าต้วเองไปกระทบกับคีย์ไหนบ้าง การตรวจสอบนี้ทำเหมือนกันหมดทั้ง 17 คีย์ ซึ่งจะมาดูกันแค่คีย์ “keyC-48” เป็นตัวอย่าง คีย์อื่นก็คล้ายๆกัน การตรวจสอบนี้เกิดตลอดเวลา ทำให้ต้องทำในบล็อกตลอดเวลาถ้า (forever if) ถ้าลูกบอลสัมผัสกับคีย์นี้ (touching keyC-48) มันจะเช็คต่อไปว่าตัวแปร rebound=1 หรือไม่ ถ้าใช่ก็จะสะท้อนโดยกำหนดทิศการเคลื่อนที่ใหม่เท่ากับ 180 + direction โดยที่ตัวแปร direction เก็บค่าทิศการเคลื่อนที่ปัจจุบันไว้ ทำให้ลูกบอลสะท้อนกลับ 180 องศาจากทิศเดิม จากนั้นมันจะส่งรหัสบอกคีย์ที่มันชน ซึ่งก็คือ keyC-48 และจะรออยู่สักพักจนกว่ามันจะออกจากคีย์นี้ โดยเช็คว่ามันไม่สัมผัสคีย์นี้แล้ว (not tounching keyC-48)

ระหว่างการบรรเลงเพลง ผู้ใช้อยากเปลี่ยนเสียงเพลงก็ทำได้หลายวิธี เช่น เปลี่ยนการสะท้อนกลับ เปลี่ยนจำนวนลูกบอล เพิ่มหรือลดความเร็วของลูกบอล และสุดท้าย คลิกที่ว่างบนเวที จะทำให้เวทีส่งรหัส “new random direction” ออกมา ซึ่งลูกบอลทุกลูกฟังอยู่ เมื่อได้รหัสนี้ ลูกบอล 1 จะเปลี่ยนทิศการเคลื่อนที่ของตัวเองแบบสุ่มระหว่าง 1 ถึง 360 องศา ทำให้มีโอกาสได้เสียงใหม่เกิดขึ้นถ้าไม่ได้สุ่มทิศเดิมหรือทิสใกล้เคียง

สคริปต์ลูกบอลค่อนข้างยาวทีเดียว คราวหน้ามาดูวิธีการควบคุมแบบอื่นๆกันครับ

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s