###### 更新時間:2024/3/13 01:00 Ken # 進度 期中:完成各角色之基礎邏輯與互動、圖片以及地圖配置。 期末:完成音效以及優化動畫,再視情況新增關卡。 1~3週:準備圖片/設計架構 4~6週:主選單/關卡架構實作/主要角色 7~9週:實作關卡1(地圖/敵人/子彈/道具) 10~12週:實作關卡1(Boss) 13~15週:實作關卡2(地圖/Boss) 16~18週:實作音效/實作動畫/實作關卡3(地圖/Boss) # 命名規則 函式、類、列舉、命名空間:PascalCase 成員變數、區域變數、函式參數:snake_case 常數、列舉成員:ALL_UPPERCASE # 注意事項 1. C++ 預設繼承類型為 private,請在繼承的時候特別註明 public,盡可能不要使用 private 繼承。 2. 函式定義、for、if 的上下請留空白行。函式宣告則不需要。 3. 請不要使用任何 using namespace。 4. 請盡可能使用 const reference。 5. 如果成員函式有機會是 const 請盡量標記。 6. 請盡可能不要重複程式碼。 7. 標頭檔副檔名固定 .h,原始檔附檔名固定 .cpp。 8. 資料結構不需初始化,讓編譯器採用預設建構子。 9. int、double、bool、std::size_t 請初始化。 10. 請使用 double 避免 float。 11. 請使用 static_cast、dynamic_cast 避免 C-style () 括號強制轉型。 # 偵錯工具 <data> 放想要顯示的資料。 ```cpp OutputDebugStringW(std::to_wstring( <data> ) + L"\n"); ``` # Class Diagram ```mermaid classDiagram direction TB class CGameStateInit { -background: CMovingBitmap -logo: CMovingBitmap +OnInit() void +OnLButtonDown() void +OnShow() void } CGameStateInit *-- CMovingBitmap ``` ```mermaid classDiagram direction TB class CGameStateRun { -keys: Key[] -keyMap: map<UINT, Key> -manager: Manager +OnInit() void +OnKeyDown(nChar: UINT) void +OnKeyUp(nChar: UINT) void +OnMove() void +OnShow() void } class Manager { -stages: Stage[] -statusPanel: StatusPanel -player: TestPlayer +Init() void +Input(keys: Key[]) void +Update() void +Show() void +Over() bool } class Stage { <<abstract>> -background: Background -enemies: TestEnemy[] +Init() void* +Update(player: TestPlayer) void +Show() void +Over() bool } class TestBoss { +Dead() bool } class StageJapan { +Init() void } class StageBrazil { +Init() void } class StageUSA { +Init() void } class Background { +part1: CMovingBitmap +part2: CMovingBitmap +Init(frames: string[]) void +Update(scroll_step: int) void +Show() void } class TestPlayer { -sprite: AnimatedBitmap +Init() void +Input(keys: Key[]) void +Update() void +Show() void } class TestEnemy { <<abstract>> +Init() void +Update(player: TestPlayer) void +Show() void } class TestFighter { +Update(player: TestPlayer) void } class TestBossJapan { +Update(player: TestPlayer) void } class TestBossBrazil { +Update(player: TestPlayer) void } class TestBossUSA { +Update(player: TestPlayer) void } class StatusPanel { -scoreCounter: CMovingBitmap -lifeCounter: CMovingBitmap -bombCounter: CMovingBitmap +Init() void +Update(player: TestPlayer) void +Show() void } class AnimatedBitmap { -sprite: CMovingBitmap -settings: AnimationSetting[] +AddAnimation(setting: AnimationSetting) void +SwitchAnimation(index: size_t) void +Show() void } class AnimationSetting { +frames: string[] +delay: int +once: bool } CGameStateRun *-- Manager Manager *-- Stage Stage *-- Background Manager *-- StatusPanel Manager *-- TestPlayer Stage <|-- StageJapan Stage <|-- StageBrazil Stage <|-- StageUSA TestPlayer *-- AnimatedBitmap AnimatedBitmap *-- AnimationSetting TestEnemy <|-- TestFighter TestEnemy <|-- TestBoss TestBoss <|-- TestBossJapan TestBoss <|-- TestBossBrazil TestBoss <|-- TestBossUSA Stage *-- TestEnemy AnimatedBitmap *-- CMovingBitmap Background *-- CMovingBitmap StatusPanel *-- CMovingBitmap ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up