เดินเหนื่อยมั้ย เส้นชัยช่วยนับรอบ | กิจกรรม Scratch หุ่นเดินตามเส้น checkpoint #5
ภารกิจสำหรับ checkpoint นี้
แก้ไขโปรแกรมจาก checkpoint #4 ให้สามารถนับจำนวนรอบในการเดินได้
เราจะวาง “เส้นชัย” ขวางเส้นทางการเดินไว้ จากนั้นจะเขียนโค้ดให้เส้นชัยคอยนับจำนวนครั้งที่หุ่นยนต์เคลื่อนที่ผ่าน ทั้งนี้เส้นชัยอาจเป็นเพียงเส้นสีแดงธรรมดาๆ (ตัวละครชื่อ Line) หรือตัวละครอื่นที่มีลักษะยาวคล้ายเส้นก็ได้ (เช่น Magic Wand, ไม้กวาด, หรือขนมปัง)
ตัวอย่างผลลัพธ์
ตัวอย่างการทำงานของโปรแกรม
ขั้นตอนโดยสังเขป
- สร้างตัวแปรชื่อ count (หรือจะใช้ชื่อภาษาไทยว่า “จำนวนรอบ” ก็ได้)
- เพิ่มตัวละครที่เป็นเส้นชัย หมุนและวางไว้ในตำแหน่งที่เหมาะสม
- เขียนโค้ดให้เส้นชัยทำงานวนซ้ำไปเรื่อยๆ แต่ละรอบของการวนซ้ำให้ถามตนเองว่ากำลังสัมผัสกับหุ่นยนต์อยู่หรือไม่
- ถ้าสัมผัสหุ่นยนต์ เส้นชัยควรทำอะไรกับตัวแปรนั้น?
- สังเกตดูว่าการเคลื่อนผ่านแต่ละครั้ง จะเพิ่มค่าตัวแปรขึ้นทีละกี่หน่วย? เราจะใช้คำสั่งใดช่วยป้องกันการนับซ้ำได้บ้าง?
- เมื่อเริ่มต้นโปรแกรม ตัวแปรดังกล่าวมีค่าเท่าใด? ลองเริ่มโปรแกรมอีกครั้งแล้วสังเกตค่าตัวแปรว่าเป็นอย่างที่ควรเป็นหรือไม่?
hints / คำสั่งที่ต้องใช้
จะต้องเพิ่มตัวละครโดยกดปุ่มนี้ที่ใกล้มุมล่างขวา

การทำงานเกี่ยวกับตัวแปร ให้เลือกกลุ่มบล็อก Variables (สีส้มเข้ม)
การสร้างตัวแปร ให้กดปุ่ม “Make a Variable” แล้วตั้งชื่อ
การกำหนดค่าตัวแปร ให้ใช้บล็อกคำสั่ง set ____ to ___ แล้วเลือกชื่อตัวแปรที่เราต้องการ
การเพิ่มหรือลดค่าตัวแปร ให้ใช้บล็อกคำสั่ง change ____ by ___ ถ้าตัวเลขหลัง by เป็นบวกก็จะเป็นการเพิ่มค่า ถ้าเป็นลบก็จะเป็นการลดค่า (อย่าลืมเลือกชื่อตัวแปรที่เราต้องการ)

เพื่อป้องกันการนับซ้ำ คำสั่งในกลุ่ม Controls ที่อาจนำมาใช้ได้มีอยู่สองคำสั่งคือ wait __ seconds และ wait until ____ ซึ่งคำสั่ง wait until จะต้องการเงื่อนไขที่ต้องการให้หยุดรอ เช่น รอจนกว่าตัวละครทั้งสองจะไม่สัมผัสกัน
การกำหนดเงื่อนไขว่าตัวละครสองตัวสัมผัสกัน สามารถใช้คำสั่ง Sensing -> touching _______ (เดิมจะเขียนว่า touching mouse-pointer) แต่เราสามารถเปลี่ยน mouse-pointer เป็นชื่อตัวละครอื่นได้ ซึ่งในกรณีนี้เราต้องการให้ตัวละครเส้นชัย รอจนกว่าจะ ไม่ สัมผัสกับหุ่นยนต์ คำว่า ไม่ ในที่นี้แทนด้วยบล็อก Operators -> not ______ ซึ่งสามารถนำมาประกอบกับเงื่อนไขของ touching ได้
ถ้าต้องการความสนุก ท่านสามารถเพิ่มเสียงดนตรีได้โดยกดปุ่ม add extension ด้านล่าง (ดูรูป) แล้วเลือก Music จะพบว่ามีกลุ่มบล็อกใหม่โผล่ขึ้นมาชื่อ Music และสามารถเพิ่มเสียงกลอง หรือเสียงตัวโน้ต ที่เรากำหนดความถี่และความยาวได้ตามต้องการ


ปัญหาที่มักพบ
- ปัญหาการนับเกิน (แก้ไขโดยใช้ wait until not touching …)
- ปัญหาเลือกตัวแปรผิด ทำให้ค่าไม่เปลี่ยนไปตามที่ต้องการ
- ตัวแปรอาจไม่เริ่มต้นจาก 0 ทำให้การรันโปรแกรมครั้งที่สองเป็นต้นไป ได้ค่าการนับที่สูงเกินจริง
ชวนคิด
- เราจะนำตัวแปรมาใช้ในการควบคุมสิ่งอื่นใดได้อีกบ้าง?
- ถ้าต้องการเขียนโปรแแกรมให้ปุ่ม space bar เพิ่มความเร็วของตัวละคร ในขณะที่ปุ่ม backspace ลดความเร็ว จะต้องทำอย่างไร?
เฉลย
วิดีโอลับ [vid90 เฉลย | checkpoint 5 | หุ่นยนต์เดินตามเส้น | Scratch activity]