如何基于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的id()函数解密过程
Dec 25 Python
zbar解码二维码和条形码示例
Feb 07 Python
pymongo实现多结果进行多列排序的方法
May 16 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
Python 音频生成器的实现示例
Dec 24 Python
parser.add_argument中的action使用
Apr 20 Python
Python多线程thread及模块使用实例
Apr 28 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 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加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
劣质的PHP代码简化
2010/02/08 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
js charAt的使用示例
2014/02/18 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中map()与zip()操作方法
2016/02/27 Python
win与linux系统中python requests 安装
2016/12/04 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
英文版网络工程师求职信
2013/10/28 职场文书
十佳教师事迹材料
2014/01/11 职场文书
妇产医师自荐信
2014/01/29 职场文书
优秀公益广告词大全
2014/03/19 职场文书
爱耳日活动总结
2014/04/30 职场文书
校园安全标语
2014/06/07 职场文书
2014年文员工作总结
2014/11/18 职场文书
单位收入证明范本
2015/06/18 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS