大多数游戏都涉及动态效果,如植物大战僵尸中子弹的发射效果、僵尸的移动效果等。实现动态效果的原理是文本或图片的更换、位置的改变以及屏幕的刷新。基础的动态效果分为以下3种。
(1)多次修改Surface对象绘制的位置并连续绘制刷新,实现移动效果。
(2)在同一位置绘制不同的Surface对象,实现动画效果。
(3)连续绘制不同Surface对象的同时,修改绘制的位置,实现移动的动画。
这里以数字推盘游戏中方块的移动为例讲解如何实现移动效果。
数字推盘游戏的方块由矩形和文本组成,其中文本使用font模块的Font()函数、render()方法以及Surface 类的blit()方法绘制,矩形使用pygame 中draw模块的 rect()函数绘制。因此实现数字方块移动需要经过以下作。
(1)绘制矩形方块。
(2)绘制数字。
(3)移动方块。
下面分别实现以上操作。
1.绘制矩形方块pygame 的子模块draw 中的rect()函数用于在Surface 对象上的指定位置绘制矩形,
该函数的声明如下:
rect (Surface, color, Rect, width=0) -> Rect
rect( )函数接收4个参数,其中参数Surface 接收一个Surface对象,参数color用于设置矩形颜色,参数Rect接收一个矩形对象,以设置矩形绘制的位置和区域,参数width用于设置外沿的厚度,默认为0。rect()函数被调用后会返回一个矩形对象。在窗体Surface对象WINSET的中心位置绘制分辨率为60像素×60像素的黄色矩形,具体代码如下:
BLOCKSIZE =60 #定义矩形边长 # 创建矩形 blockRect = pygame.Rect (0.5*(WINWIDTH-BLOCKSIZE), 0.5* (WINHEIGHT-BLOCKSIZE), BLOCKSIZE, BLOCKSIZE) pygame.draw.rect (WINSET, BTCOLOR, blockRect ) #绘制矩形
将此段代码添加到程序7-pg-test-py中,执行程序,程序执行结果如下图所示。
2.绘制数字方块上的数字应位于方块的中心,矩形对象的左上角坐标代表矩形的位置,目前方块已位于屏幕中心,假设数字的矩形对象为numRect,则其在屏幕中的x、y坐标分别如下。
(1)numRect.x=blockRect.x+0.5*(BLOCKSIZE-numRect.width)
(2) numRect.y =blockRect.y +0.5*(BLOCKSIZE-numRect.heigh)
假设方块中的数字为5,绘制数字,将其置于方块中心,具体代码如下:
# 写数字 numSurf = BASICFONTder('5', True, BTTEXTCOLOR, BTCOLOR) numRect = numSurf.get_rect() numRect.x = blockRect.x + 0.5 * (BLOCKSIZE - numRect.width) numRect.y = blockRect.y + 0.5 * (BLOCKSIZE - numRect.height)
由于数字位置的确定依赖于方块的位置,此段代码应位于方块代码之后。
3方块移动效果通过在不同但连续的位置绘制同一个Sruface对象实现。推盘中的方块由方块图像blockSurf和数字图像numSurf组成,因此要实现推盘方块的移动,需同步移动方块图像和数字图像。在for循环中实现blockSurf和numSurf的连续移动与绘制,具体代码如下:
... # 在背景的不同位置绘制方块,制造移动效果。方块向有移动BLACKSIZE+2 SIZE), BLOCKSIZE, BIOCKSIZE) pygane.draw.rect (WINSET, BTCOLOR, blockRect) # 写数字 numSurf - BASICFONTder('5', True, BTTEXTCOLOR, BTCOLOR) nunRect = nunSurf.get_rect() numRect.x blockRect.x + 0.5 * (BLOCKSI2E - numRect.width) numRect.y = blockRect.y + 0.5*(BIOCKSIZE - numRect.height) # 在背景的不同位置绘制方块,制造移动效果。方块向右移动BLOCKSIZE+2 for i in range(0, BLOCKSIZE, 2): FPSCLOCK.tick(EPS) # 绘制 Pygame.draw.rect(WINSET,BTCOLOR,blockRect) WINSET.blit(numSurf,numRect) pygame.display.update () # 修改方块和数字的横坐标 blockRect.x +=10 # 修改方块横坐标 numRect.x +e 10 # 修改数字横坐标 WINSET.blit(baseSurf,(0,0)) # 使用备份baseSurf覆盖WINSET pygame.quit() # 卸载所有模块if __name__ == '__main__': main()
保存更改并执行程序7_pg.test.py,程序运行之初与结束之前方块所在位置分别如图a和b所示。
由图下图可知,程序成功实现了方块的移动。
发现微信的隐藏玩法.微信隐藏彩蛋.快来艾特你的朋友试一试吧
1地区恶搞
2拍一拍特效 : 炸弹攻击/:bome
3群聊@特效: คิดถึง
4微信变小霸王游戏机: 1.6ttt
第一步:在“我”里面随便添加一个状态
第二步:在输入状态的地方选择添加表情
第三步:在搜索一个养鸡 或者你想养其他 养猪养狗之类的都可以
第四步:完成。你就可以在你的状态主页上看见有只小鸡在跑了
50个超实用微信小程序功能强大省内存
实用工具
01手机清尘:定期给你的手机耳机孔清灰
02酒店摄像头扫描:保护女性出行隐私,住店必备
03拉了吗: 资料查询附近厕所,在外拉屎不用愁
04车轮查违章违章查询:违章代缴,违章监控图查看
05亲戚关系称谓计算器 : 串亲戚必备的小程序,过年必备
06薄荷食物库: 食材营养元素表,减肥健身必备
07成分随手查:食品,化妆品成分扫一扫就知道
08喝酒神器:酒桌上的各种小游戏,各种好玩娱乐
09WIFI一键连:腾讯wifi管家出品,安全快速连接
10微信辟谣助手:搜索识别谣言,接收辟谣提醒
好玩有趣
01群里有侦探:推理类小程序,大量烧脑题目挑战
02数字推盘: 数字华容道,舒尔特方格,数独等小游戏
03小鸡词典: 收录各种风趣幽默,视角独特的网络词典
04手持弹幕: 让手机瞬间变成LED灯板
05斗图表情包制作: 快速的表情包制作工具
06试盒: 一款可以免费申请试用的宝藏小程序
07口红试色: 女生必备除了试色还有口红推荐
08丧燃日历: 每日毒鸡汤,又丧又燃地鼓励自己
09今天吃什么:点餐叫外卖选择困难症用这个
10神奇字体:各种字体特效,简单制作与众不同的朋i
工作类
01社保计算器: 提供全国各地区社保公积金明细查询和代缴
02草料二维码 : 方便快速进行二维码与链接转换
03 Readhub: 高质量的互联网新闻资讯
04迅捷PDF转换器: 支持各种转换功能
05 Fotor懒设计: 在线平面设计一站式平台
06投票帮: 一款免费的投票小程序
07网盘搜索引擎Pro: 查找搜索网盘资源工具
08标准证件照: 键生成好看的证件照
09以图识字: OCR图片文字识别工具
10专去水印:专门去除短视频水印并下载
学习类
01自律的我 : 适合学生党和工作党,目标完成和打卡
02有书共读: 在线读书每周共读一本书
03豆瓣评分: 不用下载App,提供电影评分,资料
04很丧的书 : 看淡点,在这里没有最丧只有更丧
05好奇心杂志: 最有想法最值得关注的各界动态
06腾讯翻译君 : 功能强大的翻译小程序
07天天练口语: 英语,日语,韩语08人生进度把人的一生比做电池,直观显示剩余电量
09印象笔记微清单: 快速创建工作学习计划等清单
10一周进步: 效率干货素材输出神器专栏
生活类
01下厨房: 美食烘焙一键查询
02小睡眠: 上班族早晚倒班必备
03车来了: 精准公交,通勤必备,告别等车焦虑
04快递100: 查快递,寄快递,日常必备
05传图识字: 超级强大的图片识别工具
06生活垃圾分类助手: 垃圾分类指南工具
07极简汇率: 汇率换算,生活必备
08鲨鱼记账: 专业的生活记账小程序
09微信助手 : 线下开需求的实用工具
10小病自助: 可以当做一个家庭医生使用
今天的分享就到这了 记得转发收藏关注哟