38 lines
2.1 KiB
Plaintext
38 lines
2.1 KiB
Plaintext
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. Кэшируйте масштабированные спрайты.
|
||
|