С Новым годом! Форум программистов, компьютерный форум, киберфорум
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. Показов 7307. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru