Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/75: Рейтинг темы: голосов - 75, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 06.12.2019
Сообщений: 17

Мини-майнкрафт

02.04.2020, 18:20. Показов 14960. Ответов 6

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Имеется следующее условие задачи:

В игре Minecraft все игровые объекты делятся на три типа: блоки, сущности и предметы.
Блоки – это «кирпичики», из которых состоит весь игровой мир.
Сущности – это все динамические и движущиеся игровые объекты.
Предметы – это все остальные объекты.
Реализуйте иерархию классов для игры Minecraft:

BaseObject – базовый класс для всех объектов. Интерфейс этого класса состоит из двух методов:
__init__(x, y, z) – конструктор класса, который принимает на вход 3 числа (координаты объекта в игровом мире)
get_coordinates() – метод, возвращающий список координат x, y, z (именно в таком порядке)
Block – класс, наследующийся от BaseObject. У этого класса есть дополнительный метод shatter(), который ничего не принимает на вход и ничего не возвращает. При вызове этого метода все три координаты объекта Block должны стать равны None.
Entity – класс, наследующийся от BaseObject. У этого класса есть дополнительный метод move(x, y, z), который принимает на вход 3 числа (новые координаты объекта) и ничего не возвращает. При вызове этого метода координаты объекта должны стать равны x, y, z соответственно.
Thing – класс, наследующийся от BaseObject. У этого класса нет дополнительных методов.

По условию задачи мною была написана следующая программа:

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
class BaseObject:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
        
    def get_coordinates(self):
        return list(self)
    
    
class Block(BaseObject):
    def shatter(self):
        self.x = None
        self.y = None
        self.z = None
    
            
class Entity(BaseObject):
    def move(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
            
            
class Thing(BaseObject):
    pass
Однако после проверки кода я вижу следующую ошибку:

Traceback (most recent call last):
File "tester.py", line 11, in <module>
coords = base_obj.get_coordinates()
File "/temp/executing/solution.py", line 8, in get_coordinates
return list(self)
TypeError: 'BaseObject' object is not iterable
make: *** [run] Error 1

Подскажите пожалуйста, как мне исправить эту ошибку?

Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2020, 18:20
Ответы с готовыми решениями:

Мини-судоку
Решите рекурсивно мини-судоку размером 4x4. Для этого напишите функцию solve_sudoku(matrix), где matrix - целочисленная матрица (список...

Посоветуйте библиотеку для работы с майнкрафт ботом
Хотел бы узнать какую библиотеку я могу использовать для создания бота который будет заходить на мой сервер и работать с чатом. Сколько не...

Должен ли обязательно быть "человечек" в майнкрафт в режиме креатив (творчество)
Решила изучать питон с майнкрафт. И там и там - новичок. Изучаю по книжке, все делаю по инструкции. Там написано , что режим творчества по...

6
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
02.04.2020, 18:46
тут
Цитата Сообщение от iwannabesmarter Посмотреть сообщение
list(self)
вы пытаетесь вернуть список от объекта класса(self), вот он и говорит, что baseobject это не последовательность
0
0 / 0 / 0
Регистрация: 06.12.2019
Сообщений: 17
02.04.2020, 18:52  [ТС]
Место ошибки было понятно из самого сообщения. Мне хотелось бы получить помощь с устранением ошибки
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 3
02.04.2020, 22:33
Вместо "return list(self)" я написал "return self", одна ошибка прошла но осталась еще одна как ее исправить хз.
0
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
03.04.2020, 01:41
Лучший ответ Сообщение было отмечено Рыжий Лис как решение

Решение

Python
1
2
def get_coordinates(self):
        return [self.x,self.y,self.z]
думаю так
3
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 3
03.04.2020, 11:57
Как исправить класс Block?
0
38 / 36 / 2
Регистрация: 24.03.2020
Сообщений: 39
19.04.2020, 09:22
Вот готовый код, который проходит все проверки:
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
class BaseObject:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
 
    def get_coordinates(self):
        return [self.x, self.y, self.z]
 
 
class Block(BaseObject):
    def shatter(self):
        self.x = None
        self.y = None
        self.z = None
 
 
class Entity(BaseObject):
    def move(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
 
 
class Thing(BaseObject):
    pass
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2020, 09:22
Помогаю со студенческими работами здесь

Мини-судоку
Решите рекурсивно мини-судоку размером 4x4. Для этого напишите функцию solve_sudoku(matrix), где matrix - целочисленная матрица (список...

Мини-компьютер
Вася решил собрать себе мини-компьютер на базе платы Arduino или Raspberry Pi, который будет выводить небольшое рекламное сообщение на...

Мини автономная БД
Создать мини автономную БД Абитуриент с использованием графического интерфейса tkinter. Главное окно содержит кнопки: добавить...

Организация мини склада
Крутил, мутил вроди получилось, могу добавлять и удалять количество товара, а как сделать чтобы можно было добавлять/удалять новый товар и...

Мини-граф дизайнер
Здравствуйте, форумчане. Пишу первый раз, все тонкости не знаю. Возник вопрос по библиотеке PyQt5. Пишу программу с графическим...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru