前言
基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。
我们的下一步目标是完成python crash course中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame模块。
私信我发送消息python资料,领取python crash course中文版PDF。
pygame
Pygame是一个开源的Python多媒体开发库,专门用于开发2D游戏。它是Python编程语言的一个扩展,基于 SDL (Simple DirectMedia Layer) 库,提供了丰富的功能来处理图形、声音、事件处理等游戏开发所需的基本要素,使得创建游戏变得更加简单直接。
按键映射
在pygame中,键盘事件通常通过pygame.KEYDOWN和pygame.KEYUP事件来检测。每个按键都有一个对应的常量,这些常量定义在pygame.locals
或pygame.constants
模块中(通常直接导入*以访问)。
这里提供一些按键映射的信息:
- K_UP, K_DOWN, K_LEFT, K_RIGHT - 方向键
- K_a, K_b, K_c, … - 字母键
- K_0, K_1, K_2, … - 数字键
- K_RETURN - 回车键
- K_SPACE - 空格键
- K_BACKSPACE - 退格键
- K_TAB - 制表符键
- K_F1, K_F2, …, K_F12 - 功能键
- K_KP0, K_KP1, …, K_KP9 - 小键盘数字键
- K_KP_PERIOD, K_KP_DIVIDE, K_KP_MULTIPLY, K_KP_MINUS, K_KP_PLUS, K_KP_ENTER - 小键盘运算键和回车键
- K_RCTRL, K_LCTRL - 右Ctrl键和左Ctrl键
- K_RALT, K_LALT - 右Alt键和左Alt键
- K_RSHIFT, K_LSHIFT - 右Shift键和左Shift键
- K_NUMLOCK - 数字键盘锁定键
- K_CAPSLOCK - 大写字母锁定键
- K_SCROLLOCK - 滚动锁定键
- K_INSERT - 插入键
- K_DELETE - 删除键
- K_HOME - Home键
- K_END - End键
- K_PAGEUP - Page Up键
- K_PAGEDOWN - Page Down键
- K_PRINT - Print Screen键
- K_PAUSE - Pause键
- K_F15 - F15键(某些系统可能没有这个键)
- K_F16, K_F17, K_F18, K_F19, K_F20 - 额外的功能键(如果存在)
以上就是键盘按键对应pygame中的常量值,在判定某些特定按键按下时,可以使用对应的变量进行判断。
import sys
import pygame
from pygame.locals import *
# 初始化pygame
pygame.init()
# 创建一个窗口
screen = pygame.display.set_mode((640, 480))
pygame.key.stop_text_input()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN: # 如果有按键被按下
if event.key == K_ESCAPE: # 如果按下的是ESC键
pygame.quit()
sys.exit()
elif event.key == K_UP: # 如果按下的是上箭头
print("Up arrow key pressed.")
elif event.key == K_DOWN: # 如果按下的是下箭头
print("Down arrow key pressed.")
elif event.key == K_LEFT: # 如果按下的是左箭头
print("Left arrow key pressed.")
elif event.key == K_RIGHT: # 如果按下的是右箭头
print("Right arrow key pressed.")
elif event.key == K_a: # 如果按下的是A键
print("A key pressed.")
elif event.key == K_b: # 如果按下的是B键
print("B key pressed.")
简单写了一个示例,这里需要注意的是当你开启窗口的时候,输入ab等字符的时候,程序无法识别,并且后续你按方向键也不在响应了。
原因就是pygame启动打开窗口后,你的输入模式会变成文本输入模式,这个时候你按键ABC无法被识别。
有三个方法解决:
1. 按shift切换英文;
2. 按CAPSLOCK设置大写;
3. pygame.key.stop_text_input(),创建窗口以后调用此函数,停止文本输入模式,这个时候你的按键就会变成单独的按键事件被pygame处理。
结尾
今天的记录主要是补充之前说的按键映射以及按键时的一个小问题。
这已经是pygame学习的最后一篇了,接下来就要开始外星人入侵的小游戏代码编写了。
加油!!!
标签:39,Python,elif,按下,pygame,key,按键,event From: https://blog.csdn.net/weixin_48668564/article/details/140503404