控制台界面相关操作——C++实现

主要包括:
1、输出坐标控制;
2、颜色修改;
3、高亮显示方向键选取菜单项;
4、尺寸修改。

说明
(1)每种颜色对应的十六进制数如下【0-黑色、1-蓝色、2-绿色、3-湖蓝色、4-红色、5-紫色、6-黄色、7-白色、8-灰色、9-淡蓝色、10-淡绿色、11-淡浅绿色、12-淡红色、13-淡紫色、14-淡黄色、15-亮白色】。
(2)文字前景色:
FOREGROUND_RED 红色
FOREGROUND_GREEN 绿色
FOREGROUND_BLUE 蓝色
FOREGROUND_RED|FOREGROUND_GREEN 黄色
FOREGROUND_RED|FOREGROUND_BLUE 紫红色
FOREGROUND_GREEN|FOREGROUND_BLUE 淡蓝色
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE 白色
0 黑色
FOREGROUND_INTENSITY 亮色(比原来颜色要亮 )
(3)文字背景色:
BACKGROUND_RED 红色
BACKGROUND_GREEN 绿色
BACKGROUND_BLUE 蓝色
BACKGROUND_RED|BACKGROUND_GREEN 黄色
BACKGROUND_RED|BACKGROUND_BLUE 紫红色
BACKGROUND_GREEN|BACKGROUND_BLUE 淡蓝色
BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE 白色
0 黑色

视频链接:https://www.51zxw.net/Show.aspx?cid=717&id=78204

C++代码:

1与2的实现

#include<iostream>
#include<windows.h>
#include<time.h>
#include<conio.h>
using namespace std;

void SetOutputPosition(int x, int y) {
	HANDLE h;//句柄
	h = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准句柄
	COORD pos;//坐标
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition(h, pos);//设置控制台界面坐标
}

int main() {
	srand(time(0));
	int x = 0;//纵坐标
	int y = 0;//横坐标
	char c;
	HANDLE h;//句柄
	h = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准句柄
	//system("color 0E");
	while (true) {
		SetOutputPosition(x, y);
		SetConsoleTextAttribute(h, 0|0);
		cout << "          ";
		x = rand() % 40;
		y = rand() % 18;
		SetOutputPosition(x, y);
		SetConsoleTextAttribute(h, FOREGROUND_RED | BACKGROUND_BLUE);
		cout << "欢迎使用!";
		c = _getch();
		if (c == VK_SPACE)
			break;
	}
	return 0;
}

3和4的实现

在这里插入代码片#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;

void SetOutputPosition(int x, int y) {
	HANDLE h;//句柄
	h = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准句柄
	COORD pos;//坐标
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition(h, pos);//设置控制台界面坐标
}

void GetConsoleSize(short *cols, short *lines) {
	HANDLE h;//句柄
	h = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准句柄
	CONSOLE_SCREEN_BUFFER_INFO csbi;
	GetConsoleScreenBufferInfo(h, &csbi);
	*cols = csbi.dwSize.X;
	*lines = csbi.dwSize.Y;
}

int main() {
	system("mode con cols=50 lines=20");
	short cols, lines;
	GetConsoleSize(&cols, &lines);
	HANDLE h;//句柄
	h = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准句柄
	SetOutputPosition(15, 5);
	SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
	cout << "你现在想做什么?" << endl;
	int choice = 1;
	char c = 0;
	while (true) {
		if (c == 77)//右方向键
			choice = choice % 3 + 1;
		if (c == 75)//左方向键
			choice = (choice == 1 ? 3 : choice - 1);
		if (c == VK_SPACE)
			break;
		SetOutputPosition(10, 7);
		if (choice == 1)
			SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
		cout << "学习";
		SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
		SetOutputPosition(20, 7);
		if (choice == 2)
			SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
		cout << "玩耍";
		SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
		SetOutputPosition(30, 7);
		if (choice == 3)
			SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
		cout << "看电视";
		SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
		c = _getch();
		if (c == 0)
			c = _getch();
	}
	SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
	cout << endl << endl;
	cout << "你做出了正确的选择。" << endl;
	return 0;
}

C++运行结果:

1与2的结果
在这里插入图片描述3和4的结果
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是第三版,增加了大量关于键盘缓冲区操作和输入、输出操作的知识讲解,并修改了多处前两版中文字、语句错误的地方。 前两个版本由于我等级不够无法删除,此处留下前两版的地址,希望对大家有用。 第一版:http://download.csdn.net/source/3056070 第二版:http://download.csdn.net/source/3332359 以下为第三版本的目录: C/C++控制台界面编程(V 3) 1 目录 - 1 - 第一部分 控制台界面编程预备知识 1 1) Visual Studio 2005中控制台程序的类型 1 2) 转义字符及格式化输入、输出 1 a) 制表符\t 2 b) 回退字符\b 4 c) ASCII码表 6 d) 以%开头的格式控制符 9 e) 数据流的格式设置 10 3) C和C++库的输入、输出操作 12 a) stdio.h中的常用输入、输出函数 13 b) basic_stream中的输入、输出操作 13 4) 键盘缓冲区处理 15 5) 关于C/C++中的字符串拼接问题 17 6) 怎样从控制台复制粘贴文字 18 7) 将批处理bat转换为exe程序 18 8) 在Visual Studio 2005中设置控制台程序的图标 18 9) 重定向控制台程序的输出 19 第二部分 控制台界面编程详解 20 1) 概述 20 2) 控制台文本窗口编程的一般控制步骤 21 3) 控制台窗口操作函数 21 4) 文本属性操作 25 5) 文本输出 28 6) 文本操作示例 28 7) 滚动和移动 34 8) 光标操作 36 9) 读取键盘信息 37 10) 读取鼠标信息 44 11) 结束语 46 第三部分 附录 1 1) 分数等级划分工具 1 a) controlio.h文件 1 b) Main.c文件 5 2) 简易俄罗斯方块 6 a) 代码Main.c文件 7 3) 模拟实现可用鼠标、键盘控制的菜单和窗口 11 这是第三版,增加了大量关于键盘缓冲区操作和输入、输出操作的知识讲解,并修改了多处前两版中文字、语句错误的地方。 前两个版本由于我等级不够无法删除,此处留下前两版的地址,希望对大家有用。 第一版:http://download.csdn.net/source/3056070 第二版:http://download.csdn.net/source/3332359
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值