|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.07.2013, 10:55 | #1 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
Алгоритм вращения фигуры в тетрисе
Всем привет. Возникла проблема при разработке данного алгоритма. Имеется массив 4*4, забитый единицами и нулями, в зависимости от наличия/отсутствия там занятой ячейки. Нужно составить общий алгоритм поворота, который будет работать для любой фигуры. Сам понял только что y_new == x_old, где y_new - номер строки, в которую будет перемещена данная ячейка, а x_old - номер столбца, в котором эта ячейка находилась до поворота. Но как вычислять координату x_new (номер столбца, где будет находиться ячейка после поворота) я так и не понял. Поворот осуществляю по часовой стрелке. Всю голову уже сломал. Помогите разобраться, пожалуйста.
|
10.07.2013, 11:02 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
10.07.2013, 11:48 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ссылочка безусловно хорошая. Но зачем заморачиваться, когда в данном случае можно взять дополнительный массив, переписать туда элементы "с поворотом", после этого скопировать полученные данные в исходный массив.
делов на пару-другую строчек кода... |
10.07.2013, 13:05 | #4 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Соглашусь с Serge_Bliznykov. Кроме того, массивы с фигурами в разных положениях можно рассчитать и заполнить ручками, чтобы избавиться от лишних вычислений во время выполнения программы)
p.s. да, я знаю что это ловля блох и совершенно непринципиально в условиях современных вычислительных мощностей
Благодарить в репутацию. Проклинать — туда же
|
10.07.2013, 14:17 | #5 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Правильно поставленная задача - три четверти решения.
|
|
10.07.2013, 14:46 | #6 | |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Цитата:
В контексте стандартного двухмерного тетриса - маловероятно, если только для воспитания общей культуры программирования.
Благодарить в репутацию. Проклинать — туда же
|
|
10.07.2013, 15:02 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
10.07.2013, 15:16 | #8 | |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Цитата:
Каждая фигура может поворачиваться на угол, кратный 90 градусам (особо циничные игры не учитываем)). Итого имеем 7*4=28 вариантов. Учитывая симметричность некоторых фигур, можем сократить это количество до 19 (квадрат, например, остается квадратом, как его ни поворачивай) Вопрос: зачем вычислять ручками остальные 65517 вариантов?
Благодарить в репутацию. Проклинать — туда же
|
|
10.07.2013, 15:19 | #9 | ||
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
||
11.07.2013, 22:23 | #10 |
Регистрация: 17.06.2013
Сообщений: 3
|
Зачем умножать сущьности...
void newcub:: RollCubik(){ //-- вращение кубика int pl=mcub[0][0]; mcub[0][0]=mcub[2][0]; mcub[2][0]=mcub[2][2]; mcub[2][2]=mcub[0][2]; mcub[0][2]=pl; pl=mcub[0][1]; mcub[0][1]=mcub[1][0]; mcub[1][0]=mcub[2][1]; mcub[2][1]=mcub[1][2]; mcub[1][2]=pl; } для 3 на 3... очень даже просто. чуть сложней для 4 на 4 |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
таблица рекордов в тетрисе! | Юлия11 | C++ Builder | 10 | 12.06.2013 10:34 |
Движение одной фигуры,вслед изменения высоты другой фигуры. | 7vlad37 | Microsoft Office Excel | 3 | 21.07.2011 18:01 |
Не работает алгоритм вращения точки. | 616th | Помощь студентам | 4 | 06.02.2011 23:31 |
Алгоритм поиска углов фигуры на изображении | Kalrh | Помощь студентам | 1 | 19.01.2011 20:02 |
Вращения закрашиваемого октаэдра | kast333 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 10.07.2009 21:53 |