Как создать разные объекты со своими свойствами из одного класса в Pygame
Я делаю игру, в которой вы посылаете миньонов, чтобы сражаться за вас. Я смог заставить его работать, но код становится длинным и повторяющимся. Я уверен, что есть лучший способ сделать это.
У меня две проблемы. Во-первых, вместо того, чтобы иметь один класс миньонов, который можно вызывать всякий раз, когда мне нужен миньон, я был вынужден создать класс для каждого миньона (класс Minion1, класс Minion2 и т. Д.), Поскольку они должны иметь свои собственные координаты x,y и сильные и слабые стороны, а также анимации. Они также сбрасываются, если я вызываю новый объект, используя тот же класс. Можно ли сделать это с помощью одного класса?
import pygame
class Minion1:
def __init__(self, x, y):
self.hp = 100
self.spd = 50
self.str = 50
self.walking = False
self.x = x
self.y = y
self.w = 32
self.h = 48
self.images = pygame.image.load('images/minion1.png').convert_alpha()
alpha = self.images.get_at((0, 0))
self.images.set_colorkey(alpha)
self.numImages = 4
self.current_image = 0
self.animation_time = 0.1
self.current_time = 0
def update(self, dt):
self.current_time += dt
if self.current_time >= self.animation_time:
self.current_time = 0
if self.current_image >= self.numImages - 1:
self.current_image = 0
else:
self.current_image += 1
self.x -= self.velocity
def render_right(self, gameDisplay):
gameDisplay.blit(self.images, (self.x, self.y), (self.current_image * self.w, self.h * 2, self.w, self.h))
Моя вторая проблема - отправка миньонов. Я только что написал один и тот же код для каждого миньона. Есть ли способ просто изменить номер (minion1 на minion2) и использовать меньше кода?
send_minion(minion1.x, minion1.y, minion1.w, minion1.h, 'walk1')
if minion1.walking:
minion1.update(dt)
minion1.render_right(gameDisplay)
minion1.x += 1
send_minion(minion2.x, minion2.y, minion2.w, minion2.h, 'walk2')
if minion2.walking:
minion2.update(dt)
minion2.render_right(gameDisplay)
minion2.x += 1