LGF (Leistungsstarkes Game Framework) 是一款基於陳偉凱老師的 Game Framework 加上些許功能的 Powerful Game Framework。
專案不保證長期維護,有任何問題或者任何其他想要的 feature,請丟 issue,祝使用愉快 :D
- 將此專案 clone 下來
- 替換原有的 Game Framework / 直接使用這個 Game Framework.
(基本上是相容於舊框架的,因為是基於舊框架新增更多的 feature 以及修正 bug)
- 修正了
CInteger
的 Bug,現在可以正常呈現。 - 半修正了
CMovingBitmap.showBitmap(double factor)
的 Bug,當factor
等於0
時視為隱藏圖片。 - 可以隱藏
CMovingBitmap
的圖片。 - 可以讀入多個
CMovingBitmap
的圖片,並且選擇欲呈現的圖片。 - 可以讀入多個
CMovingBitmap
的圖片,並且利用SetAnimation(int delay, bool once)
來製作動畫。 - 廢棄
CAnimation
的作法。
- 讓
CInteger
可以自由顯示是否要顯示前導零。
- 【New Feature】修正了全螢幕時的黑邊問題,並且會將遊戲視窗絕對置中。
- 【New Feature】將動畫每幀的延遲加上精準時間。
- 【New Feature】支援以
vector<string>
讀取每幀的畫面。 - 【New Feature】新增了
CTextDraw
類別,畫上文字時請使用這個類別的函式,全螢幕的字位移才會正確 - 【Bug】修正了 CMovngBitmap 在執行動畫時會出現的小 bug。
- 創立了純淨版(Purified)的 Leistungsstarkes Game Framework 專案,可直接建置方案並執行。
- 修改了檔案架構,從原先將所有的
.cpp
放入Source
資料夾,改為在Source
建立一個資料夾架構來存放.cpp
檔案。 - 修改了檔案架構,將
/RES
重新命名為Resources
來釐清名稱。 - 創立
GAME_TITLE
的定義(#define
),使框架使用者能夠變更遊戲標題。 - 將
mygame.cpp
分割成三個不同的檔案,分別實作GameStateInit
、GameStateRun
與GameStateOver
的類別。 - 重構了部分的 code 使得重複的 code 出現的次數減少。
- 抽離遊戲設定參數至
config.cpp
,讓使用者不須也不應更改/Library
與/Core
的程式碼。
讀取一張圖片。
CMovingBitmap bitmap;
bitmap.LoadBitmap("RES/bitmap.bmp", RGB(255, 255, 255));
bitmap.SetLeftRight(0, 0);
# -- on show --
bitmap.ShowBitmap();
讀取多張圖片,索引值從 0
開始。
CMovingBitmap bitmap;
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"}, RGB(255, 255, 255));
bitmap.SetLeftRight(0, 0);
# -- on show --
bitmap.ShowBitmap(); // 預設呈現第一張 (index = 0)。
隱藏當前的 CMovingBitmap
。
CMovingBitmap bitmap;
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"});
bitmap.setLeftRight(0, 0);
# -- on show --
bitmap.showBitmap(); // 預設呈現第一張 (index = 0)。
/* Do something... */
bitmap.UnShowBitmap(); // 隱藏圖片。
選擇要呈現的 CMovingBitmap
。
CMovingBitmap bitmap;
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"});
bitmap.SetLeftRight(0, 0);
bitmap.SelectShowBitmap(1); // 設定呈現第二張圖片
# -- on show --
bitmap.showBitmap(); // 呈現第二張圖片
設定當前的 CMovingBitmap
為一個動畫。
CMovingBitmap bitmap;
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"});
bitmap.SetLeftRight(0, 0);
bitmap.SelectShowBitmap(1); // 設定呈現第二張圖片
bitmap.SetAnimation(5, false); // 無限循環呈現
# -- on show --
bitmap.showBitmap(); // 呈現第二張圖片
顯示 CInteger
是否出現前導零。
CInteger health = CInteger(4); //設定最大長度為 4,預設為 5。
health.SetInteger(1000);
health.SetTopLeft(312, 373);
# -- on show --
health.showBitmap(false); // 不顯示前導零
利用 vector<string>
讀取多張圖片,索引值從 0
開始。
CMovingBitmap bitmap;
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"});
bitmap.setLeftRight(0, 0);
# -- on show --
bitmap.showBitmap(); // 預設呈現第一張 (index = 0)。
/* Do something... */
bitmap.UnShowBitmap(); // 隱藏圖片。
獲得目前呈現的圖片索引值。
確認動畫是否正在執行,僅限於動畫正在執行 ToggleAnimation()
。
運行動畫一次,並且使得 IsAnimationDone()
可用。
確認這個 CMovingBitmap
物件有多少幀動畫。
更改文字的樣式、文字與粗體。
CDC *pDC = CDDraw::GetBackCDC();
CFont *fp;
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255, 255, 255));
/* 變更字體,weight = 800 為粗體,500 為一般 */
CTextDraw::ChangeFontLog(pDC, fp, 40, "Noto Sans TC", 800);
CTextDraw::Print(pDC, 50, 50, "Hello World!");
將文字呈現在指定的座標上。
CDC *pDC = CDDraw::GetBackCDC();
CFont *fp;
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255, 255, 255));
/* 變更字體 */
CTextDraw::ChangeFontLog(pDC, fp, 40, "Noto Sans TC");
CTextDraw::Print(pDC, 50, 50, "Hello World!");
CMovingBitmap bitmap;
# -- onInit --
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"});
bitmap.SetTopLeft(0, 0);
bitmap.SetAnimation(5, false);
# -- onShow --
bitmap.showBitmap();
CMovingBitmap bitmap;
# -- onInit --
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"});
bitmap.SetTopLeft(0, 0);
bitmap.SetAnimation(200, false);
# -- onEvent --
bitmap.ToggleAnimation(1);
# -- onShow --
if(bitmap.IsAnimationDone()){
if (hidden_code[current_stage][i][j] == 0) {
bitmap.showBitmap();
}
}else{
bitmap.showBitmap();
}
CMovingBitmap bitmap;
# -- onInit --
bitmap.LoadBitmap({"RES/bitmap1.bmp", "RES/bitmap2.bmp"});
bitmap.SetTopLeft(0, 0);
# -- onMove --
bitmap.SelectShowBitmap(1)
# -- onShow --
bitmap.showBitmap();
謝謝 國立臺北科技大學 陳偉凱教授 開發了這個遊戲框架
並且謝謝 國立臺北科技大學 陳碩漢教授 同意這個框架能夠公開使用。