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

2023年8月23日,周三上午

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


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

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

cpp 复制代码
#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);
	}
}
相关推荐
2401_873204655 分钟前
C++中的策略模式进阶
开发语言·c++·算法
OKkankan6 分钟前
深入理解linux进程
java·linux·c++
HABuo6 分钟前
【linux线程(一)】线程概念、线程控制详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
王老师青少年编程6 分钟前
2026年3月GESP真题及题解(C++七级):物流网络
c++·题解·真题·gesp·csp·七级·物流网络
xushichao19899 分钟前
C++中的职责链模式实战
开发语言·c++·算法
fqbqrr12 分钟前
2603C++,C++强项
c++
清风徐来QCQ16 分钟前
js中的模板字符串
开发语言·前端·javascript
fundoit21 分钟前
Windows 下 YOLO 环境搭建与使用完整指南
windows·yolo
2301_8184190122 分钟前
C++中的协程编程
开发语言·c++·算法
add45a24 分钟前
C++中的工厂方法模式
开发语言·c++·算法