initial sprite animation support

This commit is contained in:
shiva404
2026-02-15 18:17:31 +03:00
parent ffc87c9591
commit ab58803373
30 changed files with 228 additions and 173 deletions

37
problems.txt Normal file
View File

@@ -0,0 +1,37 @@
pygame.FULLSCREEN create a fullscreen display
pygame.DOUBLEBUF only applicable with OPENGL
pygame.HWSURFACE (obsolete in pygame 2) hardware accelerated, only in FULLSCREEN
pygame.OPENGL create an OpenGL-renderable display
pygame.RESIZABLE display window should be sizeable
pygame.NOFRAME display window will have no border or controls
pygame.SCALED resolution depends on desktop size and scale graphics
pygame.SHOWN window is opened in visible mode (default)
pygame.HIDDEN window is opened in hidden mode
Проблема 2: Копирование Cell
В цикле создания клеток final_cell = Cell(cell_classes[cell["type"]](**cell["cell"]["terrain_obj"])) создаётся terrain_obj, а затем deepcopy(final_cell) копирует Cell. Но если terrain_obj содержит мутабельные атрибуты (например, mutable sprite или вложенные объекты из eb_terrain), все клетки поделят эти вложенные объекты, вызывая визуальные артефакты (одинаковые спрайты изменяются вместе).
Исправление с deepcopy:
Примените deepcopy к terrain_obj перед передачей в Cell:
python
terrain_kwargs = deepcopy(cell["cell"]["terrain_obj"])
final_cell = Cell(cell_classes[cell["type"]](**terrain_kwargs))
self.cells[line].append(final_cell) # Без лишнего deepcopy, если terrain_obj уже глубокая копия
4. Неправильный доступ к JSON
python
for cell in buff[str(line)]: # ❌ buff[line] может отсутствовать
6. Отсутствует проверка существования спрайта
python
scaled = scale_image(sprites[cell.terrain_obj.sprite], self.scale) # KeyError!
Проблемы производительности
7. Масштабирование каждый кадр
scale_image() вызывается 150×150=22,500 раз в секунду при 60 FPS. Кэшируйте масштабированные спрайты.