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

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

最新文章

  1. T-SQL 比较N个指段取其中最大值
  2. ReportViewer内存泄漏问题解决方案[上]
  3. CodeBlock
  4. Python关键字参数
  5. 【mysql】关于IO/内存方面的一些优化
  6. 2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 (2016 Stanford Local Programming Contest, Extended) I
  7. nginx的健康检查功能将挂掉的Tomcat舍弃
  8. CentOS(三)--初识linux的文件系统以及用户组等概念
  9. hdu3038(并查集)
  10. java正则表达式总结
  11. 谷歌浏览器插件-jsonView插件安装与使用
  12. mysql进阶(十三)命令行导出导入数据库
  13. vue学习记录①(vue-cli脚手架构建项目结构)
  14. vue--模板语法
  15. Unity3D InputManager详解
  16. StringBuilder与String有哪些区别?
  17. Django复习2
  18. GIL学习
  19. [macOS] Cannot find libz when install php56
  20. Jersey RESTful WebService框架学习(八)文件下载防乱码

热门文章

  1. Apache DolphinScheduler 架构演进 & Roadmap
  2. CF580D Kefa and Dishes (状压DP)
  3. C#/VB.NET 替换 PDF 文件上的现有图像
  4. java-方法创建与使用
  5. Excel 查找函数(二):VLOOKUP
  6. java数组---特点,边界
  7. VS 正则匹配快速查询
  8. JDK 自带的服务发现框架 ServiceLoader 好用吗?
  9. Java 9.回文数
  10. 使用Pipeline抽象业务生命周期流程