如何基于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 相关文章推荐
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python实现购物系统(示例讲解)
Sep 13 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
解决python 输出是省略号的问题
Apr 19 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
Python实现爬取并分析电商评论
Jun 19 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 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实现用户在线时间统计详解
2011/10/08 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
Python处理Excel文件实例代码
2017/06/20 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
Python 3 判断2个字典相同
2019/08/06 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
文明宿舍获奖感言
2014/02/07 职场文书
班级体育活动总结
2014/07/05 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
活着观后感
2015/06/03 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
计算机实训心得体会
2016/01/14 职场文书
教师听课学习心得体会
2016/01/15 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
Pytorch 如何实现常用正则化
2021/05/27 Python