Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
#1

Тетрис в консоли на чистом ООП. Не могли бы покритиковать мою архитектуру? - C++

01.12.2011, 20:03. Просмотров 2717. Ответов 0
Метки нет (Все метки)

Хочу написать тетрис на чистом ООП в консоли.
Тетрис будет представляться в виде вектора векторов размером 20x10.

Теперь надо разработать архитектуру.
Я представляю основу архитектуры так:
будет большой главный цикл, в котором будут считываться данные с клавиатуры, вызываться соответствующие методы классов, перерисовываться консоль( я думаю, это тоже будет методом),
будет происходить задержка( фигуры падают постепенно, а не мгновенно).
Думаю, что, если составить классы и методы к ним, то этот главный цикл сделать уже не составит труда.

Следующим шагом будет выявление классов и методов. Вроде как это часть архитектуры.
Как пишут в книгах, классы отражают сущности обычных вещей в реальном мире. (вроде так)
Теперь смотрим на описание тетриса( с википедии ):
Правила
Случайные фигурки тетрамино падают сверху в прямоугольный стакан шириной 10 и высотой 20 клеток. В полёте игрок может поворачивать фигурку и двигать её по горизонтали. Также можно «сбрасывать» фигурку, то есть ускорять её падение, когда уже решено, куда фигурка должна упасть. Фигурка летит, пока не наткнётся на другую фигурку либо на дно стакана. Если при этом заполнился горизонтальный ряд из 10 клеток, он пропадает и всё, что выше его, опускается на 1 клетку. Темп игры постепенно увеличивается. Название игры происходит от количества клеток, из которых состоит каждая фигура. Игра заканчивается, когда новая фигурка не может поместиться в стакан. Игрок получает очки за каждую фигурку, поэтому его задача — заполнять ряды, не заполняя сам стакан как можно дольше, чтобы таким образом получить как можно больше очков.
Делаю по примеру в книге Дейтелов( как программировать на С++ ).
Берем все существительные:
фигурки
игрок
стакан
дно
ряд
темп
игра
очки
задача

Представим себе эти слова классами и выкинем лишние слова.
Остается:
фигурки
стакан
темп?
очки?

+добавим класс Тетрис, который управляется остальными классами.
Классы:

Тетрис:
управляет фигурками, подсчитывает очки, перерисовывает тетрис и т.д.
Стакан:
вектор векторов размером 20х10
Можно вообще обойтись без него, засунув вектор векторов в класс тетрис.
Фигурка:
Генерирует рандомную фигуру или фигурку можно разбить на классы отдельных фигур: I, J, L, O, S, T, Z.
Класс темп и очки думаю можно не делать. Достаточно двух переменных типа unsigned int для темпа и очков, которые будут находится в классе Тетрис.

Методы:

Фигурка:
Допустим, что каждый вид фигурки будет представлен своим классом.
Значит фигурки будут обрабатываться полиморфно.
Фигурки сами себя будут поворачивать.
Фигурки будут представляться в виде вектора векторов. Если есть другие идеи как представлять фигурки, то мне бы было интересно услышать эти идеи.
При создании фигурки, надо инициализировать вектор векторов.


Тетрис:
Конструктор с параметром для темпа игры. Создает или объект класса Стакан или вектор векторов размером 20х10. Инициализирует очки нулем, а темп игры тем, что было передано конструктору.
Метод перерисовки. Перерисовывает не все, а только то, что изменилось. При первом вызове этого метода, нарисуется весь тетрис, ибо в консоли будут находится только пробелы и вроде бы символы перехода на новую строку.
Метод генерирования фигурки.
Метод передвижения в лево/право фигурки.
Метод поворота фигурки. Вызывает метод поворота у фигуры и еще делает одно действие, которое описано ниже.
Метод падения фигурки.

В 4 предыдущих методах будет проверка на свободное место для фигурки. Боковые стенки и верхняя стенка стакана учитываются иначе, чем дно стакана и фигурки, лежащие на дне.
В этих 4 методах будет удаляться фигурка, если свободного места не оказалось, т.е. фигурка упала на самую верхнюю лежащую фигурку.
Сервисный метод проверки на заполнение горизонтального ряда в тех местах, в которых касается только-что упавшая фигура.

Хочу послушать критику о том, что я написал выше.
PS
Отправлять меня смотреть готовые тетрисы желательно не надо. Я хочу сам написать тетрис.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 20:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Тетрис в консоли на чистом ООП. Не могли бы покритиковать мою архитектуру? (C++):

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

Тетрис в консоли - C#
Друзья, мне нужна помощь. Теория и решение задач по программированию мне даются хорошо, а вот написание игрушек: змейки, пятнашки, пэк-мены...

Тетрис в консоли. Как реализовать управление фигурами - C#
Приветствую. Препод в универе пошутил и предложил написать тетрис в консоли, так вот, столкнулся с проблемой, фигуры должны сами опускаться...

сеть между двумя компьютерами в организации, чтобы к ним не могли подключаться, а они могли - Сети
хочу подключить 2 компьютера в организации по локалке без доступа в инет.. чтоб они могли подключаться ко всем компьютерам.. а к ним...

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

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

Тетрис в консоли - C#
Друзья, мне нужна помощь. Теория и решение задач по программированию мне даются хорошо, а вот написание игрушек: змейки, пятнашки, пэк-мены...

Тетрис в консоли. Как реализовать управление фигурами - C#
Приветствую. Препод в универе пошутил и предложил написать тетрис в консоли, так вот, столкнулся с проблемой, фигуры должны сами опускаться...

сеть между двумя компьютерами в организации, чтобы к ним не могли подключаться, а они могли - Сети
хочу подключить 2 компьютера в организации по локалке без доступа в инет.. чтоб они могли подключаться ко всем компьютерам.. а к ним...

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

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

Тетрис в консоли - C#
Друзья, мне нужна помощь. Теория и решение задач по программированию мне даются хорошо, а вот написание игрушек: змейки, пятнашки, пэк-мены...

Тетрис в консоли. Как реализовать управление фигурами - C#
Приветствую. Препод в универе пошутил и предложил написать тетрис в консоли, так вот, столкнулся с проблемой, фигуры должны сами опускаться...

сеть между двумя компьютерами в организации, чтобы к ним не могли подключаться, а они могли - Сети
хочу подключить 2 компьютера в организации по локалке без доступа в инет.. чтоб они могли подключаться ко всем компьютерам.. а к ним...

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

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

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

Тетрис в консоли - C#
Друзья, мне нужна помощь. Теория и решение задач по программированию мне даются хорошо, а вот написание игрушек: змейки, пятнашки, пэк-мены...

Тетрис в консоли. Как реализовать управление фигурами - C#
Приветствую. Препод в универе пошутил и предложил написать тетрис в консоли, так вот, столкнулся с проблемой, фигуры должны сами опускаться...

сеть между двумя компьютерами в организации, чтобы к ним не могли подключаться, а они могли - Сети
хочу подключить 2 компьютера в организации по локалке без доступа в инет.. чтоб они могли подключаться ко всем компьютерам.. а к ним...

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


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

Или воспользуйтесь поиском по форуму:
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru