ผลต่างระหว่างรุ่นของ "Oop lab/gdx examples"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
(Oop Lab/gdx examples ถูกเปลี่ยนชื่อเป็น Oop lab/gdx examples)
 
(ไม่แสดง 7 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน)
แถว 1: แถว 1:
: ''หน้านี้เป็นส่วนหนึ่งของ [[OOP lab]]''
+
: ''หน้านี้เป็นส่วนหนึ่งของ [[Oop lab]]''
  
 
เราจะดูโครงสร้างของเกมที่เขียนโดยใช้ไลบรารี GDX โดยพิจารณาจากสอง project
 
เราจะดูโครงสร้างของเกมที่เขียนโดยใช้ไลบรารี GDX โดยพิจารณาจากสอง project
แถว 28: แถว 28:
  
 
จากนั้นเลือก directory ที่เรา clone มา กดดูการนำเข้าและ build จนเสร็จ
 
จากนั้นเลือก directory ที่เรา clone มา กดดูการนำเข้าและ build จนเสร็จ
 +
 +
==== รัน (และพัง) ====
 +
 +
ในการรัน จะต้องสั่งรันที่ class DesktopLauncher (อยู่ใน xxxx-desktop) แต่เมื่อรันแล้ว โปรแกรมจะ crash เพราะว่าค่าไดเร็กทรอรีไม่ถูกต้อง
  
 
==== ตั้งค่า config ตอนรัน ====
 
==== ตั้งค่า config ตอนรัน ====
แถว 37: แถว 41:
 
แล้วเลือก File Systems... จากนั้นเลือกไปที่ theplanethatcouldntflygood/android/assets
 
แล้วเลือก 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 ==
 +
 
 +
* ลิงก์: [https://github.com/libgdx/libgdx-demo-superjumper github]
 +
 
 +
=== ทดลองรัน ===
 +
* clone project
 +
* แก้ gradle config
 +
* แก้ Run configurations...
 +
 
 +
=== โครงสร้างเกม ===
 +
 
 +
เกมนี้มีการสร้างคลาสที่หลากหลายขึ้น ให้จับคู่และลองไล่ดูว่าเกมประกอบไปด้วยวัตถุอะไรบ้างและทำงานประสานกันอย่างไร

รุ่นแก้ไขปัจจุบันเมื่อ 01:34, 27 กันยายน 2559

หน้านี้เป็นส่วนหนึ่งของ 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

ทดลองรัน

  • clone project
  • แก้ gradle config
  • แก้ Run configurations...

โครงสร้างเกม

เกมนี้มีการสร้างคลาสที่หลากหลายขึ้น ให้จับคู่และลองไล่ดูว่าเกมประกอบไปด้วยวัตถุอะไรบ้างและทำงานประสานกันอย่างไร