บทเรียนการพัฒนาเกมด้วย SDL และ C++ ครั้งนี้จะเป็นการเล่นกับ Mouse และโหลดภาพ Format ที่ต่างจาก BMP นั่นคือเราจะมี Library ในการโหลดภาพ นามสกุลอื่นๆและเราต้องแก้ไขในส่วน Environment ของ DevC++ อีกที ก็หลังจากที่เราได้ศึกษาการโหลดภาพ sprite และ Backgrouds
มาแล้วในบทความ ซึ่งหากใครที่งงว่าจะเริ่มยังไงไปึกฝน และ ตั้งค่ากันเริ่มต้นก่อนที่นี่ เส้นทางการเป็นนักพัฒนาเกม: ติดตั้ง DevC++ และ SDL เพื่อพัฒนาเกม ไปแล้วครั้งนี้เราก็จะเริ่มต้นเขียนโปรแกรมเรียกใช้งาน รูปภาพจาก ไฟล์มาโชว์ และ ใช้วิธีการวางภาพ วัตถุให้อยู่บน ภาพแบล็คกราวน์ (Backgroud and Sprite) ซึ่งหากทำไปแล้วจะ Compile โปรแกรมออกมาได้ดังรูปภาพตัวอย่างของบทความ
ครั้งนี้คุณต้องมีการติดตั้ง Extension เสริมสำหรับ IDE อย่างเจ้าตัว DevC++ ครับ
ซึ่งเราจะต้องทำความรู้จักกับ Libraay เสริมเรื่องของ Images และ นามสกุลอื่นๆ อย่างเจ้า Librarry ตัวนี้ ที่มีชื่อว่า SDL_image ครับ ก่อนอื่นเลยต้องไปดาวน์โหลดเจ้าไฟล์ Librarry ก่อนที่นี่ครับ
http://www.libsdl.org/projects/SDL_image/
เมื่อเข้าไปที่หน้าเว็บไซต์ของ SDL_image แล้วให้ทำการเลือกดาวน์โหลด ชุดพัฒนา Platform ครับซึ่งผมใช้ Windows ในการพัฒนาก็ต้องเลือก Package ดังนี้
ดาวน์โหลดมาเลยครับแล้วทำการแตกไฟล์ ออกมาจะได้ โฟล์เดอร์ และ ข้าางใน หน้าตาประมาณนี้
ให้เข้าไป Copy file SDL_image.h ไปไว้ใน โฟล์เดอร์ SDL ในส่วนของ includeSDL ซึ่งในเครื่องผมผมวางไว้ที่
C:SDLSDL-1.2.14includeSDL
หลังจากนั้นก็วาง paste file ลงใน Folder SDL หลัก
สร้างโฟล์เดอร์ใหม่ขึ้นมาเป็นโฟล์เดอร์ที่คุณจะสร้างเกมของคุณ แล้วทำการ copy file ภายใน โฟล์เดอร์ LIB ของ SDL_image ไปไว้ในโฟล์เดอร์สร้างเกมของคุณ
สร้างโปรเจ็คใหม่ขึ้นมา
แก้ไขในส่วน Project Option ให้เพิ่ม Parameter เข้าไปใส่ว่า -lSDL_image
สร้างไฟล์ขึ้นมา ดาวน์โฆลดรูปภาพนี้ ไปไว้ใน โฟล์เดอร์และที่สำคัญอย่าลืม Copy File SDL.dll ไปไว้ในโฟล์เดอร์ของคุณ
ไฟล์รูปภาพ
https://www.daydev.com/images/stories/sdl-l2/button.png
และพิมพ์ Code ตามไฟล์ด้านล่างนี้
https://www.daydev.com/images/stories/sdl-l2/lesson09.txt
ทดสอบลอง คอมไพล์โปรแกรมดู ว่ามี Bug หรือไม่
รันโปรแกรมดูจะเห็นผลทันที
สามารถดาวน์โหลดตัวอย่าง ไปลองเล่นได้ที่นี่ครับ
https://www.daydev.com/download/lesson2.zip
ไว้มีเวลาว่างแล้วจะมาอธิบาย code ทีละบรรทัดนะครับ ยกเครดิต บทความ และ Librarry research ให้ Lazy Fool Website ครับ
good