功夫游戏源码-Python实现飞机战争游戏(附完整代码文件和资料)

前言

自学Python记录,不喜欢请勿评论!

本程序的代码是根据B站黑马程序员的视频代码改编的,我总结一下自己的想法,写下博文纯粹是为了记录自己的学习过程!

当我第一次想到使用Python的pygame模块来开发一款飞机对战游戏时,我立刻就兴奋起来。 毕竟,学以致用才是最好的学习方式,更不用说制作游戏了。 但当我真正开始使用它时,我发现我没有想象力。 太简单。 当然,万事开头难。 当你积累了一些经验后,前面的路就会变得容易得多。

文章目录

pygame模块安装

开发这个游戏的第一步是安装 pygame 模块。 我完全按照老师的要求在终端中使用命令行安装了pygame,并且还可以运行其外部小游戏,但是当我打开文件导入pygame模块Hou时,无论我做什么,它总是是“没有名为 pygame 的模块”。 我安装又卸载,卸载又摆弄,但总是弄不准,心态崩溃了。 所以我放弃了,但我又不愿意这么做。 查阅了很多资料,功夫不负有心人,终于在后来的博客中无意中发现了解决方案。 当然,其他掠夺者有更好的解决方案,怪我之前没有搜索到。 顺便想吐槽一下CSDN的搜索功能。 我经常寻找错误的答案。 我可以在微软什么的搜索CSDN博客内容。 找不到吗? 具体安装方法可以看这个:

开始使用 pygame

完成pygame模块的安装后,我们就要开始我们的游戏开发了! 在此之前,我们先来了解一下Python中的pygame模块。 pygame是Python中的2D游戏开发库,支持声音和图像的编辑。 当然,随着如今3D游戏的流行,pygame正在逐渐没落,但这并不妨碍我们从小就学习一些东西。 pygame程序的总体结构如下。 init()函数启动功夫游戏源码,quit()函数退出,中间是具体的游戏代码。

<code class="prism language-python">import pygame
pygame.init()
# 编写游戏的代码
print("游戏的代码...")
pygame.quit()

使用 Rect 来描述圆形区域

在Python游戏中,坐标系用于描述游戏中每个组件的位置。 原点位于左上角,x 轴水平向右,y 轴水平向上。 描述一个圆形区域,还需要长度和高度,因为坐标只能表示其左上角的位置。 将长度和高度相加即可确定位置。

import pygame
hero_rect = pygame.Rect(100, 500, 120, 125)
print("英雄的原点%d %d" % (hero_rect.x, hero_rect.y))
print("英雄的尺寸%d %d" % (hero_rect.width, hero_rect.height))
print("%d %d" % hero_rect.size)

创建游戏窗口

pygame 中专门提供了一个模块 pygame.display 用于创建和管理游戏窗口。 有两种方法:

import pygame
pygame.init()
# 创建游戏的窗口
pygame.display.set_mode((480, 700))
while True:
    pass
pygame.quit()

游戏窗口的宽度为480,高度为700。单位为像素。 这个设置和我们之前的背景图是一致的。 while循环是主游戏循环,只要没有退出游戏的命令,它就必须继续执行。

绘制图像

游戏窗口创建完成后,就该放东西了,否则你就只能盯着一个漆黑的窗口看! pygame中的load()函数加载图像数据,blit()函数勾画图像轮廓,update()函数更新屏幕显示。 每次绘制图像时都会调用 update 方法。 当然也可以放在最后,只调用一次update。 技能。

import pygame
pygame.init()
# 创建游戏的窗口
screen = pygame.display.set_mode((480, 700))
# 绘制背景图像
# 1.加载图像数据
bg = pygame.image.load("./images/background.png")
# 2.blit绘制图像
screen.blit(bg, (0, 0))
# 3.update更新屏幕显示
pygame.display.update()
# 绘制英雄的飞机
hero = pygame.image.load("./images/me1.png")
screen.blit(hero, (180,500))
pygame.display.update()
while True:
    pass
pygame.quit()

完成此操作后,它将如下所示:

游戏循环

游戏循环意味着游戏的开始。 游戏循环的作用是保证游戏不会直接退出、改变图像位置实现动画效果以及衡量与用户的交互内容。 具体包括设置刷新分辨率、检测用户交互、更新图像位置、更新屏幕显示等。

while True:
	pass

比赛时钟

pygame中专门提供了一个类pygame.time.Clock,可以非常方便的设置屏幕绘制速率——刷新分辨率。 在游戏初始化期间创建一个时钟对象,并让时钟对象在游戏循环中调用tick()方法。 tick()方法会根据之前调用的时间自动设置游戏循环中的延迟。

......
# 创建时钟对象
clock = pygame.time.Clock()
while True:
    # 可以指定循环体内部的代码执行频率
    clock.tick(60)
......

聆听暴风雨的声音

事件是游戏开始后用户对游戏所做的事情。 例如:用户点击鼠标、按下鼠标等。

监控就是判断用户的具体操作。 只有捕捉用户的具体操作,才能做出有针对性的响应。

pygame中,通过pygame.event.get(),可以获取当前用户进行的骚扰列表

import pygame
pygame.init()
# 创建游戏的窗口
screen = pygame.display.set_mode((480, 700))
# 绘制背景图像
bg = pygame.image.load("./images/background.png")
screen.blit(bg, (0, 0))
#  pygame.display.update()
# 绘制英雄的飞机
hero = pygame.image.load("./images/me1.png")
# screen.blit(hero, (180,500))
# 可以在所有绘制工作完成之后统一调用update方法
pygame.display.update()
# 创建时钟对象
clock = pygame.time.Clock()
# 1.定义rect记录飞机的初始位置
hero_rect = pygame.Rect(150, 300, 102, 126)
# 游戏循环->意味着游戏的正式开始
while True:
    # 可以指定循环体内部的代码执行频率
    clock.tick(60)
    # 监听事件
    event_list = pygame.event.get()
    if len(event_list) > 0:
        print(event_list)
        # 判断飞机的位置
    if hero_rect.y <= 0:
        hero_rect.y = 700
        # 2.修改飞机的位置
    hero_rect.y -= 1
    # 3.调用blit方法绘制图像
    screen.blit(bg, (0, 0))
    screen.blit(hero, hero_rect)
    # 4.调用update方法更新显示
    pygame.display.update()
pygame.quit()

MouseMotion表示键盘连接,KeyDown表示按下按钮,KeyUp表示抬起按钮。

精灵和精灵组

我不是在说数码宝贝! Sprites和Sprite Group是pygame中提供的两个类,用于简化图像加载、位置变化、图像绘制等功能的开发步骤。

pygame.sprite.Sprite - 用于存储图像图像和位置矩形的对象。

pygame.sprite.Group - 包含多个精灵的对象。

elf类中有两个属性image来记录图像数据和rect位置信息,update()方法更新位置信息。

sprite group类的add()方法将sprite添加到组中; sprites() 方法返回所使用的精灵列表; update()方法允许组中的所有精灵调用update方法; draw() 将组中使用的精灵图像绘制到 Surface 上。 正确的位置。

class GameSprite(pygame.sprite.Sprite):
    """飞机大战游戏精灵"""
    def __init__(self, image_name, speed=1):
        # 调用父类的初始化方法
        super().__init__()
        # 定义对象的属性
        self.image = pygame.image.load(image_name)
        self.rect = self.image.get_rect()
        self.speed = speed
    def update(self):
        # 在屏幕的垂直方向上移动
        self.rect.y += self.speed

框架建筑

借一张黑马的图吧。 以下是本游戏的总体框架:首先是游戏初始化,设置游戏窗口,创建游戏时钟,创建精灵和精灵组。 然后在游戏循环中设置刷新分辨率,进行风暴窃听、碰撞检查、更新轮廓精灵组、更新屏幕显示等。

存储各种类型精灵的文件:

主要程序:

最终的游戏窗口如下所示。 感觉可以玩一年。

终于

我还在B站找到了小螃蟹制作的客机大战,上面有积分,可以捡装备等等。 比这个好玩多了,但是程序很复杂功夫游戏源码,一般人看不懂。 黑马仔细解释了一下。 更容易理解。 强烈建议大家学Python看看。

黑马代码链接: 链接: 提取码:ww9l

小乌龟的代码链接:

提取码:uicm

如果失效或者链接无效,请私信联系我。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 游戏源码 功夫游戏源码-Python实现飞机战争游戏(附完整代码文件和资料) https://www.wkzy.net/game/185879.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务