Во-первых, позвольте мне предварить это, сказав, что я новичок в Python, сделал всего несколько программ, поэтому этот код, вероятно, выглядит очень запутанным. Я пытаюсь познакомиться с pygame, сделав небольшую игру pacman в подарок члену семьи с моими собаками в качестве игрока и призраков. У меня возникли проблемы с переносом изображения на прямоугольник, вызываемый rocky.draw() в основном цикле (имя моей собаки - скалистый). Я пробовал несколько решений. Первым из них является удаление метода рисования в классе Rocky и использование вместо него get.rect() для создания прямоугольника. Однако это просто приводит к тому, что прямое отображение не отображается, а просто появляется гигантская увеличенная версия изображения, отображаемая на большей части экрана. Итак, я снова перешел к использованию rocky.draw() и попытался вставить изображение в прямоугольник. Но я продолжаю получать ошибку типа: неверная позиция назначения для blit. Я знаю, что, скорее всего, упускаю что-то глупое или что-то неправильно понимаю. Любой вклад приветствуется. Спасибо!
Вот код:
import pygame
pygame.init()
x = 50
y = 50
width = 40
height = 60
vel = 5
pygame.display.set_caption("Rock-Man")
clock = pygame.time.Clock()
surface = pygame.display.set_mode((500, 500))
color = (255, 0, 0)
rockimg = pygame.image.load('rocky1.png')
rockimg.convert()
class Entity:
def __init__(self, x, y):
self.x = x
self.y = y
class Rocky(Entity):
def __init__(self):
Entity.__init__(self, x, y)
self.x = 0
self.y = 0
self.tile_size = 30
def draw(self):
pygame.draw.rect(surface, color, (x, y, width, height))
rocky = Rocky()
run = True
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x -= vel
if keys[pygame.K_RIGHT]:
x += vel
if keys[pygame.K_UP]:
y -= vel
if keys[pygame.K_DOWN]:
y += vel
surface.fill((0, 0, 0))
rocky.draw()
surface.blit(rockimg, rocky)
pygame.display.flip()
pygame.display.update()
pygame.quit()