Как создать прямоугольник, который будет спрайтом в PyGame? - PullRequest
1 голос
/ 23 марта 2020

Я просто пытался сделать прямоугольник в Pygame как переменную, но он показал ошибку. Я действительно не знаю, как это исправить. Может кто-нибудь мне помочь? Код:

import pygame as py

screen = py.display.set_mode((1200, 700))
screen.fill((0, 0, 0))
rocket = py.draw.rect((screen), (225, 225, 225), (600, 350))
py.display.flip()

Ошибка:

Traceback (most recent call last):
  File "C:\Users\user\Desktop\Python\Project files\shooter_game.py", line 24, in <module>
    rocket = py.draw.rect((screen), (225, 225, 225), (600, 350))
TypeError: Rect argument is invalid

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

3-й параметр pygame.draw.rect() должен быть кортежем с размером 4. Кортеж задает прямоугольник с позицией и размером:

py.draw.rect((screen), (225, 225, 225), (0, 0, 600, 350))

py.draw.rect((screen), (225, 225, 225), (600, 350, 20, 20)) 

pygame.draw.rect() не генерирует объект pygame.Surface. Операция рисует прямоугольник на поверхности и возвращает объект pygame.Rect.
Если вы хотите сгенерировать объект прямоугольной формы angular, который может быть blit для поверхности, то вам необходимо сгенерируйте pygame.Surface и fill() с равномерным цветом:

rocket = py.Surface((20, 20))
rocket.fill((225, 225, 225))
screen.blit(rocket, (600, 350))
0 голосов
/ 23 марта 2020
import pygame
screen=pygame.display.set_mode([1200, 700])
screen.fill([0, 0, 0])
pygame.draw.rect(screen, [255, 0, 0], [50, 50, 90, 90], 0)
pygame.display.flip()
...