C++游戲編程之模擬實(shí)現(xiàn)鍵盤打字程序
程序演示:

程序代碼:
#include<graphics.h>
#include<iostream>
#include<conio.h>
#include<time.h>
using namespace std;
class KeyBoard
{
public:
KeyBoard();
~KeyBoard();
int randomKeys();//產(chǎn)生1~26的隨機(jī)值
void showBoard();//畫(huà)鍵盤
void showText();//顯示鍵值
void acceptAction();//獲取響應(yīng)
private:
int randomKey;//隨機(jī)值
int Struct;//支撐體
int keySize;//鍵塊大小
int x1, y1;//第一行的第一個(gè)鍵塊左上角坐標(biāo)
int x2, y2;//第二行的第一個(gè)鍵塊左上角坐標(biāo)
int x3, y3;//第三行的第一個(gè)鍵塊左上角坐標(biāo)
};
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");//定義字符數(shù)組
settextstyle(20, 0, _T("楷體"));
outtextxy(65, 60, firstRowKeys);
TCHAR secondRowKeys[100] = _T("A S D F G H J K L");//定義字符數(shù)組
settextstyle(20, 0, _T("楷體"));
outtextxy(85, 125, secondRowKeys);
TCHAR thirdRowKeys[100] = _T("Z X C V B N M");//定義字符數(shù)組
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++游戲編程之模擬實(shí)現(xiàn)鍵盤打字程序的詳細(xì)內(nèi)容,更多關(guān)于C++模擬鍵盤打字的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
統(tǒng)計(jì)C語(yǔ)言二叉樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)
這篇文章主要介紹的是統(tǒng)計(jì)C語(yǔ)言二叉樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù),文章以C語(yǔ)言二叉樹(shù)中葉子結(jié)點(diǎn)為基礎(chǔ)分享一個(gè)簡(jiǎn)單小栗子講解,具有一定的知識(shí)參考價(jià)值,需要的小伙伴可以參考一下2022-02-02
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之復(fù)雜鏈表的拷貝
復(fù)雜鏈表指的是一個(gè)鏈表有若干個(gè)結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)有一個(gè)數(shù)據(jù)域用于存放數(shù)據(jù),還有兩個(gè)指針域,其中一個(gè)指向下一個(gè)節(jié)點(diǎn),還有一個(gè)隨機(jī)指向當(dāng)前復(fù)雜鏈表中的任意一個(gè)節(jié)點(diǎn)或者是一個(gè)空結(jié)點(diǎn)。今天我們要實(shí)現(xiàn)的就是對(duì)這樣一個(gè)復(fù)雜鏈表復(fù)制產(chǎn)生一個(gè)新的復(fù)雜鏈表2021-11-11
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
Visual Studio 2019 Professional 激活方法詳解
這篇文章主要介紹了Visual Studio 2019 Professional 激活方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
C語(yǔ)言學(xué)習(xí)筆記之VS2022安裝使用教程
這篇文章主要介紹了C語(yǔ)言學(xué)習(xí)筆記之VS2022安裝使用教程,在VS2022中,在使用scanf函數(shù)編譯出錯(cuò),本文給大家提到了解決方法,需要的朋友可以參考下2022-05-05
C++實(shí)現(xiàn)編碼轉(zhuǎn)換的示例代碼
這篇文章主要介紹了C++實(shí)現(xiàn)編碼轉(zhuǎn)換的示例代碼,幫助大家快捷的實(shí)現(xiàn)編碼轉(zhuǎn)換,感興趣的朋友可以了解下2020-08-08
C++開(kāi)發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化
這篇文章主要介紹了C++開(kāi)發(fā)的Redis數(shù)據(jù)導(dǎo)入工具優(yōu)化方法的相關(guān)資料,需要的朋友可以參考下2015-07-07
C++實(shí)現(xiàn)接兩個(gè)鏈表實(shí)例代碼
這篇文章主要介紹了C++實(shí)現(xiàn)接兩個(gè)鏈表實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03

