【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);
	}
}
相关推荐
小成202303202653 小时前
Linux高级02
linux·开发语言
知行合一。。。3 小时前
Python--04--数据容器(总结)
开发语言·python
咸鱼2.03 小时前
【java入门到放弃】需要背诵
java·开发语言
ZK_H3 小时前
嵌入式c语言——关键字其6
c语言·开发语言·计算机网络·面试·职场和发展
泓铮3 小时前
Windows 环境下 WSL2 与 VMware Workstation 17 共存机制研究与工程实践
windows
澈2073 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
A.A呐3 小时前
【C++第二十九章】IO流
开发语言·c++
椰猫子3 小时前
Java:异常(exception)
java·开发语言
lifewange3 小时前
pytest-类中测试方法、多文件批量执行
开发语言·python·pytest
ambition202424 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先