Использование move_ip в Pygame 1.9.4

Я пытаюсь переместить прямоугольник, созданный мной в дальнем правом верхнем углу, вниз и влево. Я закомментировал строку, вызывающую ошибку, а именно:

недопустимая позиция назначения для blit

# render box to display level
displayfont = pygame.font.SysFont(None, 30)
text = displayfont.render('level', True, (red), (white))
textrect = text.get_rect()
textrect.topright = screen.get_rect().topright
# textrect = textrect.move_ip(-50, -50) #keeps getting invalid destination for blit
screen.blit(text, textrect)

Какие-либо предложения? Заранее спасибо!


person Donald    schedule 23.02.2019    source источник


Ответы (1)


Метод pygame.Rect.move_ip не возвращает никакого значения. Он изменяет сам объект pygame.Rect.

Так после

textrect = textrect.move_ip(-50, -50)

значение textrect равно None.

Также обратите внимание, что правая верхняя координата Surface равна (widht, 0). Если вы хотите переместиться к центру поверхности, вам нужно двигаться в отрицательном направлении оси x, но в положительном направлении y, а не отрицательном направлении y.

Для решения вашей проблемы это должно быть:

displayfont = pygame.font.SysFont(None, 30)
text = displayfont.render('level', True, (red), (white))
textrect = text.get_rect()
textrect.topright = screen.get_rect().topright

textrect.move_ip(-50, 50)  

screen.blit(text, textrect)
person Rabbid76    schedule 23.02.2019