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
下一篇 2023-05-12

相关推荐

  • 鼓励社会力量参与创新创业 好政策为长春市国家级双创基地建设提速

      全年力争双创市场主体突破85万户,技术合同交易额增长20%以上,各类重点创新创业公共服务平台达到250个……日前从长春市工业和信息化局了解到,今年长春市进一步加快实施创新驱动发展战略,提高双创主体活力,促进长春国家级创新创业基地加快发展。   为此,长春市将推进体制机制创新,深化行政审批改革和商事制度改革,全面推进企业简易注销登记改革,进一步提升企业开办…

    创业分享 2023-05-13
    6200
  • 经济学家厉以宁谈创业创新

      他从创新的发生和经济生活中的关系,谈到了创新在市场和产品生产中的发生方式和行为,通过“小岗村为什么没富?”、“给和尚卖梳子背后的创新”,“抗战时的效率”等故事,深入浅出地揭示了其背后的经济学道理。   自主创新VS。技术创新   第一个推销员他不行,因为他只知道死守木头梳子的第一功能,梳头。但第二个推销员把功能扩大了,不仅能梳头,而且能美容养颜等等。第三…

    创业分享 2023-05-28
    6400
  • 从设计师到创业者,中间的差别是什么?

    从设计师到创业者,这中间的差别是什么,我需要做什么准备?

    2017-04-17
    1.9K02
  • 天津港保税区出台意见营造企业家创业发展良好环境

      此外,《意见》还提出完善新型企业家培养机制,建设学习型企业家队伍;支持企业家开展科技创新,鼓励组建团队研究开发前沿技术产品;完善企业家激励机制,每年评选20名优秀企业家,每人奖励20万元。对入选天津市践行优秀企业家精神先进典型的,在市级奖励基础上,保税区再匹配奖励100万元。   《意见》要求,完善企业家安居落户政策,营造安心干事创业氛围。建设高层次人才…

    创业分享 2023-05-19
    8500
  • 从绝味食品发展过程,看值得创业者参考的成功经验

      【天极网IT新闻频道】如今,很多人都愿意创业,成为品牌主,从而开启人生全新的事业道路。然而在创业过程中却仍然存在一些值得思考研究的问题。例如,如何将品牌做大做强?对此,我们可以通过休闲卤制食品头部品牌绝味食品的三个特点,来解读新品牌的创立和生存之道。   首先,休闲卤制食品市场在近几年从百亿规模飙升到千亿规模,整个市场都处于发展风口之中,这为绝味食品带来…

    创业分享 2023-05-10
    6800

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信