- Python AI游戲編程入門:基于Pygame和PyTorch
- 肖凱
- 455字
- 2024-10-25 14:10:47
1.4.3 輸入處理
游戲編程的一個(gè)特點(diǎn)是編寫的程序需要和用戶交互。用戶的輸入包含各種各樣的信息,例如鍵盤按鍵信息、鼠標(biāo)移動(dòng)或單擊信息,甚至游戲手柄的按鍵信息等。這些信息通常是通過(guò)事件隊(duì)列存放的,在每次運(yùn)行游戲主循環(huán)中的代碼時(shí),程序都需要從事件隊(duì)列中取出需要的信息進(jìn)行處理。
舉個(gè)例子,你是一位在戰(zhàn)場(chǎng)上統(tǒng)領(lǐng)大軍的將軍,你需要關(guān)注敵方部隊(duì)有沒(méi)有發(fā)生移動(dòng)。于是你每個(gè)小時(shí)開(kāi)始時(shí)都會(huì)派出一隊(duì)偵察兵,讓他們分散在戰(zhàn)場(chǎng)四周獲取情報(bào),偵察兵會(huì)在每個(gè)小時(shí)結(jié)束時(shí)將情報(bào)傳回你的手中。有的情報(bào)是關(guān)于天氣變化的,有的情報(bào)是關(guān)于敵人動(dòng)向的,有的情報(bào)是關(guān)于糧草供應(yīng)的。每份情報(bào)都被寫在一張紙上,按順序疊放在桌上。你的參謀會(huì)每小時(shí)看一次情報(bào),檢查這些情報(bào)中是否有關(guān)于敵人動(dòng)向的信息。當(dāng)參謀發(fā)現(xiàn)這一類情報(bào)后,你會(huì)基于相關(guān)情報(bào)來(lái)調(diào)動(dòng)部隊(duì)出擊。
游戲編程中的輸入處理與此類似。每一幀里,程序都會(huì)收到各種輸入事件,并將它們按順序存放在一個(gè)事件隊(duì)列中。程序會(huì)不停地檢查這個(gè)隊(duì)列,當(dāng)程序“關(guān)注”的事件發(fā)生時(shí),例如玩家按下了空格鍵,程序就會(huì)運(yùn)行相應(yīng)的代碼來(lái)發(fā)射炮彈。
- Flask Web全棧開(kāi)發(fā)實(shí)戰(zhàn)
- Boost.Asio C++ Network Programming(Second Edition)
- Intel Galileo Essentials
- OpenCV for Secret Agents
- Lua程序設(shè)計(jì)(第4版)
- 鋒利的SQL(第2版)
- Learning Laravel's Eloquent
- 自學(xué)Python:編程基礎(chǔ)、科學(xué)計(jì)算及數(shù)據(jù)分析(第2版)
- 網(wǎng)絡(luò)數(shù)據(jù)采集技術(shù):Java網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)
- OpenCV Android Programming By Example
- Python Deep Learning
- Arduino電子設(shè)計(jì)實(shí)戰(zhàn)指南:零基礎(chǔ)篇
- Python預(yù)測(cè)分析與機(jī)器學(xué)習(xí)
- Isomorphic Go
- Learning NHibernate 4