Как установить координаты прямоугольника с помощью get_rect() или Rect()?
Вот пример, который работает: он загружает красную фигуру внизу моего экрана. Пока все хорошо, но я хочу загрузить фигуру в определенных координатах, таких как 700 (ось X) и 100 (ось Y).
import pygame
class Figure:
def __init__(self, screen2):
"""Initialize the figure and set its starting position."""
self.screen2 = screen2
# Load the Red figure image and get its rect.
self.redplayer = pygame.image.load('Images/redplayer.bmp')
self.rectredplayer = self.redplayer.get_rect()
self.screen2_rect = screen2.get_rect()
# Start each new redplayer at the bottom center of the screen.
self.rectredplayer.centerx = self.screen2_rect.centerx
self.rectredplayer.bottom = self.screen2_rect.bottom
def blitme(self):
"""Draw the red player figure at its current location."""
self.screen2.blit(self.redplayer, self.rectredplayer)
2 ответа
Установите координаты верхнего слоя следующим образом:
self.rectredplayer.x = 700
self.rectredplayer.y = 100
# Or just:
self.rectredplayer.topleft = (700, 100)
Чтобы установить центр прямоугольника на нужные координаты:
self.rectredplayer.center = (700, 100)
Или используйте другие прямоугольные атрибуты:
x,y
top, left, bottom, right
topleft, bottomleft, topright, bottomright
midtop, midleft, midbottom, midright
center, centerx, centery
Вы также можете передать координаты непосредственно Surface.get_rect
:
self.rectredplayer = self.redplayer.get_rect(topleft=(700, 100))
Я делаю то, что вы сказали, но я получаю сообщение об ошибке. Код:
import pygame
pygame.init()
screen = pygame.display.set_mode((500, 500))
ball = pygame.image.load('imgs/ball.gif')
pygame.display.set_caption("Making a ball move")
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((0,0,0))
ball_rect = ball.get_rect()
#ball_rect.x = 250
#ball_rect.y = 250
ball_rect.center = (250, 250)
ball_rect.width = ball.get_width()
ball_rect.height = ball.get_height()
ball_rect.blit(ball, ball_rect)
pygame.display.flip()
И ошибка:
pygame 2.1.2 (SDL 2.0.18, Python 3.10.1)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "D:\Coding\Python\Pygame\Making a rect
move\making_a_rect_that_moves.py", line 22, in <module>
ball_rect.blit(ball, ball_rect)
AttributeError: 'pygame.Rect' object has no attribute 'blit'
[Finished in 676ms]
Неважно, я понял, что я делал неправильно