menu.cpp

来自「一个控制台VC++2005版的俄罗斯方块源码」· C++ 代码 · 共 93 行

CPP
93
字号
#include"Menu.h"

CMenu::CMenu()
{	
	backColor=15;
	selectIndex=1;
	selectColor=10;//绿色
	unselectColor=12;//红色;
	ClearBuffer(2,1,20,20,backColor);
	strcpy(menu[0],"开始游戏");
	strcpy(menu[1],"游戏帮助");
	strcpy(menu[2],"退出游戏");
	for(int i=0;i<3;i++)
	{		
		DrawText( 7, 7+i*2,selectIndex==i+1?selectColor:unselectColor,menu[i]);
	}
}

CMenu::~CMenu()
{
}

GameState CMenu::Logic(bool goOn)
{
	fflush( stdin );
	if(_kbhit())
	{
		int a=_getch();
		char input[2];
		if(a<0)
		{
			input[0] = a;
			input[1] = _getch();
		}
		else
		{
			input[1] = a;
		}
		switch (input[1])
		{
		case KEY_UP:
			unselectMenu(selectIndex);
			if(selectIndex==1)
			{
				selectIndex=3;
			}
			else
			{
				--selectIndex;
			}
			selectMenu(selectIndex);
			break;
		case KEY_DOWN:
			unselectMenu(selectIndex);
			if(selectIndex==3)
			{
				selectIndex=1;
			}
			else
			{
				++selectIndex;
			}
			selectMenu(selectIndex);
			break;
		case KEY_ENTER:
			switch(selectIndex)
			{
			case 1:
				return GAME;
				break;
			case 2:
				return HELP;
				break;
			case 3:
				return EXIT;
				break;
			}
			break;
		}
	}
	return MENU;
}

void CMenu::selectMenu(int index)
{		
	DrawText( 7, (index-1)*2+7, selectColor,menu[index-1]);
}

void CMenu::unselectMenu(int index)
{	
	DrawText( 7, (index-1)*2+7, unselectColor,menu[index-1]);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?