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等)。这些按键在文本编辑中通常不直接产生可见的字符,而是用来控制程序的行为或者光标的移动等。

相关推荐
草莓熊Lotso3 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
历程里程碑3 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
在路上看风景11 小时前
19. 成员初始化列表和初始化对象
c++
zmzb010311 小时前
C++课后习题训练记录Day98
开发语言·c++
念风零壹11 小时前
C++ 内存避坑指南:如何用移动语义和智能指针解决“深拷贝”与“内存泄漏”
c++
孞㐑¥12 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
MZ_ZXD00114 小时前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
A星空12315 小时前
一、Linux嵌入式的I2C驱动开发
linux·c++·驱动开发·i2c
凡人叶枫15 小时前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
会叫的恐龙15 小时前
C++ 核心知识点汇总(第六日)(字符串)
c++·算法·字符串