initial sprite animation support
This commit is contained in:
37
problems.txt
Normal file
37
problems.txt
Normal 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. Кэшируйте масштабированные спрайты.
|
||||
|
||||
Reference in New Issue
Block a user