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

Nameerror: name 'screen' is not defined

14.05.2021, 11:02. Показов 7404. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
import sys
import pygame
from settings import Settings
from ship import Ship
class AlienInvasion: #Класс для управления ресурсами и поведением игры.
    
 def __init__(self):    
     pygame.init() #Инициализирует игру и создает игровые ресурсы.
     self.settings = Settings()
     self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
     pygame.display.set_caption("Alien Invasion")
     self.ship = Ship(screen)
    
 def run_game(self):
     while True:  
         self.screen.fill(self.settings.bg_color) 
         self.ship.blitme()   
         for event in pygame.event.get(): 
             if event.type == pygame.QUIT:
                sys.exit()
        
         pygame.display.flip() 
    
if __name__ == '__main__':    
     ai = AlienInvasion() # Создание экземпляра и запуск игры.
     ai.run_game()
В строке 12
Python
1
self.ship = Ship(screen)
пишет ошибку: Nameerror: name 'screen' is not defined
Файл ship.py у меня есть, могу показать, если нужно...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.05.2021, 11:02
Ответы с готовыми решениями:

NameError: name 'screen' is not defined
import sys import random import pygame from settings import Settings from xwing import Xwing class StarWars: def...

NameError: name 'name' is not defined
ошибка, как исправить. программа должна создавать всплывающую подсказку для кнопки line 12, in <module> if name ==...

NameError: name 'x' is not defined
import pygame import random from os import path img_dir = path.join(path.dirname(__file__), 'img') WIDTH = 800 HEIGHT = 600...

6
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
14.05.2021, 11:06
МАНГУСТ, нужно содержимое модуля Settings и Ship
0
Эксперт Python
 Аватар для АмигоСП
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
14.05.2021, 11:07
МАНГУСТ, Видимо потому, что туда нужно передать self.screen. Потому как переменной screen у вас нигде больше не объявлено
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
14.05.2021, 11:09
Цитата Сообщение от МАНГУСТ Посмотреть сообщение
e 'screen' is not defined
Сие значит, что переменная не объявлена.
0
0 / 0 / 0
Регистрация: 29.01.2021
Сообщений: 27
14.05.2021, 11:34  [ТС]
Dax
Я это понимаю. Но не понимаю, как её объявить? Что за учебник с ошибками?

Добавлено через 9 минут
ship.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pygame
class Ship():
    """Класс для управления кораблем."""
    def __init__(self, ai_game):
         """Инициализирует корабль и задает его начальную позицию."""
         self.screen = ai_game.screen
         self.screen_rect = ai_game.screen.get_rect()
         # Загружает изображение корабля и получает прямоугольник.
         self.image = pygame.image.load('images/ship.bmp')
         self.rect = self.image.get_rect()
         # Каждый новый корабль появляется у нижнего края экрана.
         self.rect.midbottom = self.screen_rect.midbottom
 
    def blitme(self):
         """Рисует корабль в текущей позиции."""
         self.screen.blit(self.image, self.rect)
settings.py
Python
1
2
3
4
5
6
7
8
class Settings():
 """Класс для хранения всех настроек игры Alien Invasion."""
 def __init__(self):
 #Инициализирует настройки игры.
 # Параметры экрана
     self.screen_width = 1200
     self.screen_height = 800
     self.bg_color = (230, 230, 230)
Добавлено через 1 минуту
АмигоСП, так делал, тогда выдаёт ошибку в ship.py
0
1 / 0 / 1
Регистрация: 29.07.2020
Сообщений: 10
16.07.2021, 18:55
Лучший ответ Сообщение было отмечено МАНГУСТ как решение

Решение

я так понимаю, что передавать нужно self, потому что у обьекта ai_game (в __init__ для Ship) подразумевается наличие атрибута(это же так называется?) screen
0
0 / 0 / 0
Регистрация: 29.01.2021
Сообщений: 27
25.07.2021, 10:15  [ТС]
Вы правы!

Добавлено через 9 минут
Python
1
self.ship = Ship(self)
Вот так надо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2021, 10:15
Помогаю со студенческими работами здесь

NameError: name 'ImageDraw' is not defined
Люди, кто может подсказать почему появляется ошибка: class GlassesImageDraw(ImageDraw.ImageDraw): NameError: name 'ImageDraw' is not...

NameError: name 'K55' is not defined
Добрый вечер! Имеется кусок кода(В данном случае ИНВЕРСИЯ выбирается как элемент из списка) if ust=="Инверсия": ...

NameError: name 'Combobox' is not defined
Мне нужно написать скрипт который будет искать файл лога по SSH на сервере и копировать мне его на пк. Но возникла проблемма с графическим...

NameError: name 'txt' is not defined
Здравствуйте, в Python'е я новичок, и не понимаю что с данным куском кода не так: def clicked(): ...

NameError: name 'user_score' is not defined
import easygui from tkinter import * from tkinter import messagebox from random import * from time import * def...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru