Python自学第十八天——飞机大战项目实践(一)

作为新手自学Python的第十八天,技术低微,希望可以通过这种方式督促自己学习。

个人学习环境:python3.9,PyCharm 2021.3.2 (Community Edition)


利用python完成飞机大战是一个非常经典的练手项目,本次完成基础构件下载安装、整体设计、及窗体绘制。


一、项目资源和素材

项目资源和素材来源于网上找的黑马程序员飞机大战的素材包,下载后熟悉下图片命名已被后期调用。

在《飞机大战》游戏中,除了Python基本知识外,我们还需要一个Python用来编写游戏的模块——Pygame。

Pygame可以用来管理图形、动画以及声音。

(一)安装Pygame

1、首先要确定自己计算机中已经安装好python及pip。

2、在终端中使用如下命令安装Pygame。

pip install pygame

二、项目设计

为了便于我们理解,我们把整个项目分成5个部分:

  1. 窗口的绘制(windows的窗口),即整个游戏的架子及窗口的样式。将这部分包含在run_game函数中。

  2. 我方飞机的制作。生成我方小飞机,实现飞机的移动、射击等操作。将这部分单独设计一个Hero类完成相应功能。

  3. 子弹的制作。从整体而言,子弹是单独的一部分,因为它有其自己的行为。将这部分单独设计一个Bullet类完成子弹功能。

  4. 敌机的制作。和第二部分类似,不过功能不同。将这部分单独设计一个Enemy类完成功能。

  5. 碰撞的检测。此部分较抽象,属于第一部分的一部分,但需要第二、三点的支撑。将它加入第一部分。

三、开始项目

(一)绘制窗体

先创建一个函数run_game完成相应的窗体绘制。

思路为:创建一个Pygame窗口,设置背景图片,调用函数完成绘制。

# 导入pygame库
import pygame
# 导入pygame库中的一些常量
from pygame.locals import *
# 导入sys库中的exit函数
from sys import exit
​
def run_game():
    # 定义窗口的分辨率
    SCREEN_WIDTH = 480
    SCREEN_HEIGHT = 640
​
    # 初始化游戏
    pygame.init()   # 初始化 pygame
    screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT]) # 初始化窗口
    pygame.display.set_caption('飞机大战')  # 设置窗口标题
​
    # 载入背景图
    background = pygame.image.load('./image/background.png')
​
    # 事件循环(main loop)
    while True:
        
        # 绘制背景
        screen.blit(background,(0, 0))
        
        # 更新屏幕
        pygame.display.update()
        
        # 处理游戏退出
        # 从消息队列中循环取
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()
run_game()

注意:

  • while循环是控制游戏的。在Pygame中,(0, 0)是屏幕的左上角向下移动时y轴坐标逐渐增大,向右移动时x轴坐标逐渐增大。调用pygame.display.update()是将刚刚位置的背景图刷新显示在窗体中。

  • 为了访问Pygame检测到的事件,使用方法pygame.event.get()。在Pygame中,键盘和鼠标的触发都会促使for循环的运行,当检测到pygame.QUIT时,调用exit()退出游戏。

此次我们完成窗体的绘制,下一次我们完成飞机的生成。

图片素材放入网盘:

链接:https://pan.baidu.com/s/1WjRd0PHR9zb55NT5Pafm5w?pwd=a3k6 
提取码:a3k6

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wei730050

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值