C++游戏编程之模拟实现键盘打字程序

 更新时间:2021年12月27日 11:18:39   作者:代码骑士  
这篇文章主要介绍了通过C++模拟实现键盘打字的功能,文中的示例代码讲解详细,对我们学习C++有一定的帮助,感兴趣的小伙伴可以学习一下

程序演示:

程序代码:

#include<graphics.h>
#include<iostream>
#include<conio.h>
#include<time.h>
using namespace std;
 
class KeyBoard
{
public:
	KeyBoard();
	~KeyBoard();
	int randomKeys();//产生1~26的随机值
	void showBoard();//画键盘
	void showText();//显示键值
	void acceptAction();//获取响应
private:
	int randomKey;//随机值
	int Struct;//支撑体
	int keySize;//键块大小
	int x1, y1;//第一行的第一个键块左上角坐标
	int x2, y2;//第二行的第一个键块左上角坐标
	int x3, y3;//第三行的第一个键块左上角坐标
};
 
KeyBoard::KeyBoard()
{
	Struct = 10;
	keySize = 50;
	x1 = 50, y1 = 50;
	x2 = 70, y2 = 110;
	x3 = 90, y3 = 170;
	initgraph(1000, 400);
	showBoard();
	_getch();
}
 
KeyBoard::~KeyBoard()
{
 
}
 
void KeyBoard::showText()
{
	settextcolor(WHITE);
	TCHAR firstRowKeys[100] = _T("Q     W     E     R     T     Y     U     I     O     P");//定义字符数组
	settextstyle(20, 0, _T("楷体"));
	outtextxy(65, 60, firstRowKeys);
	TCHAR secondRowKeys[100] = _T("A     S     D     F     G     H     J     K     L");//定义字符数组
	settextstyle(20, 0, _T("楷体"));
	outtextxy(85, 125, secondRowKeys);
	TCHAR thirdRowKeys[100] = _T("Z     X     C     V     B     N     M");//定义字符数组
	settextstyle(20, 0, _T("楷体"));
	outtextxy(105, 190, thirdRowKeys);
}
 
void KeyBoard::showBoard()
{
	int tx1 = x1,tx2 = x2,tx3 = x3;
	showText();
	for (int i = 0; i < 10; i++)
	{
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		x1 = x1 + keySize + Struct;
	}
	x1 = tx1;
	for (int i = 0; i < 9; i++)
	{
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		x2 = x2 + keySize + Struct;
	}
	x2 = tx2;
	for (int i = 0; i < 7; i++)
	{
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		x3 = x3 + keySize + Struct;
	}
	x3 = tx3;
}
 
int KeyBoard::randomKeys()
{
	srand((unsigned)time(NULL));
	randomKey = rand() % 26 + 1;//1到26
	return randomKey;
}
 
void KeyBoard::acceptAction()
{
	int tx1 = x1, tx2 = x2, tx3 = x3;
	int flag = randomKeys();
	char input;
	switch (flag)
	{
	case 1:
		setlinecolor(GREEN);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'Q' || input == 'q')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'Q' || input == 'q')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		break;
	case 2:
		setlinecolor(GREEN);
		x1 = x1 + keySize + Struct;
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'W' || input == 'w')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'W' || input == 'w')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 3:
		setlinecolor(GREEN);
		x1 = x1 + 2 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'E' || input == 'e')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'E' || input == 'e')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 4:
		setlinecolor(GREEN);
		x1 = x1 + 3 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'R' || input == 'r')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'R' || input == 'r')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 5:
		setlinecolor(GREEN);
		x1 = x1 + 4 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'T' || input == 't')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'T' || input == 't')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 6:
		setlinecolor(GREEN);
		x1 = x1 + 5 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'Y' || input == 'y')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'Y' || input == 'y')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 7:
		setlinecolor(GREEN);
		x1 = x1 + 6 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'U' || input == 'u')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'U' || input == 'u')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 8:
		setlinecolor(GREEN);
		x1 = x1 + 7 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'I' || input == 'i')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'I' || input == 'i')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 9:
		setlinecolor(GREEN);
		x1 = x1 + 8 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'O' || input == 'o')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'O' || input == 'o')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 10:
		setlinecolor(GREEN);
		x1 = x1 + 9 * (keySize + Struct);
		rectangle(x1, y1, x1 + keySize, y1 + keySize);
		input = _getch();
		if (input == 'P' || input == 'p')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x1, y1, x1 + keySize, y1 + keySize);
				input = _getch();
				if (input == 'P' || input == 'p')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x1 = tx1;
		break;
	case 11:
		setlinecolor(GREEN);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'A' || input == 'a')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'A' || input == 'a')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 12:
		setlinecolor(GREEN);
		x2 = x2 + keySize + Struct;
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'S' || input == 's')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'S' || input == 's')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 13:
		setlinecolor(GREEN);
		x2 = x2 + 2 * (keySize + Struct);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'D' || input == 'd')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'D' || input == 'd')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 14:
		setlinecolor(GREEN);
		x2 = x2 + 3 * (keySize + Struct);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'F' || input == 'f')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'F' || input == 'f')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 15:
		setlinecolor(GREEN);
		x2 = x2 + 4 * (keySize + Struct);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'G' || input == 'g')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'G' || input == 'g')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 16:
		setlinecolor(GREEN);
		x2 = x2 + 5 * (keySize + Struct);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'H' || input == 'h')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'H' || input == 'h')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 17:
		setlinecolor(GREEN);
		x2 = x2 + 6 * (keySize + Struct);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'J' || input == 'j')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'J' || input == 'j')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 18:
		setlinecolor(GREEN);
		x2 = x2 + 7 * (keySize + Struct);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'K' || input == 'k')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'K' || input == 'k')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 19:
		setlinecolor(GREEN);
		x2 = x2 + 8 * (keySize + Struct);
		rectangle(x2, y2, x2 + keySize, y2 + keySize);
		input = _getch();
		if (input == 'L' || input == 'l')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x2, y2, x2 + keySize, y2 + keySize);
				input = _getch();
				if (input == 'L' || input == 'l')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x2 = tx2;
		break;
	case 20:
		setlinecolor(GREEN);
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		input = _getch();
		if (input == 'Z' || input == 'z')
		{
			setlinecolor(WHITE);
		}
		else
		{
			rectangle(x3, y3, x3 + keySize, y3 + keySize);
			input = _getch();
			if (input == 'Z' || input == 'z')
			{
				setlinecolor(WHITE);
				break;
			}
		}
		x3 = tx3;
		break;
	case 21:
		setlinecolor(GREEN);
		x3 = x3 + keySize + Struct;
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		input = _getch();
		if (input == 'X' || input == 'x')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x3, y3, x3 + keySize, y3 + keySize);
				input = _getch();
				if (input == 'X' || input == 'x')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x3 = tx3;
		break;
	case 22:
		setlinecolor(GREEN);
		x3 = x3 + 2 * (keySize + Struct);
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		input = _getch();
		if (input == 'C' || input == 'c')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x3, y3, x3 + keySize, y3 + keySize);
				input = _getch();
				if (input == 'C' || input == 'c')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x3 = tx3;
		break;
	case 23:
		setlinecolor(GREEN);
		x3 = x3 + 3 * (keySize + Struct);
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		input = _getch();
		if (input == 'V' || input == 'v')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x3, y3, x3 + keySize, y3 + keySize);
				input = _getch();
				if (input == 'V' || input == 'v')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x3 = tx3;
		break;
	case 24:
		setlinecolor(GREEN);
		x3 = x3 + 4 * (keySize + Struct);
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		input = _getch();
		if (input == 'B' || input == 'b')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x3, y3, x3 + keySize, y3 + keySize);
				input = _getch();
				if (input == 'B' || input == 'b')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x3 = tx3;
		break;
	case 25:
		setlinecolor(GREEN);
		x3 = x3 + 5 * (keySize + Struct);
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		input = _getch();
		if (input == 'N' || input == 'n')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x3, y3, x3 + keySize, y3 + keySize);
				input = _getch();
				if (input == 'N' || input == 'n')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x3 = tx3;
		break;
	case 26:
		setlinecolor(GREEN);
		x3 = x3 + 6 * (keySize + Struct);
		rectangle(x3, y3, x3 + keySize, y3 + keySize);
		input = _getch();
		if (input == 'M' || input == 'm')
		{
			setlinecolor(WHITE);
		}
		else
		{
			while (1)
			{
				rectangle(x3, y3, x3 + keySize, y3 + keySize);
				input = _getch();
				if (input == 'M' || input == 'm')
				{
					setlinecolor(WHITE);
					break;
				}
			}
		}
		x3 = tx3;
		break;
	}
}
 
int main()
{
	KeyBoard KB;
	while (1)
	{
		KB.showBoard();
		KB.acceptAction();
	}
 
	return 0;
}

以上就是C++游戏编程之模拟实现键盘打字程序的详细内容,更多关于C++模拟键盘打字的资料请关注脚本之家其它相关文章!

相关文章

  • C++数组指针和二维数组详情

    C++数组指针和二维数组详情

    这篇文章主要介绍了C++数组指针和二维数组,指针数组和二维数组在应用中常用于函数传参,下面我们就来看看指针数组和二维数组在应用中的具体使用吧,需要的朋友可以参考一下
    2021-10-10
  • VS2022实现VC++打包生成安装文件图文详细历程

    VS2022实现VC++打包生成安装文件图文详细历程

    本文主要介绍了VS2022实现VC++打包生成安装文件图文详细历程,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Matlab实现三维投影绘制的示例代码

    Matlab实现三维投影绘制的示例代码

    这篇文章系小编为大家带来了一个三维投影绘制函数(三视图绘制),函数支持三维曲线、曲面、三维多边形、参数方程曲线、参数方程曲面的投影绘制,需要的可以参考一下
    2022-08-08
  • C++之函数的重载

    C++之函数的重载

    这篇文章主要介绍了c++函数重载的相关知识,文章讲解的非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2021-11-11
  • 详解C++调用Python脚本中的函数的实例代码

    详解C++调用Python脚本中的函数的实例代码

    这篇文章主要介绍了C++调用Python脚本中的函数 ,需要的朋友可以参考下
    2018-11-11
  • Qt实现部件透明及阴影效果的示例代码

    Qt实现部件透明及阴影效果的示例代码

    本文主要介绍了Qt实现部件透明及阴影效果的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C语言中计算函数执行时间的三种方式

    C语言中计算函数执行时间的三种方式

    本文主要介绍了C语言中计算函数执行时间的三种方式,主要包括clock(),timeb和time,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • C++中的整型

    C++中的整型

    这篇文章我们来聊聊C++中的整型,整型即整数,与小数对应。许多语言只能表示一种整型(如Python),而在C++当中根据整数的范围提供了好几种不同的整型,下面文章我们就来看看具体是哪几种,需要的朋友也可以参考一下
    2021-11-11
  • C语言实现获取文件MD5值

    C语言实现获取文件MD5值

    MD5(Message Digest Algorithm 5)是一种常用的哈希函数算法,这篇文章主要介绍了C语言如何获取文件MD5值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-08-08
  • C++ STL中的常用遍历算法分享

    C++ STL中的常用遍历算法分享

    这篇文章主要为大家详细介绍了C++ STL中两个常用的遍历算法,文中的示例代码讲解详细,具有一定的学习与借鉴价值,感兴趣的小伙伴可以参考一下
    2022-12-12

最新评论