python飞机大战笔记(9)英雄飞机设置

本文详细介绍如何在游戏开发中创建英雄和子弹类,包括英雄的初始化、位置设定、移动控制及边界限制,同时讲解了英雄发射子弹的机制。

设置英雄类和子弹类
新建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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值