python 之路,200行Python代码写了个打飞机游戏!

本文介绍了使用Python编程实现打飞机游戏的详细步骤,涵盖游戏设置、飞机与子弹的创建和移动、碰撞检测以及游戏流程。通过实例代码展示了如何在Pygame中创建游戏场景、精灵对象,以及实现飞机的移动、碰撞效果和声音播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看一下项目结构

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

"""

PlayPlane/

|-- bin/

|   |-- main.py         程序运行主体程序

|-- config/

|   |-- settings.py     程序配置(例如: 游戏背景音乐的加载等)

|-- material            程序素材放置(打飞机游戏素材放置)

    |-- ...

|-- src/                程序主体模块存放

|   |-- __init__.py

|   |-- bullet.py       我方飞机发射子弹实现代码存放

|   |-- enemy.py        敌方飞机实现代码存放

|   |-- plane.py        我方飞机实现代码存放

|-- manage.py           程序启动文件

|-- README.md          

"""

 

再晒下项目成果图

实现步骤

一、首先在 config/settings.py 中进行以下功能的实现

  • 游戏初始化
  • 游戏混音器初始化
  • 背景音乐初始化
  • 我方飞机挂了音乐
  • 敌方飞机挂了音乐
  • 子弹发射音乐

+ View Code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#! /usr/bin/env python

# -*- coding: utf-8 -*-

 

importpygame

 

pygame.init()  # 游戏初始化

pygame.mixer.init()  # 混音器初始化

 

# 游戏背景音乐

pygame.mixer.music.load("material/sound/game_music.wav")

pygame.mixer.music.set_volume(0.2)

 

# 子弹发射音乐

bullet_sound =pygame.mixer.Sound("material/sound/bullet.wav")

bullet_sound.set_volume(0.2)

 

# 我方飞机挂了的音乐

me_down_sound =pygame.mixer.Sound("material/sound/game_over.wav")

me_down_sound.set_volume(0.2)

 

# 敌方飞机挂了的音乐

enemy1_down_sound =pygame.mixer.Sound("material/sound/enemy1_down.wav")

enemy1_down_sound.set_volume(0.2)

 

config/settings.py

 

注:游戏素材滑动到文章底部点击链接即可下载  

 

二、小试牛刀

飞机和子弹都是可移动的,那么怎么实现让它们动起来呢(我方飞机可以玩家进行操控,敌机就是随机性的出现,子弹暂由我方飞机发射)。

在Pygame中,所有移动对象都可看做是一个精灵(sprite),精灵之间能够进行相互的交互通信,例如如何让碰撞检测更加精准等等。

那么先让我们先在屏幕上制作一个游戏板,根据 settings.py 配置,并让它有声音播放,首先我们在 bin/main.py 中这么写:

  我们可以直接运行它,那么我们会看到以下画面,并且还会有激情的声音吆!!!但是我们要将文件配置为绝对路径才可以运行,因为刚刚在settings中的加载的音乐文件为相对路径。

+ View Code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#! /usr/bin/env python

# -*- coding: utf-8 -*-

 

importsys

 

fromconfig.settings import*

 

 

bg_size =480, 852  # 初始化游戏背景大小(宽, 高)

screen =pygame.display.set_mode(bg_size)  # 设置背景对话框

pygame.display.set_caption("飞机大战"# 设置标题

 

background =pygame.image.load(os.path.join(BASE_DIR, "material/image/background.png"))  # 加载背景图片,并设置为不透明

 

 

defmain():

    pygame.mixer.music.play(loops=-1# loops 对应的值为 -1 则音乐会无限循环播放

 

    whileTrue:

        # 绘制背景图

        screen.blit(background, (0, 0))

 

        # 响应用户的操作(一定要有响应的用户操作)

        forevent inpygame.event.get():

            ifevent.type==12# 如果用户按下屏幕上的关闭按钮,触发QUIT事件,程序退出

                pygame.quit()

                sys.exit()

 

        # 再而我们将背景图像并输出到屏幕上面

        pygame.display.flip()

 

if__name__ =='__main__':

    main()

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值