10分钟教你用python做个打飞机(超详细超入门教程)附源代码下载

我知道你们一定想先看效果如何

image

00 目录

  • 整体框架
  • 开始之前-精灵类Sprite
  • 子弹类class Bullet
  • 玩家飞机类class Player
  • 敌机类class Enemy
  • 游戏主体循环以及帧率设置
  • 让子弹飞
  • 刷出敌机 打怪
  • 把飞机敌机子弹都画出来
  • 处理键盘事件
  • 分数显示 和 GameOver
  • 最终代码

01 前言

这次还是用python的pygame库来做的游戏。关于这个库的内容,读者可以上网了解一下。本文只讲解用到的知识。代码参考自网上,自己也做了一点代码简化。尽量把最核心的方面用最简单的方式呈现给大家,让大家尽快掌握这个游戏的框架。至于那些华丽的功能,大家在弄懂了核心知识以后,再去添加也是非常easy的。

02 整体框架

这个游戏设计用到了面向对象的编程思想。
游戏主体划分为三个主要的类:
- 子弹类class Bullet
- 玩家类class Player
- 敌机类class Enemy

在屏幕上可见的也就是这三个东西了。自己的飞机、敌人的飞机、子弹。因此整个游戏的核心就是:
- 把这三个东西的图像呈现在屏幕上。
- 判断和处理子弹撞击敌机和敌机撞击玩家这两种情况。

下面我们会展开为大家一一讲解。

03 开始之前-精灵类Sprite

在下面的代码中,你们会大量见到这个pygame.sprite模块。这里就给大家介绍一下。“sprite”,中文翻译“精灵”,在游戏动画一般是指一个独立运动的画面元素,在pygame中,就可以是一个带有图像(Surface)和大小位置(Rect)的对象。 简单来说是一个会动图片。它的两个成员变量

  • self.image=要显示图片的Surface
  • self.rect = 显示Surface的区域

对于self.rect,常用的设置rect的方法:self.rect = self.image.get_rect()。然后设定self.rect.topleft=(0,0)来设定左上角的位置,从而设定这个精灵在屏幕上的显示位置。精灵特别适合用在OO语言中,比如Python。

pygame.sprite.Sprite是pygame精灵的基类,一般来说,你总是需要写一个自己的精灵类继承一下它然后加入自己的代码。

关于此类的其他函数,咱们用到的时候会详细跟大家说的。

04 子弹类class Bullet

先来看代码吧。

# 子弹类
class Bullet(pygame.sprite.Sprite):
    def __init__(self, bullet_img, init_pos):
        pygame.sprite.Sprite.__init__(self)
        self.image = bullet_img
        self.rect = self.image.get_rect()
        self.rect.midbottom = init_pos
        self.speed = 10

    def move(self):
        self.rect.top -= self.speed

子弹类继承于pygame.sprite.Sprite, 成员主要是子弹的图片对象和子弹刷出来的位置,当然,还有移动速度。一个方法就是移动,从发出位置直线往屏幕上方移动。

05 玩家飞机类class Player

老样子。先看代码


# 玩家飞机类
class Player(pygame.sprite.Sprite):
    def __init__(self, plane_img, player_rect, init_pos):
        pygame.sprite.Sprite.__init__(self)
        self
  • 12
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值