Python开发小游戏:写一个飞机大战只需要500行代码!

这篇具有很好参考价值的文章主要介绍了Python开发小游戏:写一个飞机大战只需要500行代码!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

‘’’

:param background_image_path: 背景图片的路径地址

:param size: 游戏窗口的大小

:param title: 游戏窗口的标题

:param font_name: 指定字体

:param font_size: 指定字体大小

:param speed: 背景图滚动整个窗口一次所用时间,单位为ms

‘’’

self.size = size

self.screen = pygame.display.set_mode(size)

self.title = title

self.background_image_path = background_image_path

self.background = pygame.image.load(self.background_image_path).convert()

设置字体对象,得到系统中自带的字体

self.font = pygame.font.SysFont(font_name, font_size)

得到Clock对象,我们可以使用它来获取距离上次绘制图像的时间

self.clock = pygame.time.Clock()

背景图初始位置

self.height = 0

使用窗口的高度处于滚动的时间,就能得到每ms滚动的距离

self.every_ms_move_distance = self.size[1] / speed # 2秒

分数

self.score = 0

存放所有的敌机

self.enemies = []

def show_score(self):

‘’’

显示分数, 在窗口的的最上方距离上边距10px, 左右居中

‘’’

pass

def set_time_passed(self):

控制画 的帧, 越大越快

得到上一次绘制图像到到现在的时间, ms

self.time_passed = self.clock.tick()

def draw_background(self):

‘’’

绘制背景图片,一直向下滚动,营造飞机一直往上面飞的感觉

‘’’

每次移动的距离 = 每ms移动的距离 * 上次到现在的时间(ms)

pass

def create_enemy(self, image_path=os.path.join(source_dir,‘enemy1.png’), enemy_number=5):

‘’’

创建敌机

:param image_path: 敌机的图片地址

:param enemy_number: 最多有几个敌机在屏幕上

‘’’

pass

def draw_enemies(self, time_passed, screen):

‘’’

绘制敌机到屏幕上,清理跑出窗口的敌机,

:param time_passed: 上次绘制导向现在经过的时间

:param screen: 绘制的窗口对象

‘’’

pass

def bullet_and_enemy_crash_detection(self, bullets):

‘’’

检测子弹是否击中敌机

:param bullets: 飞机的所有子弹

‘’’

pass

def plan_and_enemy_crash_detection(self, plan, allow_crash_size=None):

‘’’

检测敌机与飞机是否相撞

:param plan: 飞机对象

:param allow_crash_size: 允许飞机碰撞的大小,只有左右有效

‘’’

pass

def draw_plan(self, plan, time_passed):

‘’’

绘制飞机

:param plan: 飞机对象

:param time_passed: 距离上次绘制的时间

:return:

‘’’

pass

def game_over(self):

‘’’

游戏结束

‘’’

while True:

绘制背景图

pass

def run(self):

‘’’

游戏入口函数,开始函数,主体函数

:return:

‘’’

设置游戏窗口的大小

pygame.display.set_caption(self.title)

初始化一个飞机对象

plan = Plan()

while True:

如果飞机自毁完成, 游戏结束, 调用game_over函数

pass

检测监听事件

pass

检测上下左右的移动案件.

w,a,s,d 和 上,下,左,右键都可以

然后执行plan.update函数,改变飞机的位置

pass

子弹和敌机的碰撞检测

self.bullet_and_enemy_crash_detection(plan.bullets)

飞机与敌机的碰撞检测

self.plan_and_enemy_crash_detection(plan)

设置属性time_passed的值, 距离上次的时间,方便后面使用

self.set_time_passed()

绘制背景图片

self.draw_background()

显示分数

self.show_score()

生成敌机

self.create_enemy()

绘制敌机

self.draw_enemies(time_passed=self.time_passed, screen=self.screen)

绘制飞机

self.draw_plan(plan=plan, time_passed=self.time_passed)

绘制子弹

plan.draw_bullets(time_passed=self.time_passed, screen=self.screen)

显示我们的图像

pygame.display.update()

#大家可以加下这个群631441315一起交流 ,群里有大量的PDF书籍、教程免费使用!不管是学习到哪个阶段的小伙伴都可以获取到自己需要的教程!

这里说以下怎样查看自己的系统中有哪些自带的字体。pygame.font.get_fonts(),这个函数就能够得到系统中所有的自带字体文件。不过,当我们游戏中有中文的时候,我们也得选择支持中文的字体,否则的话是显示不出中文的

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

===============================================================================================================================================================================================

3. 实现DestroyAnimationMixin类,这个类主要是用来显示飞机或敌机的自毁动画。

==================================================

显示飞机自毁动画的Mixin类, 可用于飞机和敌机的自毁动画显示

class DestroyAnimationMixin():

def show_destroy_animation(self, time_passed, destroy_time=200):

‘’’

显示自毁动画

动画其实就是几张图片切换的比较快,我们的眼睛识别不出来,所以认为他是动态的,也就是动画

:param time_passed: 距离上次绘制图像到现在的时间,单位ms

:param destroy_time: 自毁动画总共显示时间,单位ms

‘’’

因为我们的自毁图片有四张,需要依次显示,首先动画的效果

self.destroy_image_position 表示第几章自毁图片,从零开始

如果大于等于4了,说明自毁动画显示完成,设置self.destroyed变量为True, 方便别处调用

if self.destroy_image_position >= 4:

self.destroyed = True

return

依次加载自毁图片

if self.time_passed >= destroy_time / 4:

self.image = pygame.image.load(os.path.join(source_dir, self.destroy_images[self.destroy_image_position])).convert_alpha()

self.destroy_image_position += 1

self.time_passed = 0

else:

self.time_passed += time_passed

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

===============================================================================================================================================================================================

4. 实现飞机类,完成飞机的主要操作。飞机的操作包括:飞机位置、飞机子弹、发射子弹等。

============================================

飞机类,继承DestroyAnimationMixin, 方便使用显示自毁动画的函数

class Plan(DestroyAnimationMixin):

def init(self, image_path=os.path.join(source_dir,‘plan.png’), background_size=(480, 700)):

‘’’

:param image_path: 飞机图片地址

:param background_size: 游戏窗口大小

‘’’

self.background_size = background_size

self.image = pygame.image.load(image_path).convert_alpha()

self.image_size = self.image.get_size()

self.position = [(background_size[0]-self.image_size[0]) / 2, 500]

飞机每次移动的距离

self.every_time_move_distance = 0.5

飞机的子弹

self.bullets = []

destroy association attributes, 自毁相关属性

开始自毁

self.start_destroy = False

自毁结束

self.destroyed = False

自毁图片

self.destroy_images = [‘me_destroy_1.png’, ‘me_destroy_2.png’, ‘me_destroy_3.png’, ‘me_destroy_4.png’]

自毁图片位置

self.destroy_image_position = 0

距离上次绘制图像到现在的时间

self.time_passed = 0

def update(self, direction):

‘’’

更新飞机位置

:param direction: 飞机移动方向

‘’’

pass

def shut(self, image_path=os.path.join(source_dir,‘bullet.png’)):

‘’’

飞机发射子弹

:param image_path: 子弹图片

‘’’

pass

def draw_bullets(self, time_passed, screen):

‘’’

绘制飞机的所有子弹

:param time_passed: 距离上次绘制图像到现在的时间

:param screen: 绘制到哪一个窗口中

‘’’
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)文章来源地址https://www.toymoban.com/news/detail-848146.html

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

Python开发小游戏:写一个飞机大战只需要500行代码!,程序员,python,pygame,开发语言

到了这里,关于Python开发小游戏:写一个飞机大战只需要500行代码!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用python写(飞机大战小游戏)

    w\\\'cwc下面我们进入详细教程:   一、首先我们先建一个文件夹 planewars(名字随便取):  然后用我们python中的pycharm打开这个文件,我们飞机大战的项目就在这进行 二、我们要写这个小游戏要用到pygame模         补充: Pygame是一个利用SDL库的写就的游戏库,Pygame就是Python中使用

    2024年02月09日
    浏览(36)
  • 使用Python制作的小游戏---飞机大战

    1.pygame模块 1. 熟悉Python面向对象编程的方法和套路 1.敌机模块 2. 地图模块 3. 得分模块 4 .英雄飞机模块 5. 子弹模块 6. 主模块

    2024年02月03日
    浏览(34)
  • pygame飞机大战小游戏(python大作业)

      python大作业,在查看了老师给的链接发现教学视频不完整,所以借用了同学的《Python编程 从入门到实践》中的一个项目,学习模仿。 二、游戏具体介绍 这是一款由辉辉亲自打造的太空对战小游戏。 游戏背景:在广袤无垠的太空里有一群蓝精灵(不是)有一群邪恶的坏人,

    2024年02月11日
    浏览(40)
  • python小游戏毕设 飞机大战设计与实现

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 飞机大战小游戏设计与实现 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:3分 利用Python制作的一个简易版类\\\"飞机大

    2024年02月10日
    浏览(42)
  • 【python】 pygame学习示例 --飞机大战小游戏制作

    python版本:3.8.5 所需模块:pygame random os pygame版本:20.1 开发环境:pycharm专业版 硬件环境:win11 8G内存以上 使用python的第三方库–pygame 制作飞机大战小游戏 小游戏的内容包括: 玩家player的移动 子弹的发射 陨石的随机掉落(包括旋转 大小 下落角度) 玩家 子弹 陨石的碰撞交互

    2024年02月04日
    浏览(43)
  • 前端技术搭建飞机大战小游戏(内含源码)

    上周我们实通过前端基础实现了弹珠游戏,当然很多伙伴再评论区提出了想法,后续我们会考虑实现的,今天还是继续按照我们原定的节奏来带领大家完成一个飞机大战游戏,功能也比较简单简单,也是想借助这样一个简单的功能,然后来帮助大家了解我们JavaScript在前端中的

    2024年02月04日
    浏览(35)
  • 用Python开发一个飞机大战游戏(附源码教程)

    点击蓝字 关注我们 Python是一门非常简单的语言,快速入门之后可以做很多事情!比如爬虫啊,数据分析啊,自动化运维啊,机器学习,量化分析等等!但是入门到进阶的过程有时会非常痛苦,如果有一些好玩有趣的例子就好了。 比如通过游戏来学编程是一个非常好的途径,

    2024年04月14日
    浏览(33)
  • 【C++】做一个飞机空战小游戏(十)——子弹击落炮弹、炮弹与飞机相撞

    [导读]本系列博文内容链接如下: 【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 【C++】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C++】做一个飞机

    2024年02月12日
    浏览(27)
  • 【C++】做一个飞机空战小游戏(十一)——游戏过关、通关、结束的设置

     [导读]本系列博文内容链接如下: 【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 【C++】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C++】做一个飞

    2024年02月12日
    浏览(26)
  • 【C++】做一个飞机空战小游戏(四)——给游戏添加背景音乐(多线程技巧应用)

      [导读]本系列博文内容链接如下: 【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 【C++】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C++】做一个飞

    2024年02月14日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包