自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (3)
  • 收藏
  • 关注

原创 pygame飞机大战系列文章介绍

从开始学习python,到学习用pygame来写游戏,历时三个月,其中五月份基本荒废,原创写了53篇文章了,主要是用来记录下自己的学习经历。写飞机大战的代码,主要经历了四个阶段。大家想学pygame,这几个阶段还是必不可少。跳跃着学,会很累。第一阶段,简单的入门,几乎没有用到pygame的精华,也就是转载文章里的知识。但是这几篇文章用来入门是极好的,基本实现了游戏的框架搭建。但想实现复杂的...

2019-06-01 21:20:40 1514

原创 我爱的人居然关注了我

早上开车时,手机弹出来一条信息,某某某关注了你,我简直不敢相信,这个账号我已经废弃很久了,只是因为偶尔吹了一个牛,她居然为此申请了新账号,并关注了我。天知道呀,这个是技术论坛,技术宅的天堂,而她对技术完全不敢兴趣,单纯的是想看看我到底写了什么吧。...

2022-01-15 21:35:37 214 2

原创 pygame飞机大战用精灵组层编写敌机系列(四)B样条曲线的实现实例

结合前面的贝塞尔曲线的实现方式,在enemyplane.py文件里添加 def set_BSpline_path(self,points): self.path_type = 'BSpline' self.points = points data = np.array(points) tck,u = interpolate...

2019-06-01 20:31:25 412

原创 pygame飞机大战用精灵组层编写敌机系列(三)B样条曲线的实现方式介绍

用贝塞尔曲线,固然能实现各种运动轨迹,可因为曲线不是经过设定的点的,需要进行调试才知道最终的轨迹。看了很多曲线公式,貌似B样条曲线比较适合粗的曲线运动轨迹。但是B样条曲线计算公式更为复杂,就偷懒用了功能强大的几个库。NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组。它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验...

2019-06-01 19:20:09 473

原创 pygame飞机大战用精灵组层编写敌机系列(二)用贝塞尔曲线画设置一组飞机的运行轨迹

敌机也是机,又不是象棋里的兵和卒,他也会走八字,跳广场舞的,只要你想,没有什么轨迹是做不到的。贝塞尔曲线的基本公式上篇日志已经实现了,现在来利用到游戏里。新建一个飞机类enemyplane.py,为了比较,实现了两个模式,一个是基本的直接往下,一个是贝塞尔曲线。setting.py,bezier.py见前面的日志。from setting import *from bezier i...

2019-04-13 17:01:45 928

原创 pygame飞机大战用精灵组层编写敌机系列(一)敌机的运动轨迹,贝塞尔曲线方程及杨辉三角计算

飞机大战中,敌机的角色是必不可少的,其运动轨迹有很多种,简单点的,用初中、高中的几何知识,也能创建不少。例如:圆圈radius = 200for angle in range(0,361,10): a = angle*math.pi/180 pos_x = radius *math.sin(a) pos_y = radius *math.cos(a)稍微复杂...

2019-04-10 22:12:21 1631

原创 pygame飞机大战用精灵组层编写英雄系列(九)英雄系列终结篇(附全部资源及源代码)

英雄的故事讲完了。稍微整理了下,完成的功能如下英雄飞机的选择界面(四个英雄,其中一个动态)英雄飞机的移动,发射,持续移动,持续发射英雄机的升级(四种形态)英雄子弹的多种发射方式,四种子弹英雄僚机,僚机发子弹(四种僚机,四种子弹)飞机的定时加随机刷新(一种飞机)飞机随机爆物品(四种物品,四种功能)英雄的生命条显示英雄的生命值显示,能量条显示英雄的终极技能的...

2019-04-09 20:53:59 540

原创 pygame飞机大战用精灵组层编写英雄系列(八)英雄的终极技能

最近下载了全民飞机大战的素材库,里面有很多动态的图,又玩了下这个游戏,里面打飞机都有大绝技,觉得我们的英雄也得有个大绝技。利用手上资源,做了下。新建一个heroskill.py。和supply的实现原理差不多,把层改为heroskillgroup,用于碰撞检查代码如下:from setting import *from animation import *class Her...

2019-04-09 12:41:20 457

原创 pygame飞机大战用精灵组层编写英雄系列(七)英雄战队开组,左右僚机护法

题外话,下载了pygame1.9.5,发现自动提示功能没有了,函数的功能提示不全,显示 missingmodule,非常不方便,卸载,下载whl安装也不行。重新安装了1.9.4,又可以了。准备给英雄加个僚机,僚机自动发射子弹。听起来复杂,其实实现起来不难,lifebar的原理加上子弹发射就OK了。from setting import *from herobullet impo...

2019-04-06 16:11:41 324

原创 pygame飞机大战用精灵组层编写英雄系列(六)英雄不满足于五姑娘了

现在不是流行道具吗?为什么我没看到?也每个杂货店让买一下,只能从飞机身上扒。好在敌机也是与时俱进,随身携带的东西也多起来了。在supply.py的初始函数改为 def __init__(self): self._layer = 8 self.groups = allgroup, supplygroup pygame.sprite....

2019-04-06 11:43:16 289

原创 pygame飞机大战用精灵组层编写英雄系列(五)英雄手酸了,想滚键盘

小喽啰一刀一个,倒也轻松,可每次射击要按键,手酸得不行,五姑娘有意见了。来个插件,增加滚键盘模式吧。在heroplane.py的初始函数里,添加发射按键的储存列表,发射间隔,发射初始时间等。 #发射按键储存 self.fire_key_list = [] #设置导弹发射间隔 默认 1000毫秒 self.bullet_st...

2019-04-06 10:07:44 254

原创 pygame飞机大战用精灵组层编写英雄系列(四)英雄捡装备,白手起家

虽然英雄天资聪慧,已经有了发射子弹的多种方式,但这些技能被封印住了,需要捡装备,生技能来解锁。一个好好的射击游戏,被玩成了RPG模式。掉落来了。装备一般有两种方式,一个是随机出现的箱子,一个是打死怪后随机掉落。建立一个supply.py,新建一个Supply类,暂时提供子弹的升级卷轴。该类也是一个飞行的精灵,在屏幕中飞行,持续一定的时间,不捡掉就消失。from setti...

2019-04-06 09:32:08 373

原创 pygame飞机大战用精灵组层编写英雄系列(三)英雄牛刀小试,走出试练谷

看见敌机了,总不能去撞吧,英雄机当然得有子弹了。子弹的编写,前面的日志里已经写了很多了,这里稍微改一下,直接拿来用吧。bullet.py"""子弹的基类设置坐标,速度,角度,计算更新后的点的坐标"""from setting import *import mathclass Bullet(pygame.sprite.Sprite): def __init__(...

2019-04-05 22:44:05 301

原创 pygame飞机大战用精灵组层编写英雄系列(二)英雄遇到小兵了,有理也说不清

英雄走上了征途,就遇到了小兵,当然如果你看过前面的日志,直接出个BOSS也未尝不可。不过目前的英雄没有子弹,没有技能,除了躲闪,别无他招,因此,还是老老实实打怪升级吧。小兵当然是最杂碎的,所以写起来也简单。英雄飞机的飞行方式,见前面的日志。pygame之飞机大战按键操作解决方案比较https://blog.csdn.net/hailler1119/article/details...

2019-04-05 21:56:16 682

原创 pygame飞机大战用精灵组层编写英雄系列(一)英雄也问出处,界面的菜单选择

前言:BOSS系列写完了,还可以增加些BOSS子弹的发射方式,例如螺旋线,就是把射击的间隔缩短,每颗子弹按照时间间隔发射,每次的发射角度在前次上递增。看起来就是螺旋线发射了。我的代码发射的子弹和发射的方式有点乱,只是为了展示效果,真正要好玩,还得细化,把子弹和发射方式控制一下,有简单到难。代码有些地方冗余,可以简化,这些工作,等有空在慢慢调试。接下来写点英雄系列的日志吧。在BOSS...

2019-04-04 23:08:00 874

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(十四)BOSS问,到底谁是BOSS?(终结篇)

BOSS烟花看多了,有点腻了,看到英雄的飞机依然神采奕奕,很生气,问道“到底谁是BOSS,打了半天,怎么不少血,难道对面的才是BOSS?”,不行,你得少血给我看,还得被我打死”!这个要求,实现起来也很简单。Lifebar的加个判断,少于一定血量的时候,改个颜色。至于打死嘛,不就是一个self.kill()解决了。当然为了逼真,可以重新self.kil(),加入些 动画特性,音效之类...

2019-04-02 08:14:42 403 1

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(十三)BOSS想看烟火了

还是有点郁闷,写了那么久,居然没有一个点赞的。就当写日记了。接上篇……BOSS很纳闷,说好的,要看到打中的效果,可为什么子弹消失了,英雄却没反应。好好的打英雄的游戏,变成了英雄吃子弹的游戏了。不行,我要看到效果,要看到烟花四起。好吧,加点特性不就完了嘛。现成的类都有了,稍微改改,BOSS马上就可以过节,看漫天的烟火了。还没想好,是在HeroPlane类里实现呢,还是Ma...

2019-04-01 22:41:21 477

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(十二)BOSS的子弹是能打中了,可为什么看不到效果呢?

BOSS打子弹,导弹,跟踪弹全套技能都用上,忙活了半天,英雄好像毫发无损,啧啧啧,太气人了。好吧,该来碰撞检查了碰撞检查,一如既往的简单,三行代码而已。在main.py,也可以在 boss.py里,为了对得起 main的框架,还是在main.py里吧。 def collideEvent(self): boss_bullet_hero = pygame.spr...

2019-04-01 22:31:21 305

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(十一)BOSS觉得都5G时代了,自动导航不能少。

BOSS瞄准了半天发射,可都被英雄躲过去了,心里不爽,看到电商的广告,感觉5G是个好东西,先搞个自动导航吧。其实在上一篇中的millse类已经具有导航功能了,5G手机已经有了,差的是信号,那么现在加入信号。在 boss.py的fire_missle()函数的最前面,在发射导弹前,先判断是否已经有导弹了,如果有了,那么让重新定位就行 for hero in herogro...

2019-04-01 22:17:17 422

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(十)BOSS说,你别乱跑,我要瞄准了射

烧早饭了。。。有了层以后,好像一切都变简单了,main.py里很好要添加代码,各个类之间的数据传递,可以通过层来实现。感觉从家用机时代进入了大数据时代,方便的让人不敢相信。代码晚上再写。原理很简单,详见之前我的日志。https://blog.csdn.net/hailler1119/article/details/88753065改变几条语句就能用了,代码如下:fro...

2019-04-01 06:55:27 2226

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(九)BOSS寂寞了,想要对手

BOSS 说一个人的舞台,好寂寞,没有对手的日子,好孤独,神呀,赐予我一个 吧。我们的英雄该登场了。英雄的代码前面的日志里已经写过了,稍微改下,就能用了。加了生命条的显示。完整代码如下:""" 英雄机的类基本的调用函数set_pos(self,x,y) 设置飞机初始位置press_move(self) 持续移动"""from setting import *fro...

2019-03-31 21:10:41 285

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(八)BOSS要花样,更多花样(附代码资源下载链接)

BOSS能力强,想要更多花样,每次不再发射一颗子弹,要两颗,三颗,更多,更多可以先看下我之前的日子 子弹的花样年华https://blog.csdn.net/hailler1119/article/details/88607955发射方式的改变,只是发射点的不同,发射子弹的角度不同而已。例如同时发射两颗子弹的实现方式 interval = -self.r...

2019-03-31 20:09:40 354

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(七)BOSS想要射的好看些,要动起来,动起来

BOSS治好病后,感觉自己有强大起来,不满足发射这普通的子弹了,它要玩花样,它有的是钱,对吧。子弹的动态,在cocos2d的python版本里,可以用它的离子效果实现,但在pygame里,只能靠动态图片实现。不过,聊胜于无。一般这些动态图片会放在一张图里,需要自己切割出来。用到日志里的animation这个类。烧饭去了,先占个位置。。。。。。。既然要有特色,那就从bullet类里继...

2019-03-31 16:44:40 314

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(六)BOSS发子弹要对准,也要有频率

废话一下,用了sprite的group后,觉得不用的日子是地狱,用了sprite里的层(layer)后,目前都可以在天上飞了。前面日志了,添加了动态飞机,添加了血条,添加了子弹发射,居然不用在main.py添加一条代码。爽歪歪。好了,言归正传,BOSS发子弹发偏了,而且还是一连串的,还能治好吗?这篇日子就让它回归正常吧。第一件事,先把update()里的 self.HP -= 1删...

2019-03-31 16:31:31 576

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(五)BOSS想射,哦不,想发子弹了。

BOSS说,让我神经病一样飞来飞机去,还中了毒,存活不了几秒,在我离开舞台前,我想射,哦不,发几发子弹,表明我来过了。好吧。建立一个bullet.py,建立一个类。层号稍微高级一点,设置成9 吧,子弹归属层allgropu和bulletgroup。 一个用来显示,一个用来碰撞检查。(bulletgroup不是很好,子弹有herobullet 和 enemybullet,这里是为了基类用...

2019-03-31 15:59:01 507

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(四)BOSS要有生命

BOSS说,要有生命,于是便有了生命。为了显得自己的命长,boss经常干的傻事是亮底裤给别人看,来吧,凡人,看看我的血量。生命条的绘制可以用一条带宽度的线或者一个填满颜色的矩形,都行。先得把boss的生命值和满血时是生命值传入,可以计算剩余血量的比例,绘制动态血条。如果向让血条跟着BOSS一起舞动,还得传入BOSS的坐标。所以干脆传入一个对象 self吧。血条的层归属allgr...

2019-03-31 15:38:48 934

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(三)BOSS动起来了

接下来,让BOSS舞动起来。前面的日记里的代码,可以看到BOSS悬浮在空中,没有生机。这篇日记,就让BOSS动起来,至少能走两步。sprite 的 update函数,更新坐标是最好的。先让BOSS左右移动吧。只要添加一个速度,在加上一个边界判断就完成了。so easy!# 飞机速度self.x_speed = 2左右移动,只是改变了x 的坐标而已,一个变量就够了。u...

2019-03-31 13:30:45 552

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(二)BOSS登场了

BOSS的编写方式是最复杂的,编写完这个,其他的飞机都是小菜。先从BOSS的动态图形开始吧。大部分的飞机一张从头到尾一张图片解决,也不觉得怎么样,但是BOSS就是得有BOSS的样子,自拍也比别人多,BOSS的形态就得多样化。一般来说,BOSS的图片是好几种连续的动态图,后面的动态子弹也要用到,我们先干脆定义一个实现动态显示的类,一劳永逸。精灵类的实现可以看前面的随笔hthttp...

2019-03-31 13:10:34 566

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(二)动态背景图的加载

动态背景的实现原理还是和以前一样。前面的文章有介绍https://blog.csdn.net/hailler1119/article/details/88911974为了个整个项目配套搭建,还是一步一步介绍一下。因为很多地方要用到pygame.math.Vector2D 这个类,它提供两个数字,对应与坐标x,y刚好,能进行加减乘除运算,能进行角度计算等,十分实用,就直接在set...

2019-03-31 11:44:12 1180

原创 pygame飞机大战用精灵组(sprite)的层(layer)编写(一)BOSS的游戏基本框架的搭建

前言:BOSS系列的日志,建议在看了前面的入门知识后再看,没有一定的基础,这些看起来会很累。精灵组的层管理,确实太强大了。pygame提供了精灵sprite这个类来管理游戏的各个元素。例如子弹、飞机、爆炸效果(一连串动态图片)……等都可以是一个精灵,所有的精灵默认都在同一个层 0 层里。文档里说明:You can set the default layer through kwarg...

2019-03-31 08:30:52 2562

原创 pygame之layer的运用(二)界面的切换

层的数值不一样,显示的优先级就不一样,数字越大,越显示上层。所以,可以把背景层设置成 -1层,很少用的界面,设置成 -2,先隐藏起来。切换界面时,只要设置层的数值机可以了。 代码如下:import pygameimport pygameimport osimport randomvect = pygame.math.Vector2#define sprite groups...

2019-03-30 15:04:58 6662

原创 pygame之layer的运用(一)滚动背景的实现。

先看下前面的文字,里面介绍了滚动背景的实现。但没有用到精灵类。https://mp.csdn.net/postedit/88089379 前面的日记里,用精灵类实现了大部分的功能,除了滚动背景,大家可以下载下我编写的飞机大战的源代码,里面实现了滚动背景的效果。而且能自动切割图片,自动生成所需背景的列表。 因为在单个精灵类里,只能有一个image存在,滚动背景...

2019-03-30 14:42:12 4647

原创 pygame之飞机大战 sprite精灵类实现源代码和资源下载链接

用pygame的sprite 重写了飞机大战实现功能: 英雄机:按住按键连续发射 子弹:各种子弹,静态的,动态的,不同的子弹不同的伤害。发射方式:花样的发射方式,单、双、三、45度……,各种发射方式。敌机:不同的敌机,随机的发射方式,随机的子弹,不同的生命值。BOSS:敌机的属性,不同的运动方式,生命显示条,动态的飞机图片等级控制:按照英雄的得分,变换敌人强度 碰撞检查:...

2019-03-27 19:42:38 846

原创 pygame 飞机大战飞机、BOSS信息的显示

目标,显示英雄飞机的得分,生命值,BOSS机的动态生命条战斗界面中,信息数据是必不可少的,一般都包括得分值,当遇到BOSS时,还会显示BOSS的动态生命条,还有其他的飞机数量,炸弹数量等。不管生命信息,原理都是一样的。假设你有一个BOSS类,继承于pygame.sprite.Sprite,BOSS有HP值属性。还有英雄飞机,继承于pygame.sprite.Sprite,属性里有得分和...

2019-03-26 20:02:40 1065

原创 pygame 飞机大战碰撞检查的运用(四)精灵、精灵组之间的碰撞检查

目标:精灵和精灵组,精灵组和精灵组之间的碰撞检查。精灵和精灵组自己的碰撞检查用到一个简单的函数。spritecollide(sprite, group, dokill, collided=None)查看sprite.py源代码def spritecollide(sprite, group, dokill, collided=None): """find Sprites i...

2019-03-26 18:56:52 4429

原创 pygame 飞机大战动态画面的实现方式(三)精灵类,实现两种图片的加载方式

目标:实现单张、多种图片的加载,实现动态画面把方式(一)和方式(二)两种方式结合,简化了一些代码。在一个类里,实现了两种方式的加载load_image 单张load_images 加载多张代码如下:import pygamefrom pygame.locals import *class Blast(pygame.sprite.Sprite): def __i...

2019-03-23 23:37:24 2221

原创 pygame 飞机大战动态画面的实现方式(二)精灵类的实现方式

目标:用sprite 类来实现动态画面,例如爆炸效果,BOSS机的炫酷展示用了python游戏编程入门里的例题,改变了一下。load 函数加载一张图片,对指定高宽,列的图片切割存update 函数每次更新都计算,大于刷新间隔,就显示下一张图片,刷完图片又从第一张开始set_pos 函数可以设置图片在屏幕中显示的位置import pygamefrom pygame.local...

2019-03-23 22:40:26 655

原创 pygame 飞机大战动态画面的实现方式(一)

目标:实现飞机的动态,爆炸效果的动态普通方式的实现,图片的动态效果一般有两种一种是多张图片,文件名最后一个字为有序的数字,连在一起就产生动画效果。一种是一张图片,里面切割成多行,多列,这些分隔连着一起产生动画。无论哪种图片,都是装入一个list,设置间隔,循环播放。import pygameclass Bomb(object): # 初始化爆炸 def ...

2019-03-23 22:26:57 2928 1

原创 pygame 飞机大战子弹的编写(八)用精灵类实现导弹的跟踪系统,旋转图像

目标:1 使用精灵类 2 实现精灵图像的任意角度旋转 3 实现类似导弹的跟踪系统很多文章介绍了图像的转换功能,但都是基于 Surface.blit(image,rect())这个功能。一旦使用在精灵类里,图像漫天飞舞。偶然看到 pygame自带的chimp示例,里面打大猩猩的游戏,打中后大猩猩会旋转,巧的是,他是基于精灵的类。经过不停的删除测...

2019-03-22 23:11:42 1731 4

原创 pygame之飞机大战子弹360度角度的算法

当子弹拥有一定角度的时候,可以在子弹的set_speed()函数里,算出子弹x,y两个方向的速度,输入角度是degree换成弧度radian def set_speed(self, speed, angle=0): self.speed = speed self.angle = angle angle = math.pi * angle / ...

2019-03-20 07:22:18 1970

QT 5.4游戏编程

Game Programming Using QT. 2016版,PDF格式全彩 QT 5.4版本

2017-12-07

自定义model delegate 可以实现多页打印。

自定义model delegate。添加、删除、行列。多页打印。 打印的代码是网上摘录来的,添加到类,可以实现tableview分页打印功能。

2017-10-14

QT C++计算PI值,限制在10000位之内任意数,也可以自己调整更大的。

QT C++计算PI值,限制在10000位之内任意数,也可以自己调整更大的。 算法是用了 ZhangYacha blog:http://blog.csdn.net/u012027907 的。 原来是用C编写的,我改了个界面,转换了些数据,能在QT 5.9.1上运行。

2017-09-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除