如何基于Python pygame实现动画跑马灯


Posted in Python onNovember 18, 2020

前言

大家都看过彩带飘落吧?这个在比较喜庆的场合是很常见的:

如何基于Python pygame实现动画跑马灯

还有“跑马灯”效果,听起来很陌生,其实很常见,下面的就是:

如何基于Python pygame实现动画跑马灯

好了,相信大家都有了初步的认识。当然,如果有做前端或者搞设计的同学,上面的效果应该不难实现,那如果想通过Python呢?有没有包可以调用呢?

答案是有的——pygame

这个包适合用来开发游戏,今天就不打算给大家详细介绍了,还是想给大伙儿放松放松,以后有机会再多写写它。

不多说,直接甩出代码:

import pygame
from random import randint, choice

screen_length = 700
screen_width = 500
# 模拟彩带飘落的类,掉落的词作为彩带
class Word_drop(pygame.sprite.Sprite):

  # 设置属性:包括字体、下落速度、彩带来源、彩带框的属性
  def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.font = pygame.font.SysFont(name='幼圆', size=10, bold=True, italic=True)
    self.speed = randint(15, 30)
    self.word = self.getWord()
    self.image = self.font.render(self.word, True,
                   (randint(0, 255), randint(0, 255), randint(0, 255)))
    self.image = pygame.transform.rotate(self.image, randint(87, 93))
    self.rect = self.image.get_rect()
    self.rect.topleft = (randint(0, screen_length), -20)

  # 获取掉落的词
  def getWord(self):
    length = randint(1, 8)
    word = ''
    for i in range(length):
      word += choice('qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM')
    return word

  # 设置彩带更新的条件
  def update(self, *args):
    self.rect = self.rect.move(0, self.speed)
    if self.rect.top > screen_length:
      self.kill()

# 实现"跑马灯"效果的函数
def word_translate(jx, ztw1, ztw2, screen_length, text):
  max_ztw = max(ztw1, ztw2)
  jx.x -= 5
  if jx.x < 0 - max_ztw:
    jx.x = (screen_length + 10)
  screen.blit(text, [jx.x, jx.y])

if __name__ == '__main__':

  # 初始化工作
  pygame.init()
  pygame.font.init()

  # 渲染字体,两行字
  a = pygame.font.SysFont(name='幼圆', size=50, bold=True, italic=True)

  word1 = "  中国"
  text1 = a.render(word1, True, (255, 0, 0), (0, 0, 0))

  word2 = "我超级爱你"
  text2 = a.render(word2, True, (255, 0, 0), (0, 0, 0))

  # "跑马场"字体框的属性
  _, _, ztw1, zth1 = text1.get_rect()
  jx1 = pygame.Rect(screen_length, (screen_width / 2 - zth1), ztw1, zth1)

  _, _, ztw2, zth2 = text2.get_rect()
  jx2 = pygame.Rect(screen_length, (screen_width / 2), ztw2, zth2)

  # 其他相关设置
  screen = pygame.display.set_mode((screen_length, screen_width))
  clock = pygame.time.Clock()
  wordGroup = pygame.sprite.Group()

  while True:

    clock.tick(30)
    screen.fill((0, 0, 0))

    # 设置退出的条件
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
        pygame.quit()
        exit(0)

    # 彩带飘落
    word_object = Word_drop()
    wordGroup.add(word_object)
    wordGroup.update()
    wordGroup.draw(screen)

    # "跑马场"
    word_translate(jx1, ztw1, ztw2, screen_length, text1)
    word_translate(jx2, ztw1, ztw2, screen_length, text2)

    pygame.display.update()

好了,来看看效果:

如何基于Python pygame实现动画跑马灯

还不错吧,有没有感觉好玩呢?

当然,如果需要,代码直接拿去用,根据自己的想法去改就行!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python线程锁(thread)学习示例
Dec 04 Python
详解Golang 与python中的字符串反转
Jul 21 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
python入门教程 python入门神图一张
Mar 05 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
详解Django rest_framework实现RESTful API
May 24 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 #Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 #Python
Python urllib3软件包的使用说明
Nov 18 #Python
Python从文件中读取数据的方法步骤
Nov 18 #Python
详解Python中如何将数据存储为json格式的文件
Nov 18 #Python
python3中calendar返回某一时间点实例讲解
Nov 18 #Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 #Python
You might like
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
arguments对象
2006/11/20 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
Python编程之string相关操作实例详解
2017/07/22 Python
python绘制双柱形图代码实例
2017/12/14 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
Python如何读写字节数据
2020/08/05 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
干部培训自我鉴定
2014/01/22 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
学校联谊活动方案
2014/02/15 职场文书
党员党性分析材料
2014/02/17 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
财务工作检讨书
2014/10/29 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书