?[導(dǎo)讀]本系列博文內(nèi)容鏈接如下:
【C++】做一個飛機(jī)空戰(zhàn)小游戲(一)——使用getch()函數(shù)獲得鍵盤碼值
【C++】做一個飛機(jī)空戰(zhàn)小游戲(二)——利用getch()函數(shù)實現(xiàn)鍵盤控制單個字符移動
【C++】做一個飛機(jī)空戰(zhàn)小游戲(三)——getch()函數(shù)控制任意造型飛機(jī)圖標(biāo)移動【C++】做一個飛機(jī)空戰(zhàn)小游戲(四)——給游戲添加背景音樂(多線程技巧應(yīng)用)
【C++】做一個飛機(jī)空戰(zhàn)小游戲(五)——getch()控制兩個飛機(jī)圖標(biāo)移動(控制光標(biāo)位置)
【C++】做一個飛機(jī)空戰(zhàn)小游戲(六)——給兩架飛機(jī)設(shè)置不同顏色(cout輸出彩色字符、結(jié)構(gòu)體使用技巧)
【C++】做一個飛機(jī)空戰(zhàn)小游戲(七)——兩組按鍵同時檢測平滑移動(GetAsyncKeyState()函數(shù)應(yīng)用)
【C++】做一個飛機(jī)空戰(zhàn)小游戲(八)——生成敵方炮彈(rand()函數(shù)應(yīng)用)
【C++】做一個飛機(jī)空戰(zhàn)小游戲(九)——發(fā)射子彈的編程技巧
【C++】做一個飛機(jī)空戰(zhàn)小游戲(十)——子彈擊落炮彈、炮彈與飛機(jī)相撞?
最近想用c++做一個小游戲,游戲的主要內(nèi)容是利用鍵盤控制一個飛機(jī)躲避和擊落屏幕頂部隨機(jī)掉落敵方炮彈,飛機(jī)被敵方炮彈擊中則減掉一條命,飛機(jī)也可以發(fā)射炮彈反擊,每擊落一個敵方炮彈,則有相應(yīng)積分。
游戲的思路就是利用w、s、a、d四個按鍵來控制飛機(jī)的移動方向,w——向上,s——向下,a——向左,d——向右;按空格鍵飛機(jī)發(fā)射反擊炮彈。
那么問題來了,程序如何知道鍵盤哪個鍵被按下了呢?c++中g(shù)etch()這個函數(shù)可以實現(xiàn)這個功能,當(dāng)鍵盤某個按鍵(或某個組合按鍵)被按下時,利用這個函數(shù)可以獲得該按鍵(或組合按鍵)對應(yīng)符號的碼值,從而確定哪個按鍵被按下了。
目錄
一、getch()函數(shù)
(一)功能描述:
(二)函數(shù)原型:
二、鍵盤碼值
(一)可顯示字符
(二)控制按鍵編碼
1、單碼
2、雙碼
(1)第一部分為224
(2)第一部分為0
(三)小鍵盤碼值
1、可顯示字符
2、第一類控制字符
3、第二類控制字符
(四)檢查鍵盤碼值的方法
1、查詢按鍵碼值程序
2、可顯示字符的運(yùn)行結(jié)果
3、控制按鍵單編碼
4、控制按鍵雙編碼
一、getch()函數(shù)
百度百科getch()函數(shù)的描述:
(一)功能描述:
getch()是編程中所用的函數(shù),這個函數(shù)是一個不回顯函數(shù),當(dāng)用戶按下某個字符時,函數(shù)自動讀取,無需按回車,有的C語言命令行程序會用到此函數(shù)做游戲,但是這個函數(shù)并非標(biāo)準(zhǔn)函數(shù),要注意移植性!
(二)函數(shù)原型:
函數(shù)原型:int getch(void)
返回值:讀取字符的碼值
getch():所在頭文件:conio.h
函數(shù)用途:從控制臺讀取一個字符,但不顯示在屏幕上函數(shù)原型:int getch(void)返回值:讀取的字符例如:char ch;或int ch;getch();或ch=getch();用getch();會等待你按下任意鍵,再繼續(xù)執(zhí)行下面的語句;用ch=getch();會等待你按下任意鍵之后,把該鍵字符所對應(yīng)的鍵盤碼值賦給ch,再執(zhí)行下面的語句。
二、鍵盤碼值
(一)可顯示字符
可顯示字符是指可通過鍵盤錄入的字符文本,編號范圍是32-126(0x20-0x7E),共95個字符,如圖1所示淺黃色區(qū)域為對應(yīng)的按鍵。

getch()獲得的可顯示字符的碼值就是字符的ascii碼值,具體情況見表1。

(二)控制按鍵編碼
鍵盤的有些按鍵,作用并不是錄入文本字符,而是代表輸入了一些控制指令。這部分指令按鍵的碼值分兩種情況,單碼和雙碼。單碼碼值范圍為0~32之間,雙碼由兩部分碼組成,第一部分為0或者224,第二部分為0~255。
1、單碼
常用的按鍵有4個:
序號 | 碼值 | 鍵盤符號 |
1 | 8 | Backspace |
2 | 9 | Tab |
3 | 13 | Enter |
4 | 27 | Esc |
2、雙碼
(1)第一部分為224
序號 | 第一部分碼值 | 第二部分碼值 | 鍵盤符號 |
1 | 224 | 71 | Home |
2 | 224 | 72 | ↑ |
3 | 224 | 73 | PgUp |
4 | 224 | 75 | ← |
5 | 224 | 77 | → |
6 | 224 | 79 | End |
7 | 224 | 80 | ↓ |
8 | 224 | 81 | PgDn |
9 | 224 | 82 | Insert |
10 | 224 | 83 | Delete |
11 | 224 | 133 | F11 |
12 | 224 | 134 | F12 |
13 | 224 | 135 | F11第二功能 |
14 | 224 | 136 | F12第二功能 |
(2)第一部分為0
序號 | 第一部分碼值 | 第二部分碼值 | 鍵盤符號 |
1 | 0 | 59 | F1 |
2 | 0 | 60 | F2 |
3 | 0 | 61 | F3 |
4 | 0 | 62 | F4 |
5 | 0 | 63 | F5 |
6 | 0 | 64 | F6 |
7 | 0 | 65 | F7 |
8 | 0 | 66 | F8 |
9 | 0 | 67 | F9 |
10 | 0 | 68 | F10 |
11 | 0 | 84 | F1第二功能 |
12 | 0 | 85 | F2第二功能 |
13 | 0 | 86 | F3第二功能 |
14 | 0 | 87 | F4第二功能 |
15 | 0 | 88 | F5第二功能 |
16 | 0 | 89 | F6第二功能 |
17 | 0 | 90 | F7第二功能 |
18 | 0 | 91 | F8第二功能 |
19 | 0 | 92 | F9第二功能 |
20 | 0 | 93 | F10第二功能 |
(三)小鍵盤碼值
大部分外接鍵盤和部分筆記本鍵盤帶有數(shù)字輸入專用的小鍵盤,如圖2所示,也有獨(dú)立的小鍵盤,如圖3所示。


小鍵盤上的按鍵除了數(shù)字切換鍵NumLock之外,其余的鍵大鍵盤也是有的,是重復(fù)的。
小鍵盤的碼值分三種情況:
1、可顯示字符
小鍵盤的數(shù)字0~9、加減乘除等于號(+、-、*、/、=)、小數(shù)點(diǎn)(.)等15個可顯示字符,其碼值與大鍵盤一樣,都是ascii碼值。
2、第一類控制字符
數(shù)字鍵7、8、9、4、6、1、2、3、0和小數(shù)點(diǎn)鍵等10個鍵有復(fù)合功能,分別為Home、↑、PgUp、←、→、End、↓、PgDn、Insert、Delete。這10個復(fù)合功能鍵碼值與大鍵盤的碼值略有區(qū)別,其碼值第二部分完全一致,而第一部分碼值都是0。詳見下表。
序號 | 第一部分碼值 | 第二部分碼值 | 鍵盤符號 |
1 | 0 | 71 | Home |
2 | 0 | 72 | ↑ |
3 | 0 | 73 | PgUp |
4 | 0 | 75 | ← |
5 | 0 | 77 | → |
6 | 0 | 79 | End |
7 | 0 | 80 | ↓ |
8 | 0 | 81 | PgDn |
9 | 0 | 82 | Insert |
10 | 0 | 83 | Delete |
3、第二類控制字符
控制字符鍵Backspace和Enter,其碼值與大鍵盤一樣,分別為13和8。
(四)檢查鍵盤碼值的方法
對于可顯示字符,各個品牌鍵盤的碼值基本都一樣。對于控制按鍵的碼值可能會有不同,可以通過
編寫程序來顯示。
1、查詢按鍵碼值程序
#include <iostream>
#include "conio.h"
using namespace std;
int main()
{
while(1)
{
cout<<getch()<<endl;
}
}
2、可顯示字符的運(yùn)行結(jié)果
分別輸入'1'、'A'、'a'、'!'、','5個字符時,顯示的碼值如下所示。
49
65
97
33
44
3、控制按鍵單編碼
分別按Backspace、Tab、Enter、Esc時,顯示的碼值如下所示。文章來源:http://www.zghlxwxcb.cn/news/detail-609408.html
8
9
13
27
4、控制按鍵雙編碼
分別按↑、↓、←、→、F1、F2鍵時,顯示的碼值如下所示,注意每個按鍵對應(yīng)的兩個碼值是分行顯示。文章來源地址http://www.zghlxwxcb.cn/news/detail-609408.html
224
72
224
80
224
75
224
77
0
59
0
60
到了這里,關(guān)于【C++】做一個飛機(jī)空戰(zhàn)小游戲(一)——使用getch()函數(shù)獲得鍵盤碼值的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!