Использование побитового оператора & Python для проверки флага на поверхности pygame не возвращает ожидаемый флагPython

Программы на Python
Ответить
Anonymous
 Использование побитового оператора & Python для проверки флага на поверхности pygame не возвращает ожидаемый флаг

Сообщение Anonymous »

При написании игры на pygame я пытался использовать бинарный оператор XOR (^) для «переключения» любого флага, который я передал функции. Однако я продолжал сталкиваться с ошибками переполнения (и предупреждением: повторное создание окна в ошибках toggle_fullscreen action()).
Чтобы отладить это, я попытался использовать оператор &, чтобы проверить, правильно ли обнаруживаются флаги, и сравнить его с постоянным значением, предоставленным pygame.

Код: Выделить всё

print(pygame.display.get_surface().get_flags() & exampleflag, exampleflag)
Хотя это работало при проверке pygame.NOFRAME (результат был 0 32, когда не в режиме без полей, и 32 32, когда в режиме без полей.

Но при попытке проверить pygame.SCALED, который всегда включен в моей игре, он всегда выдавал 0 512, даже если pygame.SCALED присутствовал, и я был ожидал 512 512.

Также при проверке pygame.FULLSCREEN (я переключал его с помощью pygame.display.toggle_fullscreen(), если это каким-то образом помогает) результат был 0 -2147483648 (ожидал 0 0, поскольку окно не было полноэкранным), что явно неверно и, возможно, поэтому я получал ошибки переполнения.
Я не совсем понимаю, как работают флаги pygame, помимо того, что с ними должны делать основные бинарные операторы, поскольку это не очень хорошо документировано (тот факт, что вы можете проверять флаги с помощью &, был обнаружен мной в другом вопросе о переполнении стека). Может кто-нибудь объяснить, почему это происходит?

Подробнее здесь: https://stackoverflow.com/questions/792 ... doesnt-ret
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»