📄 bombermenu.c
字号:
int MenuChoice, MenuFrame, MenuPlayers = 2;
//Initialize the menu
void InitMenu ()
{
int i;
//Draw to front buffer
TargetData = MainBitmapData;
//Clear buffer
memset ((char *)TargetData, 0, 221952);
//Display title
Blit (35, 32, 0, 80, 203, 29);
//Display menu
for (i = 0; i < 4; i++)
Blit (112, 101 + i * 32, 0, 109 + i * 15, 64, 15);
//Choose top
MenuChoice = 0;
MenuFrame = 0;
FlushKeys ();
}
//Display the number of players
void DrawNumber ()
{
int yt;
//Display menu
for (yt = 0; yt < 15; yt++)
memcpy ((char *)TargetData + 221952 - (101 + yt + 32) * 816 + 537,
(char *)BlocksBuf + (168 + yt) * 960 + (MenuPlayers - 1) * 24,
24);
}
//Do the menu stuff
void MenuLoop ()
{
int Key;
//Clear old bomb
DrawBlock (5, (3 + MenuChoice) * 2, 10, 2);
//Read from keyboard
Key = getch ();
//Move cursor
if (Key == VK_UP) {
MenuChoice--;
if (MenuChoice == -1) MenuChoice = 3;
}
if (Key == VK_DOWN) {
MenuChoice++;
if (MenuChoice == 4) MenuChoice = 0;
}
//Update number of players
if (MenuChoice == 1) {
if (Key == VK_LEFT) {
MenuPlayers--;
if (MenuPlayers == 1) MenuPlayers = 4;
}
if (Key == VK_RIGHT) {
MenuPlayers++;
if (MenuPlayers == 5) MenuPlayers = 2;
}
}
//Display new bomb
MenuFrame ^= 1;
DrawBlock (5, (3 + MenuChoice) * 2, 10, MenuFrame);
DrawNumber ();
//Enter key
if (Key == VK_RETURN) {
switch (MenuChoice) {
//Start game
case 0:
case 1:
//Get number of players
Players = MenuPlayers;
ComputerPlays = 0;
if (MenuPlayers == 1) {
Players++;
ComputerPlays = -1;
}
//Start the game
ClearGame ();
State = IN_GAME;
NewGame ();
break;
//Setup
case 2:
State = IN_SETUP;
InitSetup ();
break;
//Quit
case 3:
Done = -1;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -