Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 11.09.2021
Сообщений: 99

AttributeError: 'pygame.Surface' object has no attribute 'bullet_width'

07.10.2021, 16:50. Показов 3283. Ответов 0

Студворк — интернет-сервис помощи студентам
Всем привет, помогите пожалуйста решить ошибку.
Вот полная ошибка:

Traceback (most recent call last):
File "E:\Python\Alien_Invasion\alien_invasion .py", line 29, in <module>
run_game()
File "E:\Python\Alien_Invasion\alien_invasion .py", line 23, in run_game
gf.check_events(ai_settings, ship, screen, bullets)
File "E:\Python\Alien_Invasion\game_functions .py", line 29, in check_events
check_keydown_events(event, ship, ai_settings, screen, bullets)
File "E:\Python\Alien_Invasion\game_functions .py", line 13, in check_keydown_events
new_bullet = Bullet(ai_settings, screen, ship)
File "E:\Python\Alien_Invasion\bullet.py" , line 12, in __init__
self.rect = pygame.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height)
AttributeError: 'pygame.Surface' object has no attribute 'bullet_width'

Вот код файла "bullet.py", в котором возникла проблема:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#Класс для управления пулями
class Bullet(Sprite):
    def __init__(self, ai_settings, ship, screen):
        #Создаєм обєкт пулі
        super(Bullet, self).__init__()
        self.screen = screen
 
        #Создаем пулю в позиции (0,0)
        self.rect = pygame.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height) 
        self.rect.centerx = ship.rect.centerx
        self.rect.top = ship.rect.top
 
        #Позиция пуле задана дробным числом
        self.y = float(self.rect.y)
 
        self.color = ai_settings.bullet_color
        self.speed_factor = ai_settings.bullet_speed_factor
 
    def update(self):
        #Перемещает пулю по y
        self.y -= self.speed_factor
        #Обновлює позицію пулі в float 
        self.rect.y = self.y
 
    def draw_bullet(self):
        #Выводит пули на экран
        pygame.draw.rect(self.screen, self.color, self.rect)
Вот код файла "gamefunctions.py", в котором возникла проблема:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sys
import pygame
from bullet import Bullet 
 
def check_keydown_events(event, ship, screen, ai_settings, bullets):
    #Нажатие клавиш
    if event.key == pygame.K_RIGHT:
        ship.moving_right = True
    elif event.key == pygame.K_LEFT:
        ship.moving_left = True
    elif event.key == pygame.K_SPACE:
        #Создание новой пули и занесение её в группу bullets
        new_bullet = Bullet(ai_settings, screen, ship)
        bullets.add(new_bullet)
 
def check_keyup_events(event, ship):
    #Отпуск клавиш
    if event.key == pygame.K_RIGHT:
        ship.moving_right = False
    elif event.key == pygame.K_LEFT:
        ship.moving_left = False
 
def check_events(ship, ai_settings, screen, bullets):
    #Обработка нажатия клавиш и мышки
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event, ship, ai_settings, screen, bullets)
 
def update_screen(ai_settings, screen, ship, bullets):  
    #Обновляет экран, и последнюю картинку
    for bullet in bullets.sprites():
        bullet.draw_bullet()
 
    screen.fill(ai_settings.bg_color)
    ship.blitme()
    #Отображает последний экран
    pygame.display.flip()
код файла "alien_invasion.py", в котором возникла проблема:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import sys
import pygame
from settings import Settings
from ship import Ship
import game_functions as gf
from pygame.sprite import Group
 
def run_game():
    #Ініціалізує pygame, setting і створює екран
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode((ai_settings.screen_width, 
                                      ai_settings.screen_hight)) 
    pygame.display.set_caption("Alien Invasion")
    #Создаєм корабль
    ship = Ship(screen, ai_settings)
 
    #Створюєм группу для хранения пуль 
    bullets = Group()
 
    #Запуск основного циклу гри
    while True:
        gf.check_events(ai_settings, ship, screen, bullets)
        ship.update()
        ship.blitme()
        bullets.update()
        gf.update_screen(ai_settings, screen, ship, bullets)
 
run_game()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2021, 16:50
Ответы с готовыми решениями:

Ошибка в pygame AttributeError: 'pygame.Rect' object has no attribute 'blit'
Создаю игру, крестики нолики Почему возникает ошибка и как ее исправить? AttributeError: 'pygame.Rect' object has no attribute 'blit' ...

AttributeError: partially initialized module 'pygame' has no attribute 'init' (most likely due to a circular import)
Code: import pygame pygame.init() win = pygame.display.set_mode((500, 500)) ...

AttributeError: 'function' object has no attribute 'Config'
Ошибка с нейросетью: config = neat.config.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2021, 16:50
Помогаю со студенческими работами здесь

AttributeError: 'NoneType' object has no attribute 'get'
Доброго всем вечера , писал я значит форму для регистрации и входа на Phyton и тут вылезла ошибка помогите пожалуйста. ...

AttributeError: 'lab' object has no attribute 'mainloop'
Почему не работает код? Ошибка: Traceback (most recent call last): File &quot;C:\Python34\lab5.py&quot;, line 32, in &lt;module&gt; if...

AttributeError: 'Main' object has no attribute 'records'
Ниже код , вот ошибка: line 125, in &lt;lambda&gt; btn_save.bind('&lt;Button-1&gt;', lambda event: self.view.records(self.site_id.get(),...

AttributeError: 'MainWindow' object has no attribute 'textEdit'
Изучение Питона начал с написания текстового редактора. Примеры в интернете или криво переведены или для 2.7, у меня 3.9 import sys...

AttributeError: 'bool' object has no attribute 'setText'
Я понять не могу, что ему нет так?Почему у него тип bool? import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru