Python开发:数字推盘游戏的动态效果绘制

大多数游戏都涉及动态效果,如植物大战僵尸中子弹的发射效果、僵尸的移动效果等。实现动态效果的原理是文本或图片的更换、位置的改变以及屏幕的刷新。基础的动态效果分为以下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中,执行程序,程序执行结果如下图所示。

Python开发:数字推盘游戏的动态效果绘制
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 = BASICFONT.render(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 BASICFONT.render(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所示。

由图下图可知,程序成功实现了方块的移动。

Python开发:数字推盘游戏的动态效果绘制
Python开发:数字推盘游戏的动态效果绘制

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:Python开发:数字推盘游戏的动态效果绘制 https://www.dachanpin.com/a/cyfx/10917.html

(0)
上一篇 2023-05-12 02:33:23
下一篇 2023-05-12 02:34:26

相关推荐

  • 女局长辞职创办公司 种植农产品营收超5千万元

    谁曾想,两年前,该公司还处于濒临倒闭的边缘。该公司执行董事于祥敏向记者讲述了她一段曲折的创业经历。 获国家发明专利 为了使公司能够继续发展,她想方设法筹资,白天抓生产、跑销售,晚上四处借钱。资金借不到了,又向朋友借房产证,把自己仅有的房产和朋友的房产一起拿到银行作抵押,最终融资500多万元,这才解决了公司的财务困难。 女局长辞职创业 在于祥敏不断的奋斗与坚持…

    2023-05-22
    134
  • 社交电商创业新蓝海 苏宁全民营销这样玩

    责任编辑:许慧 移动互联网带来个体崛起的社交时代,每个人都应该自己选择未来,成为生活上的主角。如今,做到这一点并不算难。 苏宁推客依托苏宁深厚的零售管理基础,无需囤货、发货,由苏宁委托,只需简单分享将苏宁丰富的商品、良好的服务,产生成交,即可获得推广佣金。这种便捷灵活的就业模式为很多生完孩子在家待业的宝妈提供了一个创业空间。 社交电商创业新蓝海 苏宁全民营销…

    2023-05-11
    141
  • 扎西郎加:带着兴趣搞创业

    “大学毕业后必须要考公务员吗?” “我的答案是‘不’。” 扎西郎加,2018年毕业于四川攀枝花学院,当他还在大三的时候,了解到公务员考试开始进行改革,于是转变观念决定创业。大三暑假,扎西郎加通过上网查询和书本翻阅,寻找着既感兴趣又能胜任的创业路子。在一次同学聚会中,扎西郎加与斯多次仁聊起创业的事情,因为斯多次仁对拍摄很有兴趣,两人一拍即合决定开一家婚庆公司,…

    创业分享 2023-05-12
    99
  • 发改委:去年登记的大学生创业人数达61.5万人

    下一步要从五个方面推动创新创业向纵深发展,来更好地落实创新驱动发展战略。 宁吉喆:“双创”是当前的热门话题,去年以来全国掀起了“双创”的热潮。我去年到各地调查研究,看了许多“双创”的企业、“双创”的个体工商户、“双创”的个人,深受感动。 三是弥补短板,抓好具有国际影响力的科技创新中心、综合性国家科学中心、区域创新平台的建设,尤其是要重视企业创新创业平台建设,…

    创业分享 2023-05-25
    130
  • 杜国楹分享创业经验,强化小罐茶品牌理念弘扬国内茶市精髓

      年轻时,我极快地成功,极快地跌倒。在商业世界里,我算是「死」过一遍的人,破产了,转了一圈回来,我想明白了一件事儿,不好好做产品,都是胡扯。   小罐茶为何受人青睐,茶之所以是好茶不在于外在精装,更在于内在精制,小罐茶的成功离不开杜国楹的正确引导,小罐茶从源头开始质量把关,精心炒制,全程精细的人工监制,才可得一罐好茶。   ——小罐茶创始人  杜…

    2023-05-13
    105

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

工作时间:周一至周五,9:30-16:30,节假日休息