Oop lab/gdx examples
- หน้านี้เป็นส่วนหนึ่งของ Oop lab
เราจะดูโครงสร้างของเกมที่เขียนโดยใช้ไลบรารี GDX โดยพิจารณาจากสอง project
เนื้อหา
The plane
- นี่เป็นเกม clone จาก Flappy bird
- ลิงก์: github
ทดลองรัน
แก้ gradle config
ให้ clone project มาในเครื่อง เลือกไดเร็กทอรีที่เหมาะสม แล้วสั่ง
git clone https://github.com/badlogic/theplanethatcouldntflygood.git
เกมดังกล่าวถูกพัฒนาเพื่อให้ทำงานได้บน Android, iOS และบนเว็บ ในการคอมไพล์ (build) ถ้าจะสมบูรณ์ต้องมี Android SDK แต่เราจะสนใจเฉพาะ Desktop เท่านั้น ดังนั้นจะต้องไปแก้ config บางส่วนก่อน เนื่องจากเกมบน GDX จะ build ด้วย Gradle เราจะไปแก้ config ของ gradle ดังนี้
- settings.gradle ลบ project อื่น ๆ ออก โดยตัดให้เหลือแค่ 'desktop' กับ 'core'
include 'desktop', 'core'
- build.gradle ไล่ลบส่วนที่เขียนว่า project(":android") { ... }, project(":ios") {... }, และ project(":html") { ... }
import เข้า eclipse
เลือก Import > Gradle > Gradle Project
จากนั้นเลือก directory ที่เรา clone มา กดดูการนำเข้าและ build จนเสร็จ
รัน (และพัง)
ในการรัน จะต้องสั่งรันที่ class DesktopLauncher (อยู่ใน xxxx-desktop) แต่เมื่อรันแล้ว โปรแกรมจะ crash เพราะว่าค่าไดเร็กทรอรีไม่ถูกต้อง
ตั้งค่า config ตอนรัน
ถ้าเราสั่งรันเลย จะมีปัญหาว่าระบบจะหา asset ไม่เจอ ต้องไปตั้ง working directory เป็น android/assets เสียก่อน โดยดำเนินการดังนี้
เลือก Run > Run Configurations... > Java Application > เลือก DesktopLauncher ที่ต้องการ > เลือก tab Arguments > ส่วน Working directory
แล้วเลือก File Systems... จากนั้นเลือกไปที่ theplanethatcouldntflygood/android/assets
จัดเก็บและสั่งรันใหม่
โครงสร้างเกม
จะพบว่าเรามี project สองอัน คือ theplanethatcouldntflygood-core กับ theplanethatcouldntflygood-desktop โค้ดหลักจะอยู่ใน core
คลาส
- มีคลาสหลักแค่คลาสเดียวคือ PlaneGame เป็น subclass ของ ApplicationAdapter ในนั้นมีคลาส Rock
- เมท็อดสำคัญ
- create
- render
- updateWorld
- drawWorld
- วัตถุประเภทต่าง ๆ จากไลบรารี
- Rectangle
- Vector2
- Texture, TextureRegion
- SpriteBatch, Animation
- OrthographicCamera
- BitmapFont
- Music, Sound
Super Jumper
- ลิงก์: github
ทดลองรัน
- clone project
- แก้ gradle config
- แก้ Run configurations...
โครงสร้างเกม
เกมนี้มีการสร้างคลาสที่หลากหลายขึ้น ให้จับคู่และลองไล่ดูว่าเกมประกอบไปด้วยวัตถุอะไรบ้างและทำงานประสานกันอย่างไร