4 ฟังก์ชั่น สําหรับการเขียนเกม

Project เกม TDX จะเตรียมฟังก์ชั่นสําหรับการเขียนเกมเอาไว้ 4 ตัว เหมือนกับชุดคําสั่งเกมทั่วไป คือ

1) bool Init( );
สําหรับเริ่มเกม กําหนดค่าเริ่มต้น และโหลดภาพ ฯลฯ

2) void EndGame( );
สําหรับ Clear ก่อนค่าออกจากเกม

3) void GamePlay( );
สําหรับการวาดภาพ รับค่า input และการ Flip เกม

4) static long PASCAL WinProc( .... );
ฟังก์ชั่นรับค่า message จากระบบ ใช้ในการรับค่าตําแหน่งเมาส์ (WM_MOUSEMOVE) รับค่า Timer (WM_TIMER) รับค่าการกดปุ่ม WM_CHAR

ตัวอย่างการโหลดภาพด้วย TDXsprite

ประกาศ object ของคลาส TDXsprite

TDXsprite s;

จากนั้นในฟังก์ชั่น Init ของเกม ให้เขียนโค้ดดังนี้

s.LoadBitmap("misile.bmp",26,33);
s.SetPos(100,100);

และในฟังก์ชั่น EndGame ให้เขียนโค้ดเพื่อ Clear ค่าของ object ตัวนี้ออก ดังนี้

void EndGame( void )
{
___s.Clear();
___TDXendgame();
}

และในฟังก์ชั่น GamePlay ให้เขียนโค้ดแสดงรูปภาพออกมาดังนี้

void GamePlay()
{
___TDXupdateinput();
___TDXclearscreen(0);

___if (isPress(CDXKEY_ESCAPE))
___{
___ ___SendMessage(h_window, WM_CLOSE, 0, 0);
___ ___return;
___}

___s.Draw();

___TDXshowmouse();
___TDXgameflip();
}

นอกจากนี้ในคลาส TDXsprite จะมีฟังก์ชั่น GoLeft, GoRight, GoUp และ GoDown ใช้ในการเคลื่อนที่ของตัวละคร โดย step จะอยู่ที่ 2 ท่านสามารถเปลี่ยนเป็น step ที่เร็วขึ้นได้โดยเรียกฟังก์ชั่น SetSpeed ของคลาสนี้

Download ตัวอย่าง

การโหลดเมาส์แบบ default

โปรเจ็กต์เกม TDX นี้ จะให้ท่านสร้างเมาส์ซึ่งเป็นข้อกําหนดดีฟอลต์แล้ว ท่านสามารถโหลดเมาส์ได้โดยเขียนโค้ดไว้ในฟังก์ชั่น Init ดังนี้

BOOL Init()
{
___TDXinit();
___TDXsetdebugmode(true);
___TDXsetdebugcolor(RGB(0,0,0));
___TDXshowcursorposition(true);

___TDXloadmouse("images/pointer.bmp",25,25);

การรับค่าจาก Keyboard ด้วยฟังก์ชั่น isHit และ isPress

ฟังก์ชั่น isPress และ isHit เป็นฟังก์ชั่นที่ใช้ตรวจจับการกดปุ่ม มีความแตกต่างกันดังนี้

  • isPress( คีย์ที่ต้องการ ) = จะคืนค่าเป็น true ถ้ามีการกดค้างเอาไว้ เราใช้ในกรณีที่เคลื่อนที่ตัวละคร กดค้างแล้ววิ่ง
  • isHit( คีย์ที่ต้องการ ) = จะคืนค่าเป็น true ถ้ามีการกดแค่ 1 ครั้ง ถึงแม้จะกดค้างเอาไว้ก็ไม่มีผลอะไร

Download ตัวอย่าง

การดีบักและการแสดงข้อความ

การกําหนดให้มีข้อความ Debug ขึ้น ให้เขียนดังนี้ที่ฟังก์ชั่น Init

BOOL Init()
{
___TDXinit();
___TDXsetdebugmode(true);
___TDXsetdebugcolor(RGB(255,255,255));

การแสดง/ซ่อนตําแหน่งของตัวชี้เมาส์

BOOL Init()
{
___TDXinit();
___TDXsetdebugmode(true);
___TDXsetdebugcolor(RGB(255,255,255));
___TDXshowcursorposition(true);

ฟังก์ชั่น TDXshowcursorposition(true) จะแสดงตัวเลขบอกตําแหน่งที่จุดกึ่งกลางด้านบน ถ้าเป็น false จะไม่แสดง ปกติจะเป็น false อยู่

การโหลด Background ด้วย TDXsprite, CDXLayer

โปรแกรม TDX นั้น สามารถใช้โค้ดของ CDX เข้าร่วมได้เลย เช่น จะโหลดพื้นหลังด้วย CDXSprite หรือ CDXLayer ทําฉากเลื่อนก็ทําได้เช่นกัน

Download ตัวอย่างการใช้ CDXLayer โหลดพื้นหลังแล้วเลื่อนไปมา

TDXsprite นอกจากจะใช้ในการโหลดภาพ sprite ได้แล้ว ยังสามารถใช้โหลดภาพทั่วๆ ไปพวก backgroud แทนที่จะใช้ CDXSprite ได้ด้วย โค้ดจะสั้นกว่า

Download ตัวอย่าง

เขียนโค้ดดักการชนกันของ TDXsprite

object ของ CDXSprite กับ TDXsprite นั้นสามารถจับชนกันได้ โดยใช้ฟังก์ชั่น Hit ซึ่งจะโอเวอร์โหลดเอาไว้สองตัว คือ Hit( CDXSprite *e) กับ Hit( TDXsprite *e) ดังรูป

ตัวอย่าง Project เกมนี้ แสดงวิธีการเขียนโค้ดจับการชนกันของ TDXsprite 2 ตัว.. และวิธีการนับคะแนน ทํา Animation

Download ตัวอย่าง (ทั้ง project)

การโหลดเสียงเพลง midi และสั่งเล่นแบบวน และการโหลดเสียง Effect

การเล่นเพลง midi จะใช้ฟังก์ชั่นดังนี้

TDXloadmidi( 1 ,"test.mid" );

ตัวเลขในพารามิเตอร์ตัวแรกนั้น ก็คือ ช่องเพลง ซึ่งสามารถใส่เพลง midi ได้ถึง 30 ช่องเพลง (สามารถแก้ไขได้ในไฟล์ TDX.H ที่บรรทัดนี้

int TDX_wav[30];
int TDX_midi[30];

การเล่นเพลงแบบวน ทําได้โดยเีขียนโค้ดโหลดเพลงไว้ที่ Init ก่อน จากนั้นสั่งเล่นเพลงช่องที่ต้องการโดยระบุตัวเลขลงไป ดังนี้

void GamePlay()
{
___TDXupdateinput();
___TDXclearscreen(0);

___TDXplaymidi(1,true); // repeately

พารามิเตอร์ตัวแรกก็คือช่องเพลงที่จะเล่น จากตัวอย่างเป็นการเ่พลงหมายเลข 1 แบบวน..... ถ้าเราไม่ใส่ true เพลงที่ออกมาจะ error เพราะการเขียนโค้ดเล่นเพลงเอาไว้ลักษณะนี้ จะเป็นการเริ่มเล่นโดยตลอด ดังนั้น เราจึงต้องใส่ true ลงไปเพื่อบอกว่าให้เล่นแบบวน เงื่อนไขในฟังก์ชั่นนี้ จะตรวจสอบการจบเพลง และขึ้นเพลงอีกครั้งโดยอัตโนมัติ

ลองดูตัวอย่างต่อไปนี้ เป็นการเล่นเพลงแบบฉากหลัง พร้อมการโหลดไฟล์เสียง wav

Download ตัวอย่าง midisample

การโหลดเสียงเพลง midi และสั่งเล่นครั้งเดียว...

ในบางกรณีที่ต้องการเล่น midi ครั้งเดียว เช่น เมื่อเกมชนะ ก็สั่งเล่นครั้งเดียว จากนั้นก็หยุด เราจะเขียนโค้ดแบบนี้

Download ตัวอย่าง midisample-once

กําัลังจัดทํา.......

ใช้ TDXtextbox สร้าง Text Box ในเกม
ใช้ TDXcheckbox สร้าง Checkbox
ใช้ TDXbutton สร้างปุ่มกดในเกม
การทํา Animation ด้วย WM_TIMER ที่เตรียมเอาไว้ให้
การหน่วงเวลาแบบมีเงื่อนไข


TDX
By Thaidev.com