
大战外星人
文章平均质量分 88
python编程书的经典项目,附带魔改版本
筱羊冰冰
这个作者很懒,什么都没留下…
展开
-
py实现外星人入侵(二次开发)——6.保存游戏进度(json文件基本操作)
前言打脸了,忘记了这部分,还以为自己的外星人项目已经结束了。这部分主要是讲如何使用json文件保存我们的等级、得分、最高分等等的游戏数据。之前有一个写如何保存最高分的博客,这次我们进行了一些改进。逻辑:用户点击’q’或者关闭窗口时,我们将此时的stats数据(主要是得分、等级、剩余飞船数等)以及设置中的部分数据(飞船、外星人的移动速度,这些和等级有关)写入json文件。在点击play按钮后我们采用另外一个选项框来让用户进行选择,可以读取json文件的数据继续游戏,也可以重新开始。json文原创 2021-04-19 16:34:34 · 584 阅读 · 1 评论 -
py实现外星人入侵(二次开发)——5.大子弹的实现
回顾我们上次实现了将大子弹外星人原创 2021-04-09 22:32:59 · 372 阅读 · 0 评论 -
py实现外星人入侵(二次开发)——4.特殊外星人(高得分、大子弹和盾牌外星人)
前言之前的游戏都是正常的外星人,这次我们添加了不一样的种类:击中得分*10的高得分外星人击中获得一个大子弹的外星人,大子弹的宽度更大,并且击中敌人不会消失,不计入总子弹数获得了一个盾牌的外星人,能抵御一次子弹攻击当然了,为了提高可玩性,特殊外星人的左右移动速度是正常的1.5倍,下落距离是正常的2倍,并且另外特殊外星人出现的概率较低。尝试贴图——失败最开始是准备直接在外星人的图片上贴一个单词上去,因为实在是懒得自己做图片,还需要重新拆出来几个分组,但是在我往上贴图的过程中,却变成了这样:原创 2021-04-04 21:13:50 · 714 阅读 · 0 评论 -
py实现外星人入侵(二次开发)——3.随机生成外星人和方向
前言之前的外星人都是直接铺满屏幕的,移动方式和下落节奏都很单一,这次我们整一点花活,来一个随机生成外星人,这样还不够,外星人的移动方向我们也需要改改,不然多没意思。随机生成这里我们采用的是random包中的random函数,因为是生成外星人,所以修改的是game_function中的create_fleet函数,该函数的功能是计算空间中能生成的外星人行数和列数,双重循环调用外星人生成函数。#前面有一个from random import randomdef create_fleet(ai_sett原创 2021-03-29 10:16:03 · 972 阅读 · 4 评论 -
py实现外星人入侵(二次开发)——2.添加音乐
前言这次的魔爪放在音乐部分,主要使用的是pygame.mixer以及其中的music。我在背景音乐上添加了内容,并在发射子弹和子弹碰到外星人的时候播放音乐(噪音)。话不多说,我们就开始看吧。准备素材首先贴一个B站dl的百度网盘:链接,有一说一这容量还是很震撼的。这里就不推荐网站了,找了几个下载的时候都比较烦人,如果有好的可以在下面评论区推荐一下。另外我查了一下,貌似背景音乐需要使用ogg格式,剩下的wav格式就行(虽然推荐wvb,但我没找到),常见的比如mp3貌似pygame支持的不算很好。原创 2021-03-28 15:16:05 · 1789 阅读 · 0 评论 -
py实现外星人入侵(二次开发)——1.读入最高分(包含文件的基本操作和文件相对路径讲解)
解决文件问题的办法1.使用"a"模式2.导入os,try:with open(“test.txt”,mode=‘r’,encoding=‘utf-8’) as ff:print(ff.readlines())except FileNotFoundError:with open(“test.txt”, mode=‘w’, encoding=‘utf-8’) as ff:print(“文件创建成功!”)import osif os.path.exists(‘test.txt’):with原创 2021-03-27 08:05:36 · 762 阅读 · 1 评论 -
python实现外星人入侵——4.主函数部分
前言事件函数部分最后总结了一下,实际上我们能需要调用的函数也就这几个:check_events:检查键鼠事件update_bullets:子弹更新update_aliens:外星人更新update_screen:屏幕更新主函数首先上面的我们都需要,不需要写它干什么, 然后我们在主函数中添加一个飞船更新即可,至于记分牌和按钮则是在屏幕更新中实现。只不过我们需要注意一下,子弹、外星人和飞船更新都是在游戏状态为开始时才需要更新。 # 开始游戏的主循环 while True:原创 2021-03-26 08:30:52 · 315 阅读 · 2 评论 -
python实现外星人入侵——3.事件分析
前言讲解完了所有的类,接下来就应该讲一下事件了。在游戏的过程中,最重要的其实应当是在事件发生后进行反应并重新渲染。先贴代码:import sysimport pygamefrom bullet import bulletfrom alien import Alienfrom time import sleep#退出游戏+飞船移动def check_events(ai_settings,screen,stats,sb,play_button,ship,aliens,bullets):原创 2021-03-25 18:27:18 · 765 阅读 · 1 评论 -
python实现外星人入侵——2.类的介绍下
前言上一篇博客的类讲述了一半,这次我们补全它飞船类import pygamefrom pygame.sprite import Spriteclass ship(Sprite): def __init__(self,ai_settings,screen): """初始化飞船""" super(ship,self).__init__() self.screen = screen self.ai_settings = ai_set原创 2021-03-24 08:24:19 · 416 阅读 · 2 评论 -
python实现外星人入侵——1.类的介绍上
前言上一篇博客简单介绍了一下游戏的内容和文件构成,这次我们来看一下每一个类文件的内容。实现一个对象这部分介绍的是实现了一个对象的类,如外星人、飞船、子弹和计分板外星人对于外星人,我们是采用贴图的方式来实现的,所以我们是需要在屏幕上找到一个位置来贴图;外星人的移动轨迹是左右移动,每当碰到左右边界就相反方向移动,同时向飞船靠近,所以在类中我们添加了判断是否达到边界的方法,以及向右移动外星人的方法。self.image = pygame.image.load('image/alien.bmp')原创 2021-03-23 19:35:09 · 483 阅读 · 0 评论 -
python实现外星人入侵——0
前言本系列博客适合对py的基本语法已经有了简单的了解,希望通过一个实例来进行加深的朋友。这里我使用的是vscode进行编程,参考书为python programming(应该是叫这个名字吧)。虽然基本上是延用了书上的内容,但我后续的博客中会进行添加内容(在做了在做了,新建文件夹)。首先上传一下我的代码部分和游戏中的贴图,以及参考书。话不多说,先看一下游戏长什么样吧。游戏内容我们会使用py来构建这样一个界面,点击play开始游戏。左上角是生命数,算上当前的一次一共为三条命。中间为历史最高分原创 2021-03-21 10:41:39 · 441 阅读 · 0 评论