#PART

pygame-KidsCanCode系列jumpy-part17-mask-collide碰撞检测

这节我们研究下pygame的几种碰撞检测模式:如上图,左侧是默认的检测模式:基于矩形的检测(这也是性能最好的模式),右侧是基于圆形的检测(性能略差于矩形检测)。矩形检测法虽然性能好,但是缺点也很明显:检测不准确,上图中"飞机与目标"从视觉上看,根本没碰到。 为了改进,pygame给这二种模式,新增了xxx_r...

pygame-KidsCanCode系列jumpy-part16-enemy敌人

接上回继续,这次我们要给游戏加点难度,增加几个随机出现的敌人,玩家碰到敌人后GameOver。最终效果如下,头上顶个"电风扇"的家伙,就是敌人。一、先定义敌人类1#敌人类2classMob(pg.sprite.Sprite):3def__init__(self,game):4pg.sprite.Sprite.__ini...

pygame-KidsCanCode系列jumpy-part15-PowerUp加速器

这一节我们给游戏增加点额外的奖励,大多数游戏中都会有金币、装备啥的来激励玩家,在jumpy这个游戏中,我们也可以增加类似的道具:加速器。效果图如下:档板上会随机出现一些加速器(powerup),小兔子碰到它后,会获取额外的跳跃速度,跳得更高,得分自然也更高。实现原理如下:首先得有一个PowerUp类:1#PowerUp...

pygame-KidsCanCode系列jumpy-part14-背景音乐及音效

没有音乐和音效的游戏是没有灵魂的,这回讲解如何处理背景音乐及跳跃音效。加载music及sound的方法,之前已经写过,见:pygame笔记-8背景音乐&子弹音效 。先介绍一个很棒的生成各种音效的网站:https://www.bfxr.net/,该网站提供了一个音效生成器,界面如下:利用该工具,可以生成...

pygame-KidsCanCode系列jumpy-part13-改进跳跃

这节研究下跳跃如何做得更自然,先看看之前的跳跃有什么问题,我们把settings.py里的初始化参数调整下:1#startingplatform2#PLATFORM_LIST=[(5,HEIGHT-35),3#(WIDTH/2-50,HEIGHT*0.75),4#(WIDTH*0.12,HEIGHT*0.5),5#(W...

pygame-KidsCanCode系列jumpy-part12-platform图片

目前为止,Player的站立、行走、跳跃都是动画了,只有跳板(即:Platform类)还是难看的矩形,这节我们把Platform也换成图片:原来的Platform类长这个样子:1classPlatform(pg.sprite.Sprite):2def__init__(self,x,y,w,h):3pg.sprite.S...

pygame-KidsCanCode系列jumpy-part11-角色动画(下)

接上节继续,上节并没有处理向左走、向右走的动画效果,这节补上,看似很简单,但是有一些细节还是要注意:defjump(self):hits=pg.sprite.spritecollide(self,self.game.platforms,False)ifhits:self.vel.y=-PLAYER_JUMP#水平方向未...

pygame-KidsCanCode系列jumpy-part10-角色动画(上)

上一节学习如何利用spritesheet加载图片,但是player仍然是一张静态的图片,比较枯燥,我们要让它动起来!Player类,先把各种状态的图片加载起来:1#加载各种状态的图片序列2defload_images(self):3#站立状态的图片4self.standing_frames=[self.game.spr...

pygame-KidsCanCode系列jumpy-part9-使用spritesheet

做过前端的兄弟应该都知道csssprite(也称css精灵),这是一种常用的减少http请求次数的优化手段。把很多小图拼成一张大图,只加载1次,然后用css定位到不区的区域,从而展示不同的图片。游戏中也是类似的道理,如下图:每一个小图片,都有自己的x,y,width,height信息,通常会放在一个xml中,类似:1&...

pygame-KidsCanCode系列jumpy-part8-记录历史最高分

通常在多玩家的游戏中,每个玩家都会有自己的得分,最高分数会成为该游戏的最佳记录。这一篇,学习下如何记录最高得分:(为了简化代码,本文采用文件方式,仅记录本机得分,明白原理后,可以将得分保存在云端或数据库中,就可能支持多玩家了)。首先要在settings.py中新建一个常量:HIGH_SCORE_FILE="../dat...

pygame-KidsCanCode系列jumpy-part7-游戏启动/结束画面

通常一个游戏启动(start)或结束(gameover)时,都会显示一个画面,来引导用户。这节,我们学习如何处理这块逻辑。其实之前,我们已经预留了2个函数,只要把它实现即可:defshow_start_screen(self):self.screen.fill(BG_COLOR)self.draw_text(TITLE...

pygame-KidsCanCode系列jumpy-part6-主角挂掉重新开始

游戏的虚拟世界中,最让人happy的一个因素就是主角挂了,而且重来,只要restart就行了,不象现实中人的生命只有1次。回顾上节的效果,如果方块向下落时,挡板没接住,整个游戏就跪了:如果我们希望方块挂了之后,可以重新来过,可以这样做,修改Game类的update方法:defupdate(self):self.all_...

pygame-KidsCanCode系列jumpy-part5-屏幕滚动

接上回继续,方块不断向上跳动的过程中,从视觉上看,整个背景屏幕应该不断向下滚动,而且上方要不断出现新档板(否则就没办法继续向上跳了),这节我们将来实现这种效果,感觉好象很复杂,但实现起来其实很简单,只要对main.py略做调整:Game类的update方法改成下面这样defupdate(self):self.all_s...

pygame-KidsCanCode系列jumpy-part4-弹跳

终于要到弹跳环节了,向上弹跳其实很简单,按下空格触发时,只要把y轴速度给一个向上的速度即可。Player类,新加一个jump()方法:defjump(self):self.vel.y=-25调用该方法,会使方块具有向上25px的速度,然后由于重力依然在起作用,所以二者结合,就会形成向上弹跳的效果。然后在main.py中...

pygame-KidsCanCode系列jumpy-part3-重力及碰撞检测

这个游戏叫jumpy,大致玩法就是模拟超级玛丽一样,可以不停在各个档板上跳动,同时受到重力的作用,会向下掉,如果落下时,没有站在档板上,就挂了。这节,我们加入重力因素,继续改造sprites.pyfrompart_03.settingsimport*importpygameaspgvec=pg.math.Vector2...
首页上一页...4041424344下一页尾页