Wii Pong

เนื่องจากนัท challenge ให้เราเขียนบล็อกเรื่องนั้นเรื่องนี้สารพัด วันนี้ก็ตามใจซักเรื่องละกัน แม้ว่าซีเนียร์โปรเจ็คจะจี้ตูดอยู่ก็ตาม อ๊ากกก

วัตถุประสงค์ของการเขียนบล็อกคอเลคชั่นนี้คืออยากแบ่งปันเรื่องราวให้กับคนอื่น อยากจุดประกาย และอยากเก็บเป็นความทรงจำที่อีกสิบปีมาอ่านแล้วก็ด่าตัวเองว่าเขียนอะไรไปวะเนี่ย 55 โดยที่เรามีจุดยืนคือจะโพสต์ทุกอย่างในบล็อกของตัวเอง จะไม่มี facebook, medium, tumblr ใดๆ ทั้งสิ้น เราเขียนบล็อก host เองมาตั้งแต่ ป.5 แล้วย่ะะะ @Nut Pattanavijit

คืนนี้อยากเล่าโปรเจ็ควิชา Prog Meth (Programming Methodology) ที่เรียนตอนปี 2 เป็นหนึ่งในไฟนอลโปรเจ็คที่หวนไปคิดทีไรก็คิดว่ามัน extreme ดีทุกครั้ง ขอเกริ่นก่อนว่าวิชานี้หลักๆ เรียนหลักการเขียนโปรแกรมที่ถูกที่ควร เป็นวิชาที่ดีงามมาก (เกลียดคำนี้มาก — ดีงาม) เป็นวิชาที่ practical ได้ใช้ประโยชน์ในอนาคตจริงๆ นะ เด็กๆ ควรจะตั้งใจเรียนวิชานี้ และจดจำนำมาประยุกต์ในการดีไซน์โปรแกรมในปีขั้นสูงต่อๆ ไป

อาจารย์ให้ทำไฟนอลโปรเจ็คโดยทำอะไรก็ได้ที่ใช้ความรู้ที่เรียนมาทั้งหมด ส่วนใหญ่ก็จะทำเกมกัน เพราะมันได้ใช้ความสามารถของ thread และการออกแบบหน้าจอ มันมองง่ายมากกว่าด้วยว่าการทำเกมก็แค่นำ element ต่างๆ มาแปลงเป็นเป็น class ต่างๆ และ inherit ความสามารถขั้นสูงมาได้เรื่อยๆ — จริงๆ ที่เด็กส่วนใหญ่ทำเป็นเกม ก็อาจจะเพราะว่าอาจารย์ชอบยกตัวอย่างเป็นเกมก็ได้นะ 5555

เรากับนัทคู่หูก็ทำโปรเจ็คด้วยกัน โดยตอนแรกก็ยิงไปหลายไอเดีย (จำไม่ได้ละมีไรบ้าง) แต่ก็เบื่อๆ ไม่รู้ทำไรดี จนอยู่ดีๆ เราก็ปิ๊งว่าทำ Pong ดิ (เป็นไอเดียที่โง่มากบอกตรง 555) แต่ Pong เราจะ advance ตรงนี้เราจะใช้ Wii mote เล่นกัน แล้ว Pong เราจะต้องเทพกว่าปกติ คือมีไอเทพให้เก็บแพรวพราว (นึกถึง class Item และมี subclass Item แพรวพราว) ทั้งไอเทมที่ใช้กับตัวเอง (ของดี) และไอเทมที่โยนให้คนอื่น (ของเลวๆ) เออจริงๆ พูดไปไอเดียมันก็เหมือน Mariokart เลยเนอะ

ไอเทมในเกม Wii Pong
ไอเทมในเกม Wii Pong

และตอนนั้นด้วยความแรด นัทก็บอกว่า เฮ้ยลองใช้ git กัน ด้วยความที่เราทั้งคู่ก็ blank มาก ไม่เคยใช้ git มาก่อนเลย วีก็แบบ เอ่อะ จริงดิ มันจะรอดปะ, งานจะเสร็จจริงนะ, sourcecode มันจะหายปะเนี่ยยย… นัทก็บอกว่าลองดูหน่อยยยย

ตอนนั้นคือยังไม่รู้ว่าการจะ push หรือ merge นี่มันต้อง pull update ให้เท่ากับ master ก่อน นึกภาพความล่มจมเอาเอง… กับการพยายาม merge branch ที่ไม่เคยทำสำเร็จ T_T และการเจอกับ merge conflict ตลอดเวลา เพราะยังไม่รู้จัก gitignore (เพิ่งมารู้ตอนทำเสร็จแล้ว..​ ขอบคุณ)

จริงๆ ก็ไม่มีอะไรมาก เราก็ปั่นเกมกันจนสำเร็จ นัทนั่งคำนวณการเด้งลูกบอลให้เป็นธรรมชาติอย่างละเอียดลออ (มาก ให้นางมาโพสต์สูตรเอง) เราก็หา adapter ที่ทำให้ใช้ wiimote ในโปรแกรมเราได้ (ลืมบอกไปว่าก่อนหน้านี้เราคุยกับอาจารย์ว่า ขอใช้ wiimote ตอนพรีเซ้นต์ได้มั๊ย ตอนแรกรู้สึกอาจารย์ก็อึกอักๆ แบบพวกเธอจะเล่นอัลลาย แต่ไปๆ มาๆ เค้าก็ say yes แต่มีเงื่อนไขว่าตอนที่ส่ง sourcecode ไปจะเป็นเวอร์ชันใช้เม้าส์ธรรมดา)

รูป wiimote
รูป wiimote

จำได้ว่าตอนก่อนไปพรีเซ้นต์เพื่อนๆ มองกลุ่มเราอย่างประหลาดใจประมาณว่าพวกแกทำอะร๊ายยยยย ทำไมใช้แท่งๆนี้เล่นเกมล้ะะะ แถมมี sensor ตั้งไว้อีกต่างหาก

ตอนพรีเซ้นต์นี่ตื่นเต้นสุด เพราะก่อนเข้าห้องเนี่ย เล่นได้ไม่มีปัญหา แต่พอเข้าไปพรีเซ้นต์ปุ๊ป ปรากฎว่า wiimote ตัวนึงมันอ่านไม่เจอเซ็นเซอร์ มันแฮ้งค์ไปตลอดทั้งการเล่นเลย เป็นการ demo แบบเล่นฝ่ายเดียว ส่วนอีกฝั่งเป็น dummy นิ่งๆ ตอนนั้นคิดว่าเฮ้ยยย ซวยละ เล่นแผลงๆ แถมไม่เวิร์คอีก กรี๊ดดดด

หลังจากอดทน awkward มานานร่วมหลายนาที จน 1-2 นาทีสุดท้าย อยู่ดีๆ มันก็ใช้ได้เฉยเลย ก็ได้เล่นให้อาจารย์ดูนิดๆ หน่อยๆ ขำๆ อธิบายเรื่องไอเทม เรื่องการดีไซน์นิดๆ หน่อยๆ อาจารย์ก็ดูโอเคกับผลงานเราดี เราก็ดีใจที่รอดละโว้ย 555

พูดถึงตอนนี้ก็อยู่ปีห้าแล้ว ปี 2 นี่รู้สึกว่ามันผ่านมาน้านนานนนนน แต่พอนึกถึงทีไร ก็นึกถึงตอนที่เรากล้าที่จะทำไรบ้าบิ่น กล้าที่จะ challenge ตัวเอง กล้าที่จะคิดริเริ่ม และเป็นงานหนึ่งที่ภูมิใจมากๆ

ป.ล. ลิสต์ของ class ที่ได้สร้างไป

e4