Как сделать, чтобы текстура стала полноценным объектом с границами?
В школе дали задание написать игру 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()