从 0 开始学游戏开发
蔡能
原网易游戏引擎架构师,资深游戏底层技术专家
37243 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
从 0 开始学游戏开发
15
15
1.0x
00:00/00:00
登录|注册

第17讲 | 如何用鼠标和键盘来操作游戏?

pygame.key.get_pressed()
event.key == pygame.K_w
event.type == KEYDOWN
组合键写在第一个按键的判断下会出现什么情况
返回tuple
get_pressed函数
返回tuple
写在同一个判断下
get_pressed函数
KEYDOWN事件
事件判断 vs 按键判断
if key[pygame.K_LCTRL]: if key[pygame.K_w]:
使用and连接
keypressed函数
event事件操作
pygame.mouse.get_pressed()
pygame.mouse.get_pos()
留下问题
鼠标操作
get_pressed函数
组合键
键盘事件判断
区别
组合键
键盘事件判断
鼠标操作
小结
如何用鼠标和键盘来操作游戏?

该思维导图由 AI 生成,仅供参考

如果一款游戏不能用鼠标和键盘操作,那我们只能当动画来看。
所以在一款游戏中,鼠标和键盘的操作是必不可少的,有时候甚至鼠标和键盘都要同时操作,比如 FPS 游戏,比如即时战略等等。鼠标和键盘的操作在 Pygame 中需要进行实时检测,这个上一节我有提到过,然后我们就可以对游戏画面进行操作。
我们在 Pygame 中有两种方式可以检测和编写键盘事件,一种是使用 event 事件操作,一种是使用 keypressed 函数来进行键盘的判断操作。
我们先来尝试一下使用事件进行操作的键盘事件。我们在之前的代码中,已经使用事件来判断是不是退出,我们来看如下代码:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
在这段代码里面,event.type 的类型如果是 QUIT 的话,就让 pygame 退出,那么举一反三,我们也可以在里面写上如下代码:
if event.type == KEYDOWN:
if event.key == pygame.K_w:
.....
在这里,我们判断事件的类型是 KEYDOWN,也就是键盘按下的事件,随后我们再在下面的代码里, 判断 event 所返回键盘 key 值,是 pygame.K_w,这个 K_w 是 pygame 里面定义的虚拟键盘的按键,代表的是 Key 值为键盘 w 的按键,所以你只要按下 w 键,就会出现对应的操作。
我们来写下一系列的操作代码,在编写代码之前,我们首先要来定义一下规则。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用鼠标和键盘来操作游戏,重点讨论了在Pygame中实时检测和编写键盘事件的两种方式。首先介绍了使用事件进行操作的键盘事件,然后详细讲解了使用keypressed函数进行键盘的判断操作。文章还涉及了飞机移动的规则和键盘操作代码的编写,以及如何实现组合键的效果。此外,还介绍了鼠标操作的内容,包括如何将一幅图片贴在鼠标的位置并随着鼠标的移动而移动,以及如何判断鼠标的按键。总结了键盘事件判断和鼠标操作的要点,并留下了一个小问题供读者思考。整体而言,本文内容涵盖了Pygame中键盘和鼠标操作的基本知识,适合对游戏开发感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学游戏开发》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • milley
    老师,能否把素材放github吗

    作者回复: 准备好了就放出来

    2018-07-13
    1
  • 嗯嗯��
    老师,您好,我目前开发Java,现在想转型游戏开发,请问我该怎么学习?比如,脚本语言学Lua,还是Python

    作者回复: java一样可以开发游戏,看你想学习什么类型的,什么平台的。苹果和安卓?PC还是H5?语言不同

    2018-07-13
    1
  • wusiration
    写了下代码,发现将组合键写在第一个按键的判断下,也是能正常响应组合键功能的,请老师解惑

    作者回复: 是的,组合判断互换效果一样,可以正常响应。

    2018-07-16
  • 肖恩
    老师,在Ubuntu 18.04使用第一种方法event.key== K_w检测不出来asdw 和空格键,但是能检测出上下左右箭头。麻烦问一下这是什么情况。字母键和空格键打印的event.key都为0。
    2020-05-06
    1
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部