#od

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...

pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力

上一节,我们整理了一个游戏开发的新框架(即:Game类),本节将运用这个框架,实现基本的加速度及摩托力效果。先定义游戏的精灵(下面代码命名为sprites.py)frompart_02.settingsimport*importpygameaspg#Vector可以看成(x,y)的封装vec=pg.math.Vecto...

pygame-KidsCanCode系列jumpy-part1-如何组织复杂游戏的代码

武侠小说中,高手过招讲究起手式,所谓"行家一伸手,便知有没有"。程序开发、软件架构中,也是类似的道理,当业务逻辑越来越复杂,代码越来越多时,一个好的项目结构,从目录命名、模块分层这些,从一开始就决定了后面的代码是否易于维护。所以这节主要讨论下,游戏中如何组织自己的代码,回忆上节学到的最小开发框架(即:模板),一个游戏大...

pygame-KidsCanCode系列jumpy-part0-使用sprite

油管(youtube)上有一个号称"史上最好的pygame教程"(传送门:https://www.youtube.com/watch?v=VO8rTszcW4s&list=PLsk-HSGFjnaH5yghzu7PcOzm9NhsW0Urw),作者思路很清晰,循序渐进,很适合大人学会了,然后指导孩子入门。作者还...

java学习:JMM(java memory model)、volatile、synchronized、AtomicXXX理解

一、JMM(javamemorymodel)内存模型从网上淘来二张图:上面这张图说的是,在多核CPU的系统中,每个核CPU自带高速缓存,然后计算机主板上也有一块内存-称为主内(即:内存条)。工作时,CPU的高速缓存中的数据通过一系列手段来保证与主内的数据一致(CacheCoherence),更直白点,高速缓存要从主内中...

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z 的解决

jetty9嵌入式开发时,启动正常,但是页面一浏览就报错如下:java.lang.NoSuchMethodError:javax.servlet.http.HttpServletRequest.isAsyncStarted()Z原因:jetty9依赖的servlet-api是3.X版本,如果项目中还有其它第3方开源库隐...

mysql: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '= 的解决

昨天把mysql里所有table的varchar字段的字符集,批量换成了utf8mb4/utf8mb4_unicode_ci,以便能保存一些emoji火星文,结果有一个sql语句执行时,报错如下:Illegalmixofcollations(utf8_unicode_ci,IMPLICIT)and(utf8_gener...

mysql的sql_mode模式

在oracle或sqlserver中,如果某个表的字段设置成notnull,insert或update时不给这个字段赋值,比如下面这样:表t_test(id,name)中id,name都不允许为空,insertintot_test(name)values('xxx')必然报错,这是天经地义的事情,但是在mysql中这是...
代码星球 ·2020-04-06
首页上一页...287288289290291...下一页尾页