Как сделать, чтобы текстура стала полноценным объектом с границами?

В школе дали задание написать игру 2d на python, библиотека pygame

Написал код, сделал врагов, персонажа, фон, но не могу сделать, чтоб моя текстура -ЭТО НЕ ОБЪЕКТ ЭТО ПРОСТО КАРТИНКА, стала полноценным объектом с границами.

Код:

import pygame
from random import randrange

RES = 800
SIZE = 50

pygame.init()
win = pygame.display.set_mode((1200, 650))

pygame.display.set_caption('tremp hunter')

walkRight = [pygame.image.load('pygame_right_1.png'),
pygame.image.load('pygame_right_2.png'), pygame.image.load('pygame_right_3.png')
pygame.image.load('pygame_right_4.png'), pygame.image.load('pygame_right_5.png'), 
pygame.image.load('pygame_right_6.png')]

walkLeft = [pygame.image.load('pygame_left_1.png'),
pygame.image.load('pygame_left_2.png'), pygame.image.load('pygame_left_3.png'),
pygame.image.load('pygame_left_4.png'), pygame.image.load('pygame_left_5.png'), 
pygame.image.load('pygame_left_6.png')]

platform = pygame.image.load('python_platform.png')
df = pygame.image.load('pygame_df.png')
bg = pygame.image.load('pygame_bg.jpg')
playerStand = pygame.image.load('pygame_idle.png')

clock =  pygame.time.Clock()

apple = randrange(0, RES, SIZE), randrange(0, RES, SIZE)
x = 20
y = 545
width = 60
height = 71
speed = 5

isJump = False
jumpCount = 10

left = False
right = False 
animCount = 0
lastMove = 'right'

class snaryad():
    def __init__(self, x, y, radius, color, facing):
        self.x = x
        self.y = y
        self.radius = radius
        self.color = color
        self.facing = facing
        self.vel = 50 * facing

    def draw(self, win):
      pygame.draw.circle(win, self.color, (self.x, self.y), self.radius)
    
    
def drawWindow():
    global animCount
    win.blit(bg, (-1,-1 ))

    win.blit(df, (*apple, SIZE, SIZE))

    if animCount + 1 >= 30:
        animCount = 0

    if left:
        win.blit(walkLeft[animCount // 5], (x, y))
        animCount += 1
    elif right:
        win.blit(walkRight[animCount // 5], (x, y))
        animCount += 1
    else:
        win.blit(playerStand, (x, y))

    for bullet in bullets:
        bullet.draw(win)
    

    pygame.display.update()

run = True
bullets = []
while run:
    clock.tick(30)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    for bullet in bullets:
        if bullet.x < 1200  and bullet.x > -1:
            bullet.x += bullet.vel
        else:
            bullets.pop(bullets.index(bullet))

    keys = pygame.key.get_pressed()

    if keys[pygame.K_f]:
        if lastMove == 'right':
            facing = 1
        else:
            facing = -1
        
        if len(bullets) < 5:
            bullets.append(snaryad(round(x + width // 2) , round(y + height // 2), 5,( 255, 0, 0 ), facing))
    

    if keys[pygame.K_LEFT] and x > 5:
        x-= speed
        left = True
        right = False
        lastMove = 'left'
    elif keys[pygame.K_RIGHT]and x<1100 - width - 5:
        x += speed
        left = False
        right = True
        lastMove = 'right'
    else:
        left = False
        right = False
        animCount = 0
    if not (isJump):
        if keys[pygame.K_SPACE]:
            isJump = True
    else:
        if jumpCount >= -10:
            if jumpCount < 0:
                y += (jumpCount ** 2) / 2
            else:
                y -= (jumpCount ** 2) / 2
            jumpCount -= 1

        else:
            isJump = False
            jumpCount = 10

    drawWindow()

pygame.quit()
    

Ответы (0 шт):