这篇文章主要介绍了通过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++游戏编程之模拟实现键盘打字程序
猜你喜欢
- GDB 不显示函数名 2022-01-01
- 如何提取 __VA_ARGS__? 2022-01-01
- 将函数的返回值分配给引用 C++? 2022-01-01
- DoEvents 等效于 C++? 2021-01-01
- XML Schema 到 C++ 类 2022-01-01
- 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值 2021-01-01
- 哪个更快:if (bool) 或 if(int)? 2022-01-01
- 使用 __stdcall & 调用 DLLVS2013 中的 GetProcAddress() 2021-01-01
- OpenGL 对象的 RAII 包装器 2021-01-01
- 将 hdc 内容复制到位图 2022-09-04