游戲編程是我業余的愛好,也可以提高對編程的興趣,每當我有時間的時候就會編寫游戲,基於圖片的問題所以首選小游戲。這是我畢業後第二款小游戲,相比上一款充分的運用了面向對象的技術,讓我享受與不斷做類的完善,特別提出的是使用遞歸技術使得算法更加簡潔確實是個很不錯的技術,比如:游戲中的地圖整行消除判斷以及消除。
目前的設計情況如下:
(有寫沒必要的函數省略了,初次使用UML圖)
此貼主要是想探討類的設計,標題上寫了工廠模式,這裡只是簡單的把UI創建放到另外一個地方罷了,嚴格來說應該不算是什麼工廠,但是主要是代碼
易讀維護性高就可以了.開發環境:VS2005,WIN32、 C++、DX9
如果要增加其他按鈕只要繼承ImageUI,和實現基類的存虛擬函數就可以。基類的事件觸發如下代碼。
PUG_BTN_STAT CImageUI::OnEven(UINT msg, WPARAM wParam, LPARAM lParam)
{
POINTS xy;
xy = MAKEPOINTS(lParam);
POINT xy2;
xy2.x = xy.x;
xy2.y = xy.y;
switch(msg)
{
case WM_MOUSEMOVE:
{
if(PtInRect(&_displaySize,xy2))
{
OnPass();
return PASS;
}
}
break;
case WM_LBUTTONDOWN:
{
if(PtInRect(&_displaySize,xy2))
{
OnClick();
return ONCLICK;
}
}
break;
case WM_LBUTTONUP:
{
if(PtInRect(&_displaySize,xy2))
{
OnClickOut();
return ONCLICKOUT;
}
}
break;
}
OnPassOut();
return COMMAND;
}
游戲圖片如下:
本文配套源碼