Game snake

ผู้เขียนบทความ : นาย อนุวัฒน์ ชำนาญแทน

คณะวิศวกรรมศาสตร์ สาขาวิศวกรรมไฟฟ้า

วิชา : 04000104 การโปรแกรมคอมพิวเตอร์

1.ความเป็นมา

เกมงูกินผลไม้ หรือ Snake Game เป็นเกมคลาสสิกที่ได้รับความนิยมมาอย่างยาวนาน โดยเฉพาะในยุคของโทรศัพท์มือถือ Nokia ที่มีเกมนี้ติดตั้งมาให้เล่น ซึ่งเกมงูได้สร้างความสนุกสนานและเป็นที่รู้จักของผู้คนทั่วโลก ด้วยความเรียบง่ายของกติกาและการเล่นที่ท้าทาย ทำให้เกมงูยังคงเป็นที่นิยมและมีการพัฒนาต่อยอดมาในรูปแบบต่างๆ บนแพลตฟอร์มที่หลากหลาย การสร้างเกมงูกินผลไม้ด้วย HTML นั้นเป็นการนำเอาเกมคลาสสิกมาดัดแปลงให้เข้ากับเทคโนโลยีเว็บ ซึ่งเป็นที่แพร่หลายและเข้าถึงได้ง่าย ทำให้ผู้คนสามารถเล่นเกมนี้ได้ทุกที่ทุกเวลาผ่านทางเว็บเบราว์เซอร์

2.วัตถุประสงค์

2.1 ฝึกทักษะการเขียนโปรแกรม: เพื่อฝึกฝนและพัฒนาทักษะการเขียนโปรแกรมโดยใช้ HTML, CSS และ JavaScript ในการสร้างเกมง่ายๆ

2.2 ทำความเข้าใจหลักการทำงานของเกม: เพื่อเรียนรู้หลักการพื้นฐานในการสร้างเกม เช่น การควบคุมตัวละคร การตรวจจับการชน การคำนวณคะแนน และการสร้างกราฟิก 2.3สร้างสรรค์ผลงาน: เพื่อสร้างผลงานที่เป็นรูปธรรมและสามารถนำไปเผยแพร่หรือแบ่งปันให้ผู้อื่นได้

2.4นำไปประยุกต์ใช้: เพื่อนำความรู้ที่ได้จากการสร้างเกมไปประยุกต์ใช้ในการพัฒนาเว็บไซต์หรือแอปพลิเคชันอื่นๆ

3.ขอบเขตการทำงาน

3.1 การออกแบบเกม: ออกแบบหน้าตาของเกมให้มีความสวยงามน่าสนใจ กำหนดขนาดของสนามเล่น และจำนวนระดับความยาก

3.2 การเขียนโปรแกรม:

3.2.1 สร้างโครงสร้างของเกมด้วย HTML

3.2.2 ออกแบบรูปแบบและสีสันของเกมด้วย CSS

3.2.3เขียนโค้ด JavaScript เพื่อควบคุมการเคลื่อนไหวของงูและผลไม้ ตรวจสอบ เงื่อนไขการจบเกม และคำนวณคะแนน

3.3 การทดสอบและปรับปรุง: ทดสอบเกมเพื่อหาข้อผิดพลาดและปรับปรุงประสิทธิภาพของเกมให้ดียิ่งขึ้น

3.4 การสร้างเอกสาร: สร้างเอกสารรายงานโครงงานเพื่ออธิบายขั้นตอนการทำงานและผลลัพธ์ที่ได้

4.ประโยชน์ที่ได้รับ

4.1 ความรู้และทักษะ: ได้รับความรู้และทักษะในการเขียนโปรแกรมเว็บเบื้องต้น

4.2 ประสบการณ์: ได้รับประสบการณ์ในการสร้างโปรเจคจริง

4.3 ความคิดสร้างสรรค์: ได้พัฒนาความคิดสร้างสรรค์ในการออกแบบเกม

4.4 ความภาคภูมิใจ: ได้สร้างผลงานที่เป็นของตนเอง

5.ความรู้ที่เกี่ยวข้อง

5.1ฟังก์ชันหลักและหน้าที่

  • window.onload = function()
    • เป็นฟังก์ชันที่ถูกเรียกทำงานเมื่อหน้าเว็บโหลดเสร็จสมบูรณ์
    • ทำหน้าที่เริ่มต้นเกม โดย:
      • กำหนดตัวแปรต่างๆ เช่น canvas, context, คะแนนเริ่มต้น
      • ตั้งค่า event listener เพื่อรับการกดปุ่ม
      • เริ่ม game loop ด้วย setInterval
  • game()
  • keyPush(evt)
    • ฟังก์ชันนี้ถูกเรียกเมื่อมีการกดปุ่ม
    • ทำหน้าที่เปลี่ยนทิศทางของงูตามปุ่มที่กด

5.2อธิบายตัวแปรสำคัญ

  • canv, ctx: แทน canvas element และ context 2d ที่ใช้สำหรับวาดภาพบน canvas
  • positionX, positionY: พิกัด x, y ของหัวงู
  • gs, tc: ขนาดของ grid และจำนวน grid ในแนวนอน/แนวตั้ง
  • cherryX, cherryY: พิกัดของอาหาร
  • xv, yv: ความเร็วในการเคลื่อนที่ตามแกน x และ y
  • trail: array ที่เก็บพิกัดของแต่ละส่วนของงู
  • tail: ความยาวของงู
  • score: คะแนน

5.3วิธีการทำงานโดยรวม

  1. เมื่อหน้าเว็บโหลดเสร็จ จะเริ่มต้นเกมและเตรียม canvas สำหรับวาดภาพ
  2. game loop จะถูกเรียกซ้ำๆ ทำให้เกมเคลื่อนไหวไปเรื่อยๆ
  3. เมื่อผู้เล่นกดปุ่ม ทิศทางของงูจะเปลี่ยนไป
  4. งูจะเคลื่อนที่ไปตามทิศทางที่กำหนด
  5. ถ้างูกินอาหาร ความยาวของงูจะเพิ่มขึ้น และจะมีการสร้างอาหารใหม่
  6. ถ้างูชนขอบหรือตัวเอง เกมจะเริ่มต้นใหม่

5.4สิ่งที่โค้ดนี้ทำได้และข้อจำกัด

  • ข้อดี:
    • เป็นตัวอย่างพื้นฐานของเกมงูที่ใช้ HTML5, CSS และ JavaScript
    • โค้ดอ่านง่ายและเข้าใจได้ไม่ยาก
    • สามารถนำไปปรับปรุงและเพิ่มฟีเจอร์ต่างๆ ได้
  • ข้อจำกัด:
    • เป็นเกมงูแบบง่าย ยังไม่มีฟีเจอร์พิเศษ เช่น อาหารพิเศษ, อุปสรรค, หรือหลายผู้เล่น
    • กราฟิกยังเรียบง่าย
    • ไม่มีการจัดการกับเหตุการณ์อื่นๆ เช่น การหยุดเกม หรือการเริ่มเกมใหม่

5.5การพัฒนาเพิ่มเติม

  • เพิ่มกราฟิก: ใช้ CSS หรือ library อื่นๆ เพื่อสร้างกราฟิกที่สวยงามขึ้น
  • เพิ่มเสียง: ใช้ HTML5 Audio API เพื่อเพิ่มเสียงประกอบ
  • เพิ่มฟีเจอร์: เช่น อาหารพิเศษที่ให้ผลต่างกัน, อุปสรรคที่ขวางทาง, หรือโหมดหลายผู้เล่น
  • ปรับปรุงประสิทธิภาพ: ใช้เทคนิคต่างๆ เพื่อเพิ่มความเร็วของเกม เช่น requestAnimationFrame แทน setInterval
  • ทำเกมให้ซับซ้อนขึ้น: เพิ่มระดับความยาก หรือสร้างเงื่อนไขพิเศษในการเล่น

6.ผลการดำเนินงาน

6.1 ระดับความยาก: เกมที่ตั้งค่าความยากสูงจะทำให้เกมจบเร็วขึ้น เนื่องจากความเร็วของงูเพิ่มขึ้น หรือมีอุปสรรคมากขึ้น

6.2 ทักษะของผู้เล่น: ผู้เล่นที่มีทักษะในการควบคุมงูจะสามารถเล่นได้นานขึ้นและได้คะแนนสูงขึ้น

6.3 โหมดการเล่น: บางเกมอาจมีโหมดการเล่นที่แตกต่างกัน เช่น โหมดเวลาจำกัด โหมดเอาชีวิตรอด ซึ่งจะส่งผลต่อผลการเล่น

6.4 อุปกรณ์ที่ใช้เล่น: อุปกรณ์ที่ใช้เล่น เช่น คอมพิวเตอร์ มือถือ ก็มีผลต่อประสบการณ์การเล่นและผลลัพธ์

6.5 คะแนนสูงสุด: คะแนนที่ผู้เล่นทำได้สูงที่สุดในเกม

6.6 ระยะเวลาที่เล่น: ระยะเวลาที่ผู้เล่นสามารถเล่นได้ก่อนเกมจบ

6.7 ความยาวของงู: ความยาวสูงสุดของงูที่ผู้เล่นสามารถทำได้

6.8 ระดับที่ผ่าน: ในบางเกมอาจมีการแบ่งระดับความยาก ผู้เล่นจะต้องผ่านแต่ละระดับไปเรื่อยๆ

6.9 สถิติอื่นๆ: เช่น จำนวนครั้งที่ชนอุปสรรค จำนวนครั้งที่กินอาหาร เป็นต้น

7.ผลการทดลอง

7.1 เมื่องูกินเชอร์รี่ความยาวงูจะเพิ่มขึ้นและสกอร์จะเพิ่มขึ้น

7.2 เมื่องูกินหางตัวเองจะทำความยาวงูและสกอร์ลดลง

8.สรุปผลการทดลอง

เข้าใจพื้นฐานของเว็บ: เกมนี้ช่วยให้เข้าใจการทำงานของ HTML, CSS, และ JavaScript ในการสร้างองค์ประกอบของหน้าเว็บและสร้างปฏิสัมพันธ์ ฝึกฝนตรรกะในการเขียนโปรแกรม: การสร้างเกมงูต้องใช้ตรรกะในการควบคุมการเคลื่อนที่ของงู การตรวจจับการชน และการจัดการคะแนน เรียนรู้การใช้ Canvas: Canvas เป็น API ที่ทรงพลังสำหรับการวาดภาพบนหน้าเว็บ ซึ่งเกมงูเป็นตัวอย่างที่ดีในการใช้งาน Canvas เข้าใจ Event Handling: การรับ input จากผู้ใช้ผ่านการกดปุ่มบนแป้นพิมพ์เป็นการฝึกฝนการใช้ event listener ใน JavaScript สร้างสรรค์ผลงาน: เกมงูเป็นโครงงานที่สามารถปรับแต่งและขยายได้หลากหลาย ทำให้ผู้สร้างสามารถสร้างสรรค์ผลงานที่เป็นเอกลักษณ์

9.เอกสารอ้างอิง

9.1 W3Schools. (n.d.). HTML Tutorial. Retrieved from https://www.w3schools.com

9.2 การใช้งานโปรแกรม Visual Studio Code from https://youtu.be/RhSOtdQsu70?si=LKtJev9I5nSHhFuU

10.วิดีโออธิบายโค้ดเกมงูกินเชอร์รี่

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *