Я предлагаю вам использовать .convert () для каждого загруженного изображения, чтобы удвоить FPS
blockTextures = {block: transform.scale(image.load('blocks/' + block + '.png').convert(), (128, 128)) for block in allBlocks}
breakTextures = [transform.scale(image.load('blocks/destroy_' + str(i) + '.png').convert(), (128, 128)) for i in range(10)]
https://www.pygame.org/docs/ref/surface.html#pygame .Surface.convert
Делайте меньше вычислений (физики) в каждом кадре. Запомните необходимый кадр для направления игрока
class Player: # This class controls and draws the player
def __init__(self):
self.pos = [0, 0]
self.velocity = [0, 0]
self.imageRight = transform.scale(image.load('steve.png'), (57, 230))
self.imageLeft = transform.flip(self.imageRight, True, False)
self.AImage = self.imageLeft
def draw(self, screen, size):
screen.blit(self.AImage, (size[0] / 2 - 28, size[1] / 2 - 115))
def physics(self, blocks): # The first part checks for input, the second part does the physics
pressed = key.get_pressed()
if pressed[K_LEFT]:
self.velocity[0] -= 0.1
self.AImage = self.imageLeft
if pressed[K_RIGHT]:
self.velocity[0] += 0.1
self.AImage = self.imageRight
И ускорение на 10% больше FPS
Может быть, FPS может быть лучше, если вы вычисляете World один раз для одного большого изображения в начале игры и рисуете его часть на экране один раз за кадр. Я не уверен в этом.