C++俄罗斯方块 -- 菜单展示和选择 -- 方法

cpp 复制代码
short Menu()	//选中开始游戏返回1,离开则返回2
{
	short choice = 1;//跟踪用户选中的选项
	char c;		//记录用户按键信息
	system("cls");
	SetPos(9, 12);	//设置输出坐标,12行9列
	cout << "┌────────┐";
	SetPos(9, 13);
	cout << "│ 俄 罗 斯 方 块 │";
	SetPos(9, 14);
	cout << "└────────┘";
	while (1)
	{
		SetPos(15, 16);
		if (choice == 1) SetColor(2, 7);	//2为前景色:绿色,7为背景色:白色。
		else SetColor(2, 0);				//如果当前第一项不是选中项,背景色为黑色0
		cout << "开始游戏";

		SetPos(15, 18);
		if (choice == 2) SetColor(2, 7);	//2为前景色:绿色,7为背景色:白色。
		else SetColor(2, 0);				//如果当前第一项不是选中项,背景色为黑色
		cout << "离  开";
		c = getch();
		if (c == VK_RETURN) break;	//用户按下了回车,离开循环体
		else
			if (c == 0) choice = getch();   // 如果用户输入了非打印字符键,如:enter space F2,让用户重新输入
		if (c == 72 || c == 80) choice = choice == 1 ? 2 : 1;	//让choice在1、2之间切换,72向下的方向键80向上的方向键
		//用户如果什么都不输入,继续循环 while true
	}
	SetColor(7, 0);	//恢复黑底白字
	return choice;

}
函数解析:
  1. 清屏(循环时清除旧数据)
  2. 定位坐标 -- 输出标题 :俄罗斯方块(修改纵坐标SetPost(9,12))
  3. 循环体
    1. 定位坐标 -- 判断choice默认为1的时候,设置前景色背景色,并打印"开始游戏"
    2. 如果choice用户选中2,打印出"离开"
    3. c来接收用户的按键
      1. 如果用户按下了回车,离开循环体break
      2. 如果用户按下了非打印字符:一般阿斯克码值为0;就重新输入c的值
      3. 如果新的C的值是左右键,就通过三木运算符,赋值给choice 1或者2
      4. 然后继续循环1. 按回车就离开循环体while,
  4. 离开循环体后,恢复黑底白字
  5. 返回最终的choice的值 1 或者 2 return choice
概念理解:
非打印字符键:如:enter space F2

通常指的是那些不产生可见字符的按键,比如控制键(如Ctrl、Alt、Shift)、功能键(如F1、F2、F3等)、导航键(如方向键、Home、End、Page Up、Page Down等)以及一些产生不可见控制字符的按键(如Enter、Tab、Backspace、Delete等)。这些按键在文本编辑中通常不直接产生可见的字符,而是用来控制程序的行为或者光标的移动等。

相关推荐
小刘同学32119 分钟前
C++11 特性
c++·c11新特性
真的想上岸啊33 分钟前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
m0_5522008237 分钟前
《UE5_C++多人TPS完整教程》学习笔记40 ——《P41 装备(武器)姿势(Equipped Pose)》
c++·游戏·ue5
丁劲犇1 小时前
用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
开发语言·c++·qt·tui·字符界面·curse
charlie1145141912 小时前
深入理解Qt的SetWindowsFlags函数
开发语言·c++·qt·原理分析
呜喵王阿尔萨斯2 小时前
编程中的英语
c语言·c++
whoarethenext3 小时前
使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
开发语言·c++·faiss
向阳@向远方4 小时前
第二章 简单程序设计
开发语言·c++·算法
Mr_Xuhhh5 小时前
信号与槽的总结
java·开发语言·数据库·c++·qt·系统架构
liulilittle5 小时前
VGW 虚拟网关用户手册 (PPP PRIVATE NETWORK 基础设施)
开发语言·网络·c++·网关·智能路由器·路由器·通信