• 沒有找到結果。

CCPK 是本論文中所提出的 Framework,用來解決跨帄台行動裝置 遊戲開發時所面臨到的問題-需要投入較多的人力在熟悉各種帄台的 來驗證本論文所提出的 Framework 可行,並透過實作時所得到的經驗 來修正原始的設計概念,讓 CCPK 更具有發展的彈性以及良好的程式

日後持續增加模組內的 class,如更多的 Widgets 元件,便可應付多

介面,針對支援的帄台予以擴增,如 iPhone 作業系統、Palm 作業系 統等更能驗證本論文設計的相容性。

目前 CCPK 只提供了基本的 Socket 與 Bluetooth 的功能,除了可 以橫向發展,提供更多的無線通訊功能,如紅外線等之外,也可以縱 向發展,提供如 HTTP 或是手機上常用的 WAP 通訊協定,以利程式開 發人員使用更多元化的通訊功能。

由於不同帄台的會有不同的螢幕尺寸,因此針對不同尺寸的螢幕 而動態調整遊戲的畫面可以增加遊戲的適應性。在未來的發展中可以 針對這一點加以提高程式開發的便利性。

本論文中的實作範例皆屬於較為靜態的遊戲,對於即時動態遊戲 而言,繪圖能力的提升更是必頇的能力,除了使用 double buffering 可以改善螢幕快速繪圖時閃爍的問題,也可發展支援 OpenGL 或 DirectX 等更高速繪圖能力。

參考文獻

[1] Apple, "iPhone OS", available from

http://developer.apple.com/iphone/, 2008.

[2] Charles Petzold, Programming Windows, 5th ed., Microsoft Press, Washington, 1999.

[3] Christopher Tavares, et al., ATL Internals: Work with ATL 8, 2nd ed., Addison Wesley, 2006.

[4] Douglas Boling, Programming Microsoft Windows CE .NET, 3rd ed., Microsoft Press, Washington, 2003.

[5] Jacco Bikker, "MobileCore: A Cross-Platform Framework For ARM-Base Mobile Games", 2003.

[6] Jeff Prosise, Programming Windows with MFC, 2nd ed., Microsoft Press, Washington, 1999.

[7] John K. Ousterhout, "Why Threads Are A Bad Idea (for most

purposes)", Invited Talk at the 1996 USENIX Technical Conference , January 25, 1996.

[8] Leigh Edwards, et al., Developing Series 60 Applications, Addison Wesley, 2004.

[9] Linux, available from http://www.linux.com/, 2008.

[10] Microsoft, "MSDN: Microsoft Developer Network", available from

http://msdn.microsoft.com/, 2008.

[11] Microsoft, "Windows Embedded", available from

http://www.microsoft.com/taiwan/windows/embedded/default.mspx,

2008.

[14] Stanley B. Lippman, Josée Lajoie, C++ Primer, 3rd ed., Addison Wesley, 1998.

[15] Symbian, "Symbian OS", available from http://www.symbian.com/, 2008.

[16] 武漢卓睿軟件有限公司,「嵌入式跨帄台開發解決方案 (ECDS-MUI)」,2007。

[17] 徐健智,「網際網路上桌上型遊戲之發展帄台」,國立交通大學資 訊工程學系,碩士論文,民國 88 年。

[18] 高偉傑,「跨帄台手機遊戲開發框架在 Symbian 手機之研究」,國 立交通大學資訊工程學系,碩士論文,民國 97 年。

附錄、帄台相依層在 Windows CE 之說明

本章將介紹在 Windows CE 上的開發環境設定以及帄台相依層在 Windows CE 上的函式庫架構,最後並用一範例來說明如何使用 CCPK。

1.1 開發環境

本論文在開發 Windows CE 的整合介面是使用 Microsoft Visual Studio 2005,而 Windows CE 的版本則為 5.0,其對應所需要的 SDK 則為 Windows Mobile 5.0 SDK for Pocket PC,並且上述的 SDK 也 包含在 PC 上的模擬器。此外,由於是在開發 Windows Mobile 裝置程 式,因此尚需安裝 Microsoft ActiveSync v4.5。不論是在模擬器或 是在實體 Mobile 5.0 Pocket PC 裝置上進行程式開發,都在同一個 整合介面上即可,實體 Mobile 5.0 Pocket PC 裝置只需使用 USB 線 連結 PC 與裝置後,便可開始程式開發。

1.2 函式庫架構說明

我們將 CCPK 的實作包裝成 static library,檔名為

CCPKCore.lib,使用者透過 CCPKCore.lib 以及所提供的 CCPK class 的標頭檔就可開始撰寫程式,而 CCPK 的表頭檔列表也整合在 CYC.h。

設計成 static library 的用意如下:

CCPK。而程式開發人員也只需標頭檔與 CCPKCore.lib 即可方便 是 Dynamic-Link library,則發佈時必頇要附帶相對應版本的 CCPK DLL,增加版本控制的負擔。

由於 CCPK 內包含 resource,例如網路模組使用對話窗讓使用者 輸入 server 的 IP 位址或是找尋鄰近的 Bluetooth 裝置,再加上 CCPK 使用 static library 的方式,因此程式開發人員除了撰寫程式部分 需要 include CYC.h 以及 import CCPKCore.lib 外,resource 部分 尚需 include CCPK 的 resource 檔: CCPKCoreResource.h 以及 CCPKCore.rc。

1.3 使用範例

本節列出利用 CCPK 架構出一簡單的程式的步驟,依據這些步驟 便可產生一個具有 GUI 介面的程式。

 步驟一: 使用 Visual Studio 2005 產生一個 C++ Win32 Smart device project,使其具有 WinMain()的程式入口。並 include CCPK 的標頭檔 CYC.h 以及 import CCPKCore.lib。另外,在 resource file-xxx.rc 中 include CCPK 的 CCPKCoreResource.h 以及 CCPKCore.rc。

 步驟二: 繼承 CCPK 的 Application 及 Frame Windows 的 classes 成為自己的 classes,並且可以 override 想要的處理的 event handler,如 fnONCommand()。範例程式碼如下所示。

 步驟三: 在 WinMain()函式中將自己的 Application 及 Frame Window class 產生出來,並且建立關聯,最後呼叫 Application class 的 fnRun()即可讓程式展現 GUI 介面,並且成為事件驅動 模式,等待使用者互動。範例程式碼如下所示。

class CMyApp : public CCPKApp {

public:

CMyApp();

virtual ~CMyApp();

};

Class CMyFrmWnd : public CCPKFrameWnd {

public:

CMyFrmWnd();

virtual ~CMyFrmWnd();

//--- override CCPKFrameWnd event handler function virtual bool fnONCommand(int nID);

};

依據上述的三個步驟,程式開發人員便可快速的產生基本的程式 框架,再依據本身想要處理的 event handler,將對應的虛擬函式 override,便可打造屬於自己的程式。

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR pCmd, int iCmdShow)

{

// prepare CCPK major component-Application CMyApp *pApp = new CMyApp ();

if (!pApp) return -1;

pApp->m_envSystem.fnSetInstance(&hInst);

// prepare CCPK major component,-Frame Window CMyFrmWnd *pMainFrm = new CMyFrmWnd ();

if (!pMainFrm) return -1;

if (!pMainFrm->fnCreate(L"CCPKBig2", IDR_MENU)) { return -1;

}

// set relation of CCPK component pApp->fnSetFrmWnd(pMainFrm);

pMainFrm->fnSetApp(pApp);

// start program in event-driven mode pApp->fnRun();

// after program terminated, release resources delete pApp;

delete pMainFrm;

return 0;

}

IDR_MENU 為 resource 中定義的 menu 代碼

相關文件