Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 27.07.2020
Сообщений: 3

Проект на PyGame из книги «Изучаем Python. Программирование игр, визуализация данных, веб-приложения», Мэтиза

27.07.2020, 16:01. Показов 3429. Ответов 5

Студворк — интернет-сервис помощи студентам
Пишу первый проект на Питоне, никак не могу разобрать как исправить ошибку. Код переписывать (перекопировать с учебника) уже пытался.
Вложения, ожидающие проверки
Тип файла: png Screenshot_3.png
Тип файла: png Screenshot_4.png
Тип файла: png Screenshot_5.png
Тип файла: png Screenshot_6.png
Тип файла: png Screenshot_7.png
Тип файла: png Screenshot_8.png
Тип файла: png Screenshot_2.png
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.07.2020, 16:01
Ответы с готовыми решениями:

Объясните текст из книги Лутца "Изучаем python"
В книге написано: В текущей реализации python это ещё и программный пакет который называется интерпретатором. Интерпретатор - это такой...

Из книги: Мэтиз "Изучаем Python."
Всем привет. Собственно, есть изначальный код: favorite_languages = { 'jen': , 'sarah': , 'edward': , 'phil': , }

Сборка компа 40+-2тысячи для игр/работы(верстка/веб-программирование)
Добрый день! Помогите, пожалуйста, собрать компьютер данной ценовой категории и подскажите, пожалуйста, где его можно будет заказать с...

5
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
27.07.2020, 16:15
Никто не будет на ваши картинки смотреть. Вставьте код в виде текста.
1
0 / 0 / 0
Регистрация: 27.07.2020
Сообщений: 3
27.07.2020, 16:24  [ТС]
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
40
41
42
43
44
45
46
import sys, pygame
from bullet import Bullet
 
def check_keydown_events(event, ai_settings, screen, ship, bullets):
    '''Реагирует на нажатие клавиш'''
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_RIGHT:
            # Переместить корабль вправо.
            ship.mooving_right = True
        elif event.key == pygame.K_LEFT:
            ship.mooving_left = True
        elif event.key == pygame.K_SPACE:
            # Создание новой пули и включение ее в группу bullets.
            new_bullet = Bullet(ai_settings, screen, ship)
            bullets.add(new_bullet)
        elif event.key == pygame.K_ESCAPE:
            #Выход на Escape
            sys.exit()
 
def check_keyup_events(event, ship):
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_RIGHT:
            ship.mooving_right = False
        elif event.key == pygame.K_LEFT:
            ship.mooving_left = False
 
def check_events(ai_settings, screen, ship, bullets):
    """Обрабатывает нажатия клавиш и события мыши."""
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event, ai_settings, screen, ship, bullets)
        elif event.type == pygame.KEYUP:
            check_keyup_events(event, ship)
 
def update_screen(ai_settings, screen, ship, bullets):
    """Обновляет изображения на экране и отображает новый экран."""
    screen.fill(ai_settings.bg_color)
    # При каждом проходе цикла перерисовывается экран.
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    ship.blitme()
 
    # Отображение последнего прорисованного экрана.
    pygame.display.flip()
кто не может на картинке посмотреть
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
import pygame
from pygame.sprite import Group
from settings import Settings
from ship import Ship
from bullet import Bullet
import game_function as gf
 
def run_game():
    #Инициализирует игру и создаёт объект экрана.
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")
    # Создание корабля
    ship = Ship(ai_settings, screen)
    #Создание группы для хранения пуль.
    bullets = Group()
 
    #Запуск основного цикла игры.
    while True:
        #Отслеживание событий клавиатуры и мыши.
        gf.check_events(ship, screen, ai_settings, bullets)
        ship.update()
        bullets.update()
        gf.update_screen(ai_settings, screen, ship, bullets)
 
run_game()
Ошибка:
File "C:\Users\Master\Desktop\Новая папка\Alien_Invasion\alien_invasion.py", line 27, in <module>
run_game()
File "C:\Users\Master\Desktop\Новая папка\Alien_Invasion\alien_invasion.py", line 22, in run_game
gf.check_events(ship, screen, ai_settings, bullets)
File "C:\Users\Master\Desktop\Новая папка\Alien_Invasion\game_function.py", line 33, in check_events
check_keydown_events(event, ai_settings, screen, ship, bullets)
File "C:\Users\Master\Desktop\Новая папка\Alien_Invasion\game_function.py", line 14, in check_keydown_events
new_bullet = Bullet(ai_settings, screen, ship)
File "C:\Users\Master\Desktop\Новая папка\Alien_Invasion\bullet.py", line 10, in __init__
self.rect = pygame.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height)
AttributeError: 'Ship' object has no attribute 'bullet_width'
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.07.2020, 16:40
Цитата Сообщение от Boris Animal Посмотреть сообщение
никак не могу разобрать как исправить ошибку
Там же все написано: у экземпляра Ship нет атрибута bullet_width.
Почему его нет - думай сам.
А код нужно выкладывать в тегах Python. Твою неотформатированную портянку никто читать не будет.
1
28.07.2020, 18:19
 Комментарий модератора 
Цитата Сообщение от Boris Animal Посмотреть сообщение
кто не может на картинке посмотреть
Кто не может Правила форума почитать?


0
1 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 4
29.07.2020, 17:12
По коду вроде все норм.
Попробуй заглушить линтер и посмотреть будет программа корректно работать или нет.
Вставь перед функцией check_keydown_events:

# pylint: disable=no-member

И после функции check_keyup_events:

# pylint: enable=no-member

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

Визуализация данных консольного приложения в форме
Доброго времени суток, господа! Нужен совет, ибо совсем запутался. Есть консольное приложение, которое принимает UDP пакеты и выводит в...

Команда разработчиков - php, python, веб дизайн, программирование
Команда разработчиков - php, python, веб дизайн, программирование Если вам нужно создание качественного сервиса с результатом на работу,...

Приложение для книги "Адамс Джим - Программирование ролевых игр с DirectX"
&quot;Адамс Джим - Программирование ролевых игр с DirectX, 2-е издание&quot; Где можно найти приложение для этой книги? Все, что мог перерыл....

Изучаем программирование на HTML5. Эрик Фримен
function getNextShowing(movie) { var now = new Date().getTime(); for (var i = 0; i &lt; movie.showtimes.length; i++) { var...

Выбор платформы для разработки веб-приложения на python
Здравствуйте! Мне необходимо написать сайт для службы доставки продуктов. Оговорюсь сразу, что это не коммерция, это нужно на диплом. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru