设置英雄类和子弹类
新建hero类,重写初始化方法,直接指定图片名称,并且将初始速度设置为0,设置英雄的初始位置;
class Hero(GameSprite):
"""英雄精灵"""
def __init__(self):
# 1.调用父类方法,设置image和speed
super().__init__("./images/me1.png",0)#不会自主移动
#设置英雄的初始位置:在屏幕最下面的水平中央位置
self.rect.centerx = SCREEN_RECT.centerx
self.rect.bottom = SCREEN_RECT.bottom-120
绘制英雄
在创建精灵组函数下,添加英雄精灵和英雄精灵组(后序要针对英雄做平壤装检测以及发射子弹,所以英雄需要单独定义成属性
在更新函数中,让英雄组调用更新方法
移动英雄位置:
在pygame中针对按键的捕获,有两种方式
第一种方式:判断even.type = pygame.KEYDOWN
第二种方式:
1)首先使用pygame.key.get_pressed()返回所有按键元组
2)通过键盘常量,判断元组中某一个键是否被按下,如果被按下,对应数值为1
两种方式的差异
键盘方式可以按着一直相应,而pygame终,按下弹起算一次
elif even.type == pygame.KEYDOWN and even.key ==pygame.K_RIGHT:
# print("向右移动")
#使用键盘提供的方法获取键盘按键-按键元组
keys_pressed = pygame.key.get_pressed()
#判断元组中对应的按键的索引值--按下一个键不放
if keys_pressed[pygame.K_RIGHT]:
print("向右移动")
移动英雄位置
左右方向键设置了英雄的速度,speed 向右speed = 2;向左speed = -2;其它speed = 0;
keys_pressed = pygame.key.get_pressed()
#判断元组中对应的按键的索引值--按下一个键不放
if keys_pressed[pygame.K_RIGHT]:
self.hero.speed = 2
elif keys_pressed[pygame.K_LEFT]:
self.hero.speed = -2
else:
self.hero.speed = 0
控制英雄的边界:
在英雄类的updae方法加限制条件;
#英雄在水平方向移动
self.rect.x += self.speed
#控制英雄不能离开屏幕
#right属性是x+屏幕的宽度
if self.rect.right >= SCREEN_RECT.right:
self.rect.right = SCREEN_RECT.right
elif self.rect.x <0:
self.rect.x = 0
本文详细介绍如何在游戏开发中创建英雄和子弹类,包括英雄的初始化、位置设定、移动控制及边界限制,同时讲解了英雄发射子弹的机制。
1万+

被折叠的 条评论
为什么被折叠?



