添加模式选择开始菜单并修复中文界面乱码

This commit is contained in:
2026-04-24 17:29:10 +08:00
parent 678285206b
commit 8f651e896e
4 changed files with 257 additions and 110 deletions
+33 -13
View File
@@ -17,27 +17,46 @@ constexpr int SIDE_PANEL_GAP = 28;
constexpr int WINDOW_CLIENT_WIDTH = WINDOW_PADDING * 2 + nGameWidth * GRID + SIDE_PANEL_GAP + SIDE_PANEL_WIDTH;
constexpr int WINDOW_CLIENT_HEIGHT = WINDOW_PADDING * 2 + nGameHeight * GRID + 20;
// 定义一个点,用来表示方块的位置
struct Point
{
int x;
int y;
};
extern int nType; // 下一方块类型
extern int type; // 当前方块类型
extern int state; // 当前方块状态
extern int tScore; // 当前得分
extern bool gameOverFlag; // 游戏已经结束
extern bool suspendFlag; // 暂停游戏
extern bool targetFlag; // 启用瞄准器
extern int workRegion[20][10]; // 工作区数据,0 表示该位置没有被占用
extern Point point; // 当前方块的当前位置
extern Point target; // 当前方块目标位置,用于瞄准器
struct MenuState
{
int selectedIndex;
int optionCount;
};
enum ScreenState
{
SCREEN_MENU = 0,
SCREEN_PLAYING = 1
};
enum GameMode
{
MODE_CLASSIC = 0,
MODE_ROGUE = 1
};
extern int nType;
extern int type;
extern int state;
extern int tScore;
extern bool gameOverFlag;
extern bool suspendFlag;
extern bool targetFlag;
extern int workRegion[20][10];
extern Point point;
extern Point target;
extern MenuState menuState;
extern int currentScreen;
extern int currentMode;
extern int bricks[7][4][4][4];
extern COLORREF BrickColor[7];
// 游戏逻辑相关函数
bool CanMoveDown();
bool CanMoveLeft();
bool CanMoveRight();
@@ -51,6 +70,7 @@ void DeleteOneLine(int number);
void DeleteLines();
void ComputeTarget();
void Restart();
void StartGameWithMode(int mode);
void ReturnToMainMenu();
// 绘图函数
void TDrawScreen(HDC hdc, HWND hWnd);