@Waffle47

Pygame ошибка в при отрисовке 'Group' object has no attribute 'blit', думаю ошибка где-то в группах как нужно изменить код, чтобы ошибки не было?

Я добавил возможность врагам стрелять, но в итоге отрисовка ВРАГА, которая раньше работала, начала вызывать ошибку. Я прикрепил код ниже. Лишний код я уберу (то как враг рандомит движение) также тут будут комментарии но на них не обращайте внимание, я переделываю старый проект и починю их позже. самое начало, откуда всё вызывается. main.py:

enemybullets = Group()
enemys = Group()

controls.enemys(enemys, screen, enemybullets, gamestat)

controls.py:

from enemybullet import Enemybullet
from enemy import Enemy

def enemys(enemys, enemybullets, screen, gamestat):

    if len(enemys) == 0:
        enemys.add(Enemy(gamestat))
    for enemy in enemys:
        enemy.draw(screen)
        enemy.update()
        if enemy.readypow:
            enemybullets.add(Enemybullet(enemy))

enemy.py:

import pygame
import random

class Enemy(pygame.sprite.Sprite):
    
    def __init__(self, gamestat):

        super(Enemy, self).__init__()

        if gamestat.enemy_blueb:
            self.paint = [pygame.image.load(r'paint\enemy\BluebSprite\blueb1.png'), pygame.image.load(r'paint\enemy\BluebSprite\blueb2.png')]
            self.powpaint = [pygame.image.load(r'paint\enemy\BluebSprite\bluebpow1.png'), pygame.image.load(r'paint\enemy\BluebSprite\bluebpow2.png'),
            pygame.image.load(r'paint\enemy\BluebSprite\bluebpow3.png'), pygame.image.load(r'paint\enemy\BluebSprite\bluebpow4.png')]
            self.enemyrect = pygame.image.load(r'paint\enemy\BluebSprite\blueb1.png')
            self.powerpaint = [pygame.image.load(r'paint\enemy\BluebSprite\power\pow.png'), pygame.image.load(r'paint\enemy\BluebSprite\power\pow1.png'),
            pygame.image.load(r'paint\enemy\BluebSprite\power\pow2.png'), pygame.image.load(r'paint\enemy\BluebSprite\power\pow3.png'),
            pygame.image.load(r'paint\enemy\BluebSprite\power\pow4.png')]

        self.rect = self.enemyrect.get_rect()

        self.right = False
        self.left = False
        self.down = False
        self.up = False

        self.rightchance = 10
        self.leftchance = -10
        self.downchance = 10
        self.upchance = -10
        self.xmove = 0
        self.ymove = 0
        self.xchance = 0
        self.ychance = 0


        self.standartanim = 0
        self.powanim = 0
        self.timer = 0
        self.endtimer = 0
        self.powtimer = 0
        self.powendtimer = 0
        self.readypow = False
        self.powing = False

        self.rect.centerx = random.randint(1128, 1792)
        self.rect.centery = random.randint(128, 952)

    def draw(self, screen):

        if self.standartanim + 1 >=30:
            self.standartanim = 0
        if self.powanim + 1 >=30:
            self.powanim = 0
            self.powing = False

        if self.powing:
            screen.blit(self.powpaint[self.powpaint // 5], (self.rect)) #отрисовка спрайта при стрельбе
            self.powanim += 2 #скорость отрисовки
            if self.powanim >= 30: #завершение анимации если animCount >= 30
                self.laser = False
        else:
            screen.blit(self.powpaint[self.standartanim // 15], (self.rect)) #отрисовка спрайта
            self.standartanim += 1

ошибку выдаёт: screen.blit(self.powpaint[self.standartanim // 15], (self.rect))
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы