簡體   English   中英

pygame - 按鍵按下

[英]pygame - Key pressed

我有點堅持使用一個應該是簡單的代碼來檢查用戶是否按下了“w”或“s”。

你可以在下面看到我的代碼:

import pygame
pygame.init()

while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN and event.key == pygame.K_w:
            print('Forward')
        elif event.type == pygame.KEYDOWN and event.key == pygame.K_s:
            print('Backward')  

我在這里忘記了什么嗎?

謝謝!

需要創建一個窗口來接收按鍵,以下工作。

import pygame
import sys
pygame.init()

pygame.display.set_mode((100, 100))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                print('Forward')
            elif event.key == pygame.K_s:
                print('Backward')

在我看來,這是最簡單易懂的方法:

import pygame
pygame.init()
pygame.display.set_mode((300, 300))
running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            pygame.quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                print('Forward')
            elif event.key == pygame.K_s:
                print('Backward')

而不是使用 sys.exit() 方法,我更喜歡只使用 pygame.quit()

要求玩家繼續按 w 以獲得響應是不好的。 如果要讀取“按下”狀態。 你可以考慮以下幾點:

  from pygame import *
    import time
    flag = False # The flag is essential.
    DONE = False
    screen = display.set_mode((500,500))   # 1180, 216
    count=0
    while not DONE:
        event.pump() # process event queue
        keys = key.get_pressed() # It gets the states of all keyboard keys.
        #print("%d"%count,keys)
        count+=1
        if keys[ord('w')]: # And if the key is K_DOWN:
            print("%d w down"%count)
        if keys[ord('s')]: # And if the key is K_DOWN:
            print("%d s down"%count)
        time.sleep(0.1)

嘗試這個:

import pygame
pygame.init()
key = pygame.key.get_pressed()
while True:
    for event in pygame.event.get():
        if event.type == KEYDOWN and event.key == pygame.K_w:
            print('Forward')
        elif event.type == KEYDOWN and event.key == pygame.K_s:
            print('Backward')  

了解按鍵事件如何工作的示例代碼。


import pygame
from pygame.locals import *

def main():
    pygame.init()
    pygame.display.set_caption("Move Box With Arrow Keys")
    wndsize = (320, 240)
    display = pygame.display.set_mode(wndsize)

    x = 5
    y = 5

    black = (0, 0, 0)
    white = (255, 255, 255)

    rectpos = (x, y)
    rectdim = (50, 50)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    x += 5
                    print("K_RIGHT")
                if event.key == pygame.K_LEFT:
                    x -= 5
                    print("K_LEFT")
                if event.key == pygame.K_UP:
                    y -= 5
                    print("K_UP")
                if event.key == pygame.K_DOWN:
                    y += 5
                    print("K_DOWN")
                
                # Don't allow coords below 0
                if 0 > x:
                    x = 5
                if 0 > y:
                    y = 5
                
                # Don't allow overflow
                if x + rectdim[0] > wndsize[0]:
                    x = wndsize[0] - rectdim[0] - 5
                
                if y + rectdim[1] > wndsize[1]:
                    y = wndsize[1] - rectdim[1] - 5
                
                rectpos = (x, y)
    
        display.fill(white)
        rect = pygame.draw.rect(display, black, ((rectpos), (rectdim)))
        pygame.display.update()

main()

這可能有效:

from pygame import *

init()
if key.get_pressed()[K_w] == True:
    print('Forwards')
if key.get_pressed()[K_s] == True:
    print('Backwards')`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM