• Python之路—200行Python代码搞了个打飞机游戏!!


    早就知道pygame模块,就是没怎么深入研究过,恰逢这周未没约到妹子,只能自己在家玩自己啦,一时兴起,花了几个小时写了个打飞机程序。

    很有意思,跟大家分享下。

    先看一下项目结构

    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          

    """

    再晒下项目成果图

     微信扫码添加,备注 “飞机” 领取腾讯文档-在线文档https://docs.qq.com/doc/DU3NjWWxyc2ZURXll

    实现步骤

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

    • 游戏初始化
    • 游戏混音器初始化
    • 背景音乐初始化
    • 我方飞机挂了音乐
    • 敌方飞机挂了音乐
    • 子弹发射音乐
    1. #! /usr/bin/env python
    2. # -*- coding: utf-8 -*-
    3. import pygame
    4. pygame.init() # 游戏初始化
    5. pygame.mixer.init() # 混音器初始化
    6. # 游戏背景音乐
    7. pygame.mixer.music.load("material/sound/game_music.wav")
    8. pygame.mixer.music.set_volume(0.2)
    9. # 子弹发射音乐
    10. bullet_sound = pygame.mixer.Sound("material/sound/bullet.wav")
    11. bullet_sound.set_volume(0.2)
    12. # 我方飞机挂了的音乐
    13. me_down_sound = pygame.mixer.Sound("material/sound/game_over.wav")
    14. me_down_sound.set_volume(0.2)
    15. # 敌方飞机挂了的音乐
    16. enemy1_down_sound = pygame.mixer.Sound("material/sound/enemy1_down.wav")
    17. enemy1_down_sound.set_volume(0.2)
    18. config/settings.py

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

    二、小试牛刀

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

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

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

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

    1. #! /usr/bin/env python
    2. # -*- coding: utf-8 -*-
    3. import sys
    4. from config.settings import *
    5. bg_size = 480, 852 # 初始化游戏背景大小(宽, 高)
    6. screen = pygame.display.set_mode(bg_size) # 设置背景对话框
    7. pygame.display.set_caption("飞机大战") # 设置标题
    8. background = pygame.image.load(os.path.join(BASE_DIR, "material/image/background.png")) # 加载背景图片,并设置为不透明
    9. def main():
    10. pygame.mixer.music.play(loops=-1) # loops 对应的值为 -1 则音乐会无限循环播放
    11. while True:
    12. # 绘制背景图
    13. screen.blit(background, (0, 0))
    14. # 响应用户的操作(一定要有响应的用户操作)
    15. for event in pygame.event.get():
    16. if event.type == 12: # 如果用户按下屏幕上的关闭按钮,触发QUIT事件,程序退出
    17. pygame.quit()
    18. sys.exit()
    19. # 再而我们将背景图像并输出到屏幕上面
    20. pygame.display.flip()
    21. if __name__ == '__main__':
    22. main()

     接下来呢,我们将要制作我方飞机,敌方飞机和子弹如何让它们展示在游戏画板上,继而让它们变得可移动起来,请看代码实现方案...

    从游戏画板上添加飞机,首先我们应怎样在屏幕上输出飞机???

    上述讲过,pygame中的 sprite(精灵)可使一张图片或者一个静态物体动起来,那么制作飞机需要考虑并做些什么呢?

    1. 飞机的初始位置
    2. 通过按键 上下左右 来调控飞机的位置移动
    3. 飞机只能呆在制作的游戏画板中
    4. 飞机的速度
    5. 飞机死亡的加载
    6. 设定一个状态标识飞机的存活
    7. 让飞机具有动态的喷气式效果

    那么如何实现以上的功能呢?接下来结合上述的示例代码我们先将我方飞机绘制到画板上方,并且我们通过按键 J 判定我方飞机的存活状态为死亡,绘制飞机的死亡画面并重置飞机

    1. """
    2. 创建飞机
    3. 在pygame中, 所有可移动的对象均叫可看作一个精灵(sprite)
    4. 该类并实现了碰撞方法 spritecollide
    5. 我方飞机和敌方飞机指定掩
  • 相关阅读:
    我的创作纪念日
    JAVAWeb1:登录页面
    无人机无线Mesh自组网,CV5200远距离WiFi模组,实时通信传输技术
    【python】python的命令行调试工具—pdb(python debugger)
    class的基本用法
    dwg如何转换成pdf,cad快速转pdf
    使用 WebGL 创建 3D 对象
    用人工智能预测彩票,利用大数据预测彩票
    nodejs基于vue小型企业银行账目管理系统
    Java Math.tan()/Math.tanh()具有什么功能呢?
  • 原文地址:https://blog.csdn.net/m0_72557783/article/details/128187078