创建英雄类
"""英雄精灵"""

class Hero(GameSprite):
def __init__(self):
# 调用父类方法,设置image
super().__init__('./images/me1.png', 0)
# 设置英雄的初始位置
self.rect.centerx = SCREEN_RECT.centerx
self.rect.bottom = SCREEN_RECT.bottom - 120
# 私有方法-创建精灵、精灵组
def __create_sprites(self):
# 创建两个背景精灵加入精灵组,实现循环滚动
background_1 = Background()
background_2 = Background(True) # 设置True表示交替背景,设置位置
self.back_group = pygame.sprite.Group(background_1,background_2) # 创建敌机精灵组
self.enemy_group = pygame.sprite.Group() # 创建英雄精灵和精灵组
self.hero = Hero()
self.hero_group = pygame.sprite.Group(self.hero)
# 私有方法-更新精灵组
def __update_sprites(self):
self.back_group.update() # 更新背景精灵组所有精灵
self.back_group.draw(self.screen) # 绘制精灵组图像
self.enemy_group.update() # 更新敌机精灵组精灵
self.enemy_group.draw(self.screen)
self.hero_group.update()# 更新英雄精灵组
self.hero_group.draw(self.screen)
移动英雄位置
pygame中针对键盘按键的捕获,有两种方式
第一种方式判断event.type == pygame.KEYDOWN
第二种方式:
       首先使用pygame.key.get_pressed()返回所有咱家元素
       通过键盘常量,判断元组某一个键是否被按下,如果按下,对应数值为1
两种方法对比:
       第一种方式必须抬起按键,才算一次按键事件
       第二种方法可以按键不放,产生持续移动效果
#第一种方法判断是否按下按键并且按下的键是→方向键
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
... # 第二种方法获取键盘元组
kyes_pressed = pygame.key.get_pressed()
# 判断键盘元组→方向键是否为1
if kyes_pressed[pygame.K_RIGHT]:

..

控制英雄左右

class Hero(GameSprite):
def __init__(self):
# 调用父类方法,设置image
super().__init__('./images/me1.png', 0)
# 设置英雄的初始位置
self.rect.centerx = SCREEN_RECT.centerx
self.rect.bottom = SCREEN_RECT.bottom - 120
# 重写父类方法,实现左右移动
def update(self):
# 英雄在水平方向移动
self.rect.x += self.speed
# 控制不能离开屏幕
# 判断x 小于0 的时候,将x设为0
if self.rect.x < 0:
self.rect.x = 0
# right = x + 窗口宽度 = 右侧
elif self.rect.right > SCREEN_RECT.right:
self.rect.right = SCREEN_RECT.right
#事件监听
# 获取键盘元组
kyes_pressed = pygame.key.get_pressed()
# 判断键盘元组→方向键是否为1
if kyes_pressed[pygame.K_RIGHT]:
self.hero.speed = 2
#判断键盘元组←方向键是否为1
elif kyes_pressed[pygame.K_LEFT]:
self.hero.speed = -2
else:
self.hero.speed = 0

9.pygame-键盘捕获的更多相关文章

  1. pygame小记

    pygame.display.set_mode(x, y)设置显示窗口大小pygame.sprite.Sprite方法中有image, rect, speed等参数 其中image 可以通过 pyga ...

  2. ms10_046_shortcut_icon_dllloader漏洞利用和ettercap dns欺骗

    ms10_046_shortcut_icon_dllloader漏洞利用过程 msf > use exploit/windows/browser/ms10_046_shortcut_icon_d ...

  3. 最全最详细:ubuntu16.04下内核编译以及设备驱动程序的编写(针对新手而写)

    写在前面:本博客为本人原创,转载请注明出处!同时,本博客严禁任何下载站随意抓取!!! 本博客唯一合法URL: 总体考虑 要去写设备驱动程序,说白了就三大步骤:下载内核源码构建内核源码树(也就是下载你的 ...

  4. python 77种常用的基础函数

     Python:   1. print()函数:打印字符串   2. raw_input()函数:从用户键盘捕获字符   3. len()函数:计算字符长度   4. format(12.3654,’ ...

  5. 最全最详细:ubuntu16.04下linux内核编译以及设备驱动程序的编写(针对新手而写)

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  6. 20145304 Exp4 恶意代码分析

    20145304 Exp4 恶意代码分析 实验后回答问题 (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控 ...

  7. CSS3 pointer-events:none应用举例及扩展

    一.pointer-events:none是? pointer-events是CSS3中又一冉冉的属性,其支持的值牛毛般多,不过大多都与SVG相关,我们可以不用理会.当下,对于偶们来讲,与SVG划开界 ...

  8. QWidget类参考

    QWidget类是所有用户界面对象的基类. 详情请见…… #include <qwidget.h> 继承QObject和QPaintDevice. 被QButton.QFrame.QDia ...

  9. 【js】callback时代的变更

    最近团队开始越来越多的使用es7标准的async/await,从最开始的promise到后面的generator,再到现在async,对于异步,每个时期都有着其特有的解决方案,今天笔者就以自己的接触为 ...

  10. Qt的焦点策略

    Qt的窗口部件在图形用户界面中按用户的习惯的方式来处理键盘焦点.基本出发点是用户的击键能定向到屏幕上窗口中的任何一个,和在窗口中任何一个部件中.当用户按下一个键,他们期望键盘焦点能够到达正确的位置,并 ...

随机推荐

  1. 2021年5月15日海外 Meetup 演讲内容分享

    北京时间 2021 年 5 月 16 日 05:00-08:00 我们与Apache ShardingSphere 联合举办了第一场海外Meetup,感谢各位小伙伴的参与,让本次活动圆满结束. 同时我 ...

  2. 暑期 2021 参与社区:新一代工作流调度——Apache DolphinScheduler

    在众多企业都在进行数字化转型的大背景下,大数据.人工智能等行业有着十分广阔的前景,其发展也可谓如火如荼.发展过程中这其中当然离不开数据采集.数据流通和数据价值挖掘等各种环节,而各环节的打通需要一个坚实 ...

  3. FPGA/Verilog 资源整理

    verilog学习教程(以Vivado为载体)https://vlab.ustc.edu.cn/guide/index.html 中科大的数电实验网站https://vlab.ustc.edu.cn/

  4. Go 语言图片处理简明教程

    虽然 Go 语言主要用于 Web 后端以及各类中间件和基础设施开发,也难免遇到一些图像处理的需求.Go 语言提供的 image 标准库提供了基本的图片加载.裁剪.绘制等能力,可以帮助我们实现一些绘图需 ...

  5. Dubbo源码(八) - 负载均衡

    前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡.分摊到多个 ...

  6. C++ 虚拟桌面

    C++ 打开一个虚拟桌面的代码 看不明白的地方 请查看demo: http://download.csdn.net/detail/allh45601/7224205 QQ群:103197177 C++ ...

  7. Prometheus教程

    Prometheus介绍 主要特征 使用时间序列数据(tsdb)的多维度数据模型 灵活的查询语言(PromQL) 不依赖分布式存储,单个节点是自主的 通过http请求拉取(pull)时间序列数据(ts ...

  8. Windows平台Unity3d播放多路RTMP或RTSP流

    好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...

  9. 第一章 kubernetes概述

    一.Kubernetes概述 1.官网地址:https://kubernetes.io 2.GuiHub:https://github.com/kubernetes/kubernetes 3.又来:谷 ...

  10. KingbaseES R6 集群repmgr.conf参数'recovery'测试案例(三)

    案例三:测试'recovery = manual' 1.查看集群节点状态信息: [kingbase@node1 bin]$ ./repmgr cluster show ID | Name | Role ...