mirror of
https://github.com/EDeev/pixel_gamble.git
synced 2026-10-07 23:49:29 +03:00
- 10 волн, 5 видов врагов со своим поведением и босс в три фазы - меч, копьё и посох, 11 улучшений между волнами, опыт и уровни - меню, пауза, настройки, итоги партии и рекорд, русский и английский - мир 480×270 с масштабированием, интерфейс в 960×540, скорости от dt - асинхронный цикл: та же игра в браузере через pygbag - тесты без окна, автоигрок, CI, релизы exe/Linux, GitHub Pages - README на двух языках; исходная версия — релиз v1.0.0
24 lines
957 B
Python
24 lines
957 B
Python
"""Запись GIF с экрана игры (для README)."""
|
||
|
||
import pygame
|
||
|
||
|
||
class Recorder:
|
||
def __init__(self, path, every=3, scale=1, skip=0, limit=900):
|
||
self.path, self.every, self.scale, self.skip, self.limit = path, every, scale, skip, limit
|
||
self.frames = []
|
||
|
||
def capture(self, surface, frame):
|
||
if frame < self.skip or frame % self.every or len(self.frames) >= self.limit:
|
||
return
|
||
image = pygame.transform.scale_by(surface, self.scale)
|
||
self.frames.append(pygame.image.tobytes(image, "RGB"))
|
||
self.size = image.get_size()
|
||
|
||
def save(self):
|
||
from PIL import Image
|
||
|
||
images = [Image.frombytes("RGB", self.size, raw).quantize(colors=128, method=Image.Quantize.MEDIANCUT)
|
||
for raw in self.frames]
|
||
images[0].save(self.path, save_all=True, append_images=images[1:], duration=1000 * self.every // 60,
|
||
loop=0, optimize=True)
|