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
程序员奇葩面试名场面!遇到了赶紧run!
下一篇 2023-05-12 02:34:26

相关推荐

  • 北京海龙大厦·优客工场多元化办工场建立 打造创新创业跷班

       中关村曾是叱咤风云的电子一条街,十多年前以海龙大厦为代表的电子卖场业态兴起,推动了这片区域的发展。随着各行各业的兴起,曾经的e世界、鼎好、海龙合称为“电子商贸金三角”也成为了过去式。如今,北京海龙大厦·优客工场的成立,为这片区域的发展带来新的生机。   优客工场联合办公促海龙新生   优客工场进入海龙的时候,是2015年。与那时电子城萧条落寞…

    创业分享 2023-05-12
  • 【中国梦·践行者】王磊:我们要走的是从1到100的创业之路

    王磊 可折叠的彩色显示屏 大洋网讯 重不足1克、厚仅0.01毫米的一张“塑料膜”,竟可以在弯曲和折叠状态下播放视频,真是让人啧啧称奇。这一产品的背后,凝聚了高校科研团队为打破国外技术垄断付出的多年心血,也包含了一项自主核心技术从实验室走向市场的许多故事。 2009年,华南理工大学发光材料与器件国家重点实验室研究员王磊博士毕业,他领着10多位师弟师妹,带着导师…

    创业分享 2023-05-18
  • 【砥砺奋进的五年】心无旁骛的干事氛围 让台湾创客的创业之路越走越有信心

    原标题:心无旁骛的干事氛围,让台湾创客的创业之路越走越有信心 “在上海,我与大陆伙伴一起创业”   人物档案   高湘凯 来自台湾地区的材料工程师,正在上海创业   我对未来越来越有信心,这里的干事氛围,让你愿意发挥一技之长,心无旁骛地投入其中   我叫高湘凯,来自台湾地区,是个材料工程师。23岁那年,我进入一家封装公司从事研发工作,每天在实验室或生产线上忙…

    创业分享 2023-05-21
  • 创业型公司受青睐

      在就业景气度最差的十个行业中,航空/航天研究与制造、跨领域经营、能源/矿产/采掘/冶炼等行业针对应届生的就业景气度较差,且十个行业的景气度普遍低于去年,仅办公用品及设备行业景气度有小幅上升。   创业公司一直被认为辛苦且工作压力大,但调研结果显示,45.24%的西安应届毕业生表示会接受创业公司的offer,43.28%的高校毕业生持观望态度,并表示要看创…

    2023-05-13
  • 南开:强力推进创新创业

    内容提要:在南开区、西青区、津南区、宁河区召开的两会上,各区按照五大发展理念,瞄准高端用好资源,拿出了2017年发展的新举措。 如不能正常浏览请选用IE浏览器   天津北方网讯:在南开区、西青区、津南区、宁河区召开的两会上,各区按照五大发展理念,瞄准高端用好资源,拿出了2017年发展的新举措(北方网编辑李彤)…… (责任编辑:admin) 淄博特色食品产业观…

    创业分享 2023-05-26

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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