国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現(xiàn)在的位置是:首頁(yè) » python編程資訊

資訊內(nèi)容

用python和pygame游戲編程入門(mén)-鍵盤(pán)設(shè)備

極客小將2020-10-28-
今天我們?cè)俳榻B一個(gè)方法,pygame.key.get_pressed()來(lái)獲得所有按下的鍵值,它會(huì)返回一個(gè)元組。這個(gè)元組的索引就是鍵值

前面的知識(shí)和案例中我們也用了一下鍵盤(pán),那時(shí)候是用了pygame.event.get()獲取所有的事件,當(dāng)event.type == KEYDOWN的時(shí)候,再判斷event.key的種類(lèi)。今天我們?cè)俳榻B一個(gè)方法,pygame.key.get_pressed()來(lái)獲得所有按下的鍵值,它會(huì)返回一個(gè)元組。這個(gè)元組的索引就是鍵值,對(duì)應(yīng)的就是是否按下,比如說(shuō):

當(dāng)我們按下右鍵時(shí),得到的 get_pressed 元組列表如下(注意有一個(gè)1):

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

pygame.K_RIGHT 是一個(gè)常量, 值是275.

key_pressed[pygame.K_RIGHT] 實(shí)質(zhì)上就是key_pressed[275]==1代表右鍵被按下

當(dāng)然key模塊下還有很多函數(shù):

key.get_focused —— 返回當(dāng)前的pygame窗口是否激活

key.get_pressed —— 剛剛解釋過(guò)了

key.get_mods —— 按下的組合鍵(Alt, Ctrl, Shift)

key.set_mods —— 你也可以模擬按下組合鍵的效果(KMOD_ALT, KMOD_CTRL, KMOD_SHIFT)

key.set_repeat —— 無(wú)參數(shù)調(diào)用設(shè)置pygame不產(chǎn)生重復(fù)按鍵事件,二參數(shù)(delay, interval)調(diào)用設(shè)置重復(fù)事件發(fā)生的時(shí)間

key.name —— 接受鍵值返回鍵名

使用鍵盤(pán)控制方向

根據(jù)坐標(biāo)變化規(guī)律,通過(guò)這張圖幫助理解鍵盤(pán)如何控制方向:

用python和pygame游戲編程入門(mén)-鍵盤(pán)設(shè)備

我們使用key.get_pressed()修改之前的程序:


background_image_filename = './img/Underwater.png'
sprite_image_filename = './img/fish-b.png'

import pygame
from pygame.locals import *
from sys import exit
from Vec2d import *
 
pygame.init()
 
screen = pygame.display.set_mode((640, 480), 0, 32)
 
background = pygame.image.load(background_image_filename).convert()
sprite = pygame.image.load(sprite_image_filename).convert_alpha()
 
clock = pygame.time.Clock()
sprite_pos = Vec2d(200, 150)
sprite_speed = 300.
 
while True:
 
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
 
    pressed_keys = pygame.key.get_pressed()

    key_direction = Vec2d(0, 0)
    if pressed_keys[K_LEFT]:
        print(pressed_keys)
        key_direction.x = -1
    elif pressed_keys[K_RIGHT]:
        key_direction.x = +1
    if pressed_keys[K_UP]:
        key_direction.y = -1
    elif pressed_keys[K_DOWN]:
        key_direction.y = +1

    key_direction.normalized()

    screen.blit(background, (0,0))
    screen.blit(sprite, sprite_pos)

    time_passed = clock.tick(30)
    time_passed_seconds = time_passed / 1000.0

    sprite_pos+= key_direction * sprite_speed * time_passed_seconds

    pygame.display.update()


如果你不知道Vec2d是什么,傳送門(mén)-->pygame游戲編程入門(mén)-向量類(lèi)的使用


本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系管理員及時(shí)刪除。

預(yù)約試聽(tīng)課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 大石桥市| 吴江市| 武清区| 新安县| 泸溪县| 偃师市| 大姚县| 肇东市| 洪洞县| 浪卡子县| 泸定县| 公安县| 浦县| 揭东县| 万年县| 志丹县| 剑川县| 临颍县| 太谷县| 延吉市| 上蔡县| 新乐市| 崇州市| 文化| 巨鹿县| 古浪县| 浮山县| 滕州市| 鄄城县| 马鞍山市| 文成县| 洞口县| 肥西县| 和平县| 治县。| 衢州市| 阿鲁科尔沁旗| 桃园县| 通海县| 岚皋县| 土默特左旗|