【C++】用Windows API在控制台实现选择选项

news2024/10/7 4:29:25

2023年8月23日,周三上午

今天上午花了一个小时来实现这个


 这个程序在碰到边界时会发出声音,

通过调用Windows API的Beep函数来实现。

#include<Windows.h>
#include<conio.h>
#include<iostream>
#include<cstdlib>

const int OPTIONS_NUMBER = 4;//规定选项数量

int optionIndex = 0;//全局变量,方便下面这几个函数之间进行通信

struct Option{//放在结构体里面,可以方便以后拓展
	std::string optionText;
};

//创建OPTIONS_NUMBER个选项
Option options[OPTIONS_NUMBER];

//初始化选项内容
void initOptions() {
	options[0].optionText = "选项0";
	options[1].optionText = "选项1";
	options[2].optionText = "选项2";
	options[3].optionText = "选项3";
}

//打印选项
void draw(int index) {

	system("cls");//清理屏幕

	for (int i = 0; i < OPTIONS_NUMBER; i++) {//打印选项
		if (i==index) {
			std::cout << ">>" << options[i].optionText << std::endl;
		}
		else {
			std::cout << "  " << options[i].optionText << std::endl;
		}
	}
}

//处理按键W和S,实现上下移动“>>”
void processKeys(char key) {
	switch (key)
	{
	case 'w':
	case 'W':
		if ((optionIndex - 1) < 0) {
			Beep(1000,200);//Windows API函数,用于发出蜂鸣
			break;
		}
		optionIndex = optionIndex - 1;
		break;
	case 's':
	case 'S':
		if ((optionIndex + 1) > 3) {
			Beep(1000, 200);//Windows API函数,用于发出蜂鸣
			break;
		}
		optionIndex = optionIndex + 1;
		break;
	default:
		break;
	}
}

int main() {
	initOptions();
	while (1) {
		draw(optionIndex);
		char key = _getch();
		processKeys(key);
	}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/916217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生信豆芽菜-EMT评分的计算

网址&#xff1a;http://www.sxdyc.com/gradeEmt 1、数据准备 表达谱数据&#xff0c;行为基因&#xff0c;列为样本 2、提交后&#xff0c;等待运行成功即可下载 当然&#xff0c;如果不清楚数据是什么样的&#xff0c;可以选择下载我们的示例数据&#xff0c;也可以关注…

统计分析查找总人数、男、女的人数

SELECTcount( * ) AS count,sum( CASE WHEN MOD ( substr( remark, 17, 1 ), 2 ) 0 THEN 1 ELSE 0 END ) AS women,sum( CASE WHEN MOD ( substr( remark, 17, 1 ), 2 ) 1 THEN 1 ELSE 0 END ) AS man FROMt_user

CH583/2构建工程教程

CH583/2构建工程教程 绪论资源移植步骤准备移植步骤一步骤二 工程配置修改工程名修改前修改后 工程配置修改资源文件 修改C/C general修改C/C构建修改汇编交叉编译修改C交叉编译修改GNU RISC-V Cross Linker 修改跟编译 移植注意事项 绪论 资源 CH583/2的SDK下载 移植步骤 …

2025款EQC路测照曝光:外观更紧凑,动力更强,与宝马iX3正面竞争

据国外汽车媒体Auto Express近日发布的报道&#xff0c;梅赛德斯的EQC Mk2纯电动汽车在进行路测时被拍下了照片。 EQC车型相比于EQA和EQB更为紧凑&#xff0c;而与EQE和EQS相比则更为宽敞&#xff0c;这使得该车型在市场推出后与宝马iX 3和奥迪即将推出的Q6 E-tron进行了正面竞…

数据结构——队列(C语言)

需求&#xff1a;无 本篇文章将解决一下几个问题&#xff1a; 队列是什么&#xff1f;如何实现一个队列&#xff1f;什么场景下会用队列&#xff1f; 队列的概念&#xff1a; 队列&#xff1a;一种只允许一端进行插入数据操作&#xff0c;在另一端进行删除操作的特殊线性表。…

AI大模型算力的估计方法

估计大型模型所需的算力是一个复杂的过程&#xff0c;涉及许多因素&#xff0c;如模型的大小、训练数据量、训练批次大小、训练轮数等。以下是一些常见的方法和指导来估计大型模型所需的算力&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外…

java-线程相关知识二

1. 线程基本方法 线程相关的基本方法有 wait&#xff0c;notify&#xff0c;notifyAll&#xff0c;sleep&#xff0c;join&#xff0c;yield 等。 1.1. 线程等待&#xff08;wait&#xff09; 调用该方法的线程进入 WAITING 状态&#xff0c;只有等待另外线程的通知或被中断…

IDEA配置文件乱码

一、问题描述 导入项目后&#xff0c;发现配置文件乱码了&#xff0c;但是程序运行还能正常使用。 不过&#xff0c;配置文件乱码&#xff0c;对代码开发还是很有阻碍。还是需要去解决。 二、解决方案 在Idea中设置默认编码方式&#xff0c;可以保证新建的文件使用正确的编码…

制图成本降低80%,百度如何打造轻地图?

作者|HiEV 编辑|张祥威 编者注&#xff1a; 本文是HiEV出品的系列直播「智驾地图之变」第一期问答环节内容整理。百度智驾地图业务部主任架构师万聪与连线嘉宾鉴智机器人技术副总裁潘屹峰、领骏科技研发副总裁严晗、主持嘉宾周琳展开深度交流&#xff0c;并进行了答疑。 本期…

安装docker服务,配置镜像加速器

文章目录 1.安装docker服务&#xff0c;配置镜像加速器2.下载系统镜像&#xff08;Ubuntu、 centos&#xff09;3.基于下载的镜像创建两个容器 &#xff08;容器名一个为自己名字全拼&#xff0c;一个为首名字字母&#xff09;4.容器的启动、 停止及重启操作5.怎么查看正在运行…

亿邦智库《2023数字化采购发展报告》解读,企企通推动企业采购数字化及供应链协同智能化发展

采购成本是企业成本控制的主体和核心。在当前供应链的背景下&#xff0c;采购数字化一方面可以通过提高效率来降低成本&#xff0c;增强合作和风险缓解能力&#xff1b;另一方面&#xff0c;信息、物流和资本流动的整合和重建将提高供应链的灵活性和灵活性&#xff0c;增强面向…

Spring Framework核心模块

core Spring Core是Spring框架的基础API核心模块&#xff0c;提供了基本的IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;和DI&#xff08;Dependency Injection&#xff0c;依赖注入&#xff09;功能。 core核心功能举例 资源管理-系统资源加载 Fi…

Qwen-7B微调实例

Qwen-SFT 阿里通义千问(Qwen-7B-Chat/Qwen-7B), 微调/LORA/推理 踩坑 1. tokenizer.encode输出(不会新增特殊字符), 为 [真实文本tokens]: 2. chat-PROMPT: <|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n你好<|im…

vue3移动h5调试插件

下载插件 pnpm i vconsole代码部分 main.ts中加入如下代码 import VConsole from vconsole;const isPc () > {const userAgentInfo navigator.userAgent;const Agents ["Android", "iPhone","SymbianOS", "Windows Phone",&q…

数据结构与算法:通往编程高地的必修课(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

行为型(十一) - 中介模式

一、概念 中介模式&#xff08;Mediator Pattern&#xff09;&#xff1a;中介模式定义了一个单独的&#xff08;中介&#xff09;对象&#xff0c;来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互&#xff0c;来避免对象之间的直接交互。 二、实现 借…

生信豆芽菜-缺氧评分的计算

网址&#xff1a;http://www.sxdyc.com/gradeHypoxia 1、数据准备 表达谱数据&#xff0c;行为基因&#xff0c;列为样本 2、提交后&#xff0c;等待运行成功即可下载 当然&#xff0c;如果不清楚数据是什么样的&#xff0c;可以选择下载我们的示例数据&#xff0c;也可以…

VBA Excel函数的使用

一个简单的教程&#xff0c;实现VBA自定义函数。 新建模块 复制后面的代码放进来 函数的入口参数不定义&#xff0c;则认为是一块区域&#xff1b; 反之&#xff0c;如FindChar1 As String&#xff0c;则认为是输入的单值。 循环和分支如下例子&#xff0c;VB比较接近自然语…

纯手写Tomcat,看不懂你来揍我【附源码、图文详解】

源码放在了文章末尾 理论知识 何为Tomcat Tomcat是一个开源的Servlet容器&#xff0c;它实现了Java Servlet、JavaServer Pages (JSP)、WebSocket等Java EE规范&#xff0c;用于在Web服务器上运行Java Web应用程序。 说的简单点&#xff0c;Tomcat能处理网络传输来的请求。 …

Linux内核提权漏洞

Linux内核提权漏洞 漏洞名称&#xff1a;脏牛&#xff08;Dirty COW&#xff09;CVE-2016-5195 漏洞危害&#xff1a;低权限用户利用该漏洞技术可以在全版本 Linux 系统上实现本地提权 影响范围&#xff1a;Linux 内核2.6.22 < 3.9 (x86/x64) 攻击机&#xff1a;Kali Linu…