#UM

【转】编写高质量代码改善C#程序的157个建议——建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T>

 建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T>LINQ查询一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展;Queryabl...

【转】编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum

 建议110:用类来代替enum枚举(enum)用来表示一组固定的值。例如,为了表示星期信息,我们可以定义枚举Week:enumWeek{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}枚举最大的优点在于它的类型是值类型。相比较引用类型来说,它...

mysql虚拟列(Generated Columns)及JSON字段类型的使用

mysql5.7中有很多新的特性,但平时可能很少用到,这里列举2个实用的功能:虚拟列及json字段类型一、先创建一个测试表:droptableifexistst_people;CREATETABLEt_people(`id`INT(11)NOTNULLAUTO_INCREMENT,`name`varchar(50)NO...

pygame-KidsCanCode系列jumpy-part18-背景滚动

接上回继续,之前的游戏背景过于单调,今天加几朵白云的背景效果。要点:1.白云要有大有小,尽量模拟出远近层次的效果。2.兔子向上跳时,(背景)白云也要相应的滚动,但是为了视觉效果,速度要低于档板的速度(比如:1/2or1/3)。3.白云要放在最下层(即:Layer值最低),否则就会把其它物体挡住。 先定义白云:...

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...
首页上一页...513514515516517...下一页尾页