Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/python-matrix-v1/main.py
5925 views
1
import pygame as pg
2
import random
3
4
class MatrixLetters:
5
def __init__(self, app):
6
self.app = app
7
self.letters = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ0123456789"
8
self.font_size = 10
9
self.font = pg.font.SysFont('arial', self.font_size, bold=True)
10
self.columns = app.WIDTH // self.font_size
11
self.drops = [1 for i in range(0, self.columns)]
12
13
def draw(self):
14
for i in range(0, len(self.drops)):
15
char = random.choice(self.letters)
16
char_render = self.font.render(char, False, (255,255,255))
17
pos = i * self.font_size, (self.drops[i] - 1) * self.font_size
18
self.app.surface.blit(char_render, pos)
19
if self.drops[i] * self.font_size > app.HEIGHT and random.uniform(0,1) > 0.975:
20
self.drops[i] = 0
21
self.drops[i] = self.drops[i] + 1
22
23
def run(self):
24
self.draw()
25
26
27
class MatrixApp:
28
def __init__(self): # инициализация приложения
29
self.RES = self.WIDTH, self.HEIGHT = 1000, 700
30
pg.init()
31
self.screen = pg.display.set_mode(self.RES) # отображаемый экран
32
self.surface = pg.Surface(self.RES, pg.SRCALPHA) # поверхность отрисовки
33
self.clock = pg.time.Clock() # для отслеживания времени
34
self.matrixLetters = MatrixLetters(self) # экземпляр класса наших букв
35
36
def draw(self): # закраска раб. поверхности и нанесем на гл. экран
37
self.surface.fill((0,0,0,10))
38
self.matrixLetters.run()
39
self.screen.blit(self.surface, (0,0))
40
41
def run(self): # главн. цикл программы
42
while True:
43
self.draw() # отрисовка экрана
44
[exit() for i in pg.event.get() if i.type == pg.QUIT]
45
pg.display.flip() # обновление поверхности
46
self.clock.tick(30) # установка кадров
47
48
if __name__ == '__main__':
49
app = MatrixApp()
50
app.run()
51
52