当前位置:   article > 正文

Python制作代码雨_python代码雨

python代码雨

我一个朋友在某音看到了这玩意儿。它非得让我也搞一个。

反正也无聊就简单写了一个

简单设计:

1.黑色背景,绿色字体,内容为随机符号-----pygame和random

2.下落,显示,刷新

直接上代码:
 

  1. '''
  2. python 3.9
  3. pycharm.pro.2021.3
  4. '''
  5. import random
  6. import pygame
  7. # 初始化参数设计
  8. win_width = 1000
  9. win_height = 800
  10. font_px = 15
  11. # 创建窗口及文本设计
  12. pygame.init()
  13. winsur = pygame.display.set_mode((win_width, win_height))
  14. font = pygame.font.SysFont('', 23)
  15. bg_suface = pygame.Surface((win_width, win_height), flags=pygame.SRCALPHA)
  16. pygame.Surface.convert(bg_suface)
  17. bg_suface.fill(pygame.Color(0, 0, 0, 28))
  18. winsur.fill((0, 0, 0))
  19. # 文本内容
  20. letter = '1234567890!@#$%^&*qwertyuiopasdfghjklzxcvbnm'
  21. texts = [font.render(letter[i], True, (0, 255, 0)) for i in range(44)]
  22. # 显示设计
  23. column = int(win_width / font_px)
  24. drops = [0 for i in range(column)]
  25. while True:
  26. for event in pygame.event.get():
  27. if event.type == pygame.QUIT:
  28. exit()
  29. elif event.type == pygame.KEYDOWN:
  30. change = pygame.key.get_pressed()
  31. if change[32]:
  32. exit()
  33. # 延时30
  34. pygame.time.delay(30)
  35. winsur.blit(bg_suface, (0, 0))
  36. for i in range(len(drops)):
  37. text = random.choice(texts)
  38. #
  39. winsur.blit(text, (i * font_px, drops[i] * font_px))
  40. drops[i] += 1
  41. #
  42. if drops[i] * 10 > win_height or random.random() > 0.95:
  43. drops[i] = 0
  44. #
  45. pygame.display.flip()

效果图:

 代码中使用了一些pygame里面的模块,大家可以自学( http://www.pygame.org )

这里给大家列出来了pygame里的一些模块以及一些方法

  1. pygame.cdrom 访问光驱
  2. pygame.cursors 加载光标
  3. pygame.display 访问显示设备
  4. pygame.draw 绘制形状、线和点
  5. pygame.event 管理事件
  6. pygame.font 使用字体
  7. pygame.image 加载和存储图片
  8. pygame.joystick 使用游戏手柄或者 类似的东西
  9. pygame.key 读取键盘按键
  10. pygame.mixer 声音
  11. pygame.mouse 鼠标
  12. pygame.movie 播放视频
  13. pygame.music 播放音频
  14. pygame.overlay 访问高级视频叠加
  15. pygame.rect 管理矩形区域
  16. pygame.sndarray 操作声音数据
  17. pygame.sprite 操作移动图像
  18. pygame.surface 管理图像和屏幕
  19. pygame.surfarray 管理点阵图像数据
  20. pygame.time 管理时间和帧信息
  21. pygame.transform 缩放和移动图像

绘制图形

Pygame的坐标原点(0,0)点位于左上角,X轴自左向右,Y轴自上向下,单位为像素。

这里介绍一下常用的方法:

pygame.draw.line(Surface, color, start_pos, end_pos, width)此方法用于绘制一条线段

pygame.draw.aaline(Surface, color, start_pos, end_pos, blend)此方法用于绘制一条抗锯齿的线

pygame.draw.lines(Surface, color, closed, pointlist, width)此方法用于绘制一条折线

pygame.draw.rect(Surface, color, Rect)此方法用于绘制一个矩形

pygame.draw.rect(Surface, color, Rect, width)此方法用于绘制一个矩形框

pygame.draw.ellipse(Surface, color, Rect)此方法用于绘制一个椭圆

pygame.draw.ellipse(Surface, color, Rect, width)此方法用于绘制一个椭圆框

pygame.draw.polygon(Surface, color, pointlist, width)此方法用于绘制一个多边形

pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width)此方法用于绘制一条弧线

pygame.draw.circle(Surface, color, Rect, radius)此方法用于绘制一个圆

Pygame实现动画主要用到的方法:

pygame.image.load(filename)加载一张图片

pygame.Surface.blit(source, dest, area=None, special_flags = 0)将图片绘制到屏幕相应坐标上(后面两个参数默认,可以不传)

pygame.time.Clock()获得pygame的时钟

pygame.time.Clock.tick(FPS)设置pygame时钟的间隔时间

绘制文字

如果你想绘制文字到屏幕上,Pygame提供了很方便的方法使用.ttf字体文件,这样我们就能很轻易的将文字绘制在屏幕上了。

这里我使用了ARBERKLEY.ttf作为字体,字体文件的获取请参考1.5代码获取。

主要用到的方法:

pygame.font.Font(filename, size)

filename:字体文件的文件名;

size:字体的高height,单位为像素;

pygame.font.Font.render(text, antialias, color, background=None)

text:要显示的文字;

antialias: 是否抗锯齿;

color:字体颜色;

background:背景颜色(可选参数);

.get_rect()

获得一个对象的rect,以便于设置其坐标位置

播放音频

在Pygame里播放音频有两个方法,一个用来播放特效声音,一个用来播放背景音乐:

pygame.mixer.Sound(filename)

该方法返回一个Sound对象,调用它的.play( )方法,即可播放较短的音频文件(比如玩家受到伤害、收集到金币等);

pygame.mixer.music.load(filename)

该方法用来加载背景音乐,之后调用pygame.mixer.music.play( )方法就可以播放背景音乐(Pygame只允许加载一个背景音乐在同一个时刻)

 事件

Pygame里常用的事件如下表:

事件产生途径参数
QUIT用户按下关闭按钮none
ACTIVEEVENTPygame被激活或者隐藏gain, state
KEYDOWN键盘被按下unicode, key, mod
KEYUP键盘被放开key, mod
MOUSEMOTION鼠标移动pos, rel, buttons
MOUSEBUTTONDOWN鼠标按下pos, button
MOUSEBUTTONUP鼠标放开pos, button
VIDEORESIZEPygame窗口缩放size, w, h

更多的可以参考官方文档:http://www.pygame.org/docs/http://www.pygame.org/docs/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/85030
推荐阅读
相关标签
  

闽ICP备14008679号