转载:python中的pygame编写飞机大战(五)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了转载:python中的pygame编写飞机大战(五),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1987字,纯文字阅读大概需要3分钟。
内容图文
![转载:python中的pygame编写飞机大战(五)](/upload/InfoBanner/zyjiaocheng/839/81660113d5684505b1621f8da7371aca.jpg)
作者:还在琢磨
来源:CSDN
原文:https://blog.csdn.net/mbl114/article/details/78075409
版权声明:本文为博主原创文章,转载请附上博文链接!
敌人飞机类的设计和英雄非常类似,区别在于英雄的坐标计算在每一帧的时候计算,每一帧绘制。当敌人飞出屏幕之后,自动再随机设置飞机的初始坐标,实现飞机无穷无尽从地图上面往下飞。
# 敌人飞机
class EnemyPlane(object):
# 初始化敌人飞机
def __init__(self, scene):
# 加载飞机资源
self.image = pygame.image.load("./res/img-plane_1.png")
# 缓存主场景对象
self.main_scene = scene
# 飞机矩形
self.rect = self.image.get_rect()
# 子弹列表
self.bullet = Bullet(self.main_scene, True)
# 飞机速度
self.speed = 2
# 获得飞机矩形
def rect(self):
return self.rect
# 设置飞机位置
def set_pos(self, x, y):
self.rect[0] = x
self.rect[1] = y
# 飞机动作
def action(self):
# 子弹每次移动向上移动self.speed速度
self.rect.move_ip(0, self.speed)
# 如果飞机移动出屏幕则将飞机设置为不可见状态
if self.rect[1] > self.main_scene.size[1]:
# 当飞机飞出屏幕,重新设置飞机的初始位置,移动速度
# 随机产生x坐标,纵坐标使用为0
self.set_pos(random.randint(0, self.main_scene.size[1] - self.rect[2] - 20), 0)
# 随机设置飞机移动速度
self.speed = random.randint(2, 5)
# 绘制飞机
def draw(self):
self.main_scene.scene.blit(self.image, (self.rect[0], self.rect[1]))
在GameScene类的__init__函数中,我们预先创建了3个飞机
# 创建多个敌机
self.enemy_list = [EnemyPlane(self) for _ in range(3)]
在draw函数中绘制敌机
# 绘制
def draw_elements(self):
# 绘制地图
self.map.draw()
# 绘制英雄飞机
self.hero.draw()
# 依次绘制英雄飞机每一颗发射出去的子弹
for bullet in self.hero.bullets:
if bullet.visible:
bullet.draw()
# 绘制敌人飞机和飞机子弹
for plane in self.enemy_list:
plane.draw()
在action函数中,计算飞机坐标
# 绘制
def draw_elements(self):
# 绘制地图
self.map.draw()
# 绘制英雄飞机
self.hero.draw()
# 依次绘制英雄飞机每一颗发射出去的子弹
for bullet in self.hero.bullets:
if bullet.visible:
bullet.draw()
# 绘制敌人飞机和飞机子弹
for plane in self.enemy_list:
plane.draw()
作者没有写出敌人飞机的子弹发射代码,当然也没有写子弹显示代码。可以参照英雄飞机的代码来改写,不难。
内容总结
以上是互联网集市为您收集整理的转载:python中的pygame编写飞机大战(五)全部内容,希望文章能够帮你解决转载:python中的pygame编写飞机大战(五)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。