Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2009, 17:33   #1
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию Модель Кубика-Рубика

Недели три назад появилась идея - написать что-то типа ScreenSaver_a (программы-заставки).
Выбрал тему - собирающийся и разбирающийся Кубик Рубика.
Вот, собрал физическую модель кубика. Зацените.
А с логической моделью как-то не всё гладко. Сначала думал загнать всю инфу по кубику в трёхмерный массив. Каждый элемент массива ассоциируется с одним элементом кубика-Рубика.
Элемент кубика Рубика - это тоже кубик, некоторые из граней которого окрашены в разные цвета. Таким образом, каждый элемент массива определяет какие грани элемента кубика окрашены и какими цветами.
И, вообщем, неудобная модель получилась - при повороте граней, приходится перегонять очень много данных внутри этого массива, причём не просто перегонять, а ещё и интеллектуально (в зависимости от направления поворота грани) менять значения элементов массива.
Может кто другую модель предложит, более логичную.
Вложения
Тип файла: rar ScreenSaver2.rar (7.0 Кб, 131 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 29.08.2009, 18:05   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Красиво нарисовано.
Заметил одну недоработку. Если окно перетащить мышкой, пропадает часть кубиков.
В архиве мой вариант с исходниками (Delphi+OpenGL)- это к вопросу о модели.
Изображения
Тип файла: jpg screen.jpg (15.1 Кб, 169 просмотров)
Вложения
Тип файла: rar RubiksCube.rar (199.3 Кб, 103 просмотров)

Последний раз редактировалось alexBlack; 29.08.2009 в 18:09.
alexBlack вне форума Ответить с цитированием
Старый 29.08.2009, 22:45   #3
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Моя идея организации модели:
Цитата:
Массив 1..6 из двумерных массивов- сторон куба вот так
Код:
************
  storona=record
     Places:Array[1..3,1..3] of byte; {или тип с 6 разными цветами}
  end;
************
Kub:Array[1..6] of storona;
Levsha100 вне форума Ответить с цитированием
Старый 29.08.2009, 23:45   #4
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Вообще класно. Еще можно сделать, что бы человек мог запутать кубик, а программа его собрать, ну или наоборот, зупутывал бы человек, а собирала программа. (если нужно, могу дать очень простой и понятный алгоритм сборки)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 29.08.2009 в 23:49.
ROD вне форума Ответить с цитированием
Старый 30.08.2009, 02:56   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Восклицание

Потрясающе... ^___^

Только надо бы ещё чуть сверху подсвечивать, а то уж слишком темновато получилось (во всяком случае у меня)...

А может можно сделать настоящий ScreenSaver? Я бы себе такой поставил...

Цитата:
Сообщение от alexBlack Посмотреть сообщение
В архиве мой вариант с исходниками (Delphi+OpenGL)- это к вопросу о модели.
Исходники не компилируются... Кажется что-то недоустановлено... ((

Цитата:
[Error] commands.pas(11): 'END' expected but 'PROCEDURE' found
[Error] commands.pas(12): 'IMPLEMENTATION' expected but ';' found
[Error] commands.pas(19): Declaration expected but identifier 'GLColor' found
[Error] commands.pas(32): Undeclared identifier: 'TPoint3Di'
[Error] commands.pas(36): ';' expected but 'IMPLEMENTATION' found
[Error] commands.pas(11): Unsatisfied forward or external declaration: 'Translate'
[Fatal Error] RubicsCube.pas(4): Could not compile used unit 'commands.pas'
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 30.08.2009, 03:19   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Понравилось. Красиво получилось..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.08.2009, 08:41   #7
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Исходники не компилируются... Кажется что-то недоустановлено... ((
Скорее всего версия Delphi. Не компилируется этот фрагмент:

Код:
   TPoint3Df = record
      x, y, z : GLFloat;
      procedure Translate(dx, dy, dz:GLFloat);
   end;
не помню с какой версии доступно описание процедур в record-ах. У меня Turbo Delphi (10).

Как вариант можно переписать следующим образом:

Код:
   TPoint3Df = record
      x, y, z : GLFloat;
   end;

   procedure Translate(var P:TPointe3Df; dx, dy, dz:GLFloat);
и реализацию соответственно подправить. То-же самое с TPoint3Di.Empty.

Последний раз редактировалось alexBlack; 30.08.2009 в 08:45.
alexBlack вне форума Ответить с цитированием
Старый 30.08.2009, 20:38   #8
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Исправил ошибку с исчезающими кубиками.
Потихоньку адаптирую программу под Screen Saver.
В связи с этим проблема, не могу скрыть окно программы, чтобы при запуске приложения-заставки в свойствах экрана в предварительном просмотре его не было видно. И ещё не знаю как сделать, чтобы программа закрывалась при выходе из свойства:экран->заставка.
Вложения
Тип файла: rar Kubik.rar (7.4 Кб, 66 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 30.08.2009, 22:01   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вот здесь рекомендации по созданию . Пункт 3 .... и 4, а то кнопочка экран/заставка/параметры доступна, но запускает сам сейвер в полном окне и закрыть его можно только по Alt+F4.
alexBlack вне форума Ответить с цитированием
Старый 30.08.2009, 22:14   #10
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Что-то после первой "паузы" (когда кубик перестал вращать грани,и просто стал крутиться) и последующем начале вращения граней, у меня верхняя грань начала вращаться без перерыва.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даталогическая модель Шульц БД в Delphi 0 27.12.2008 23:44
3D модель в GLScene -=<[Evklidd]>=- Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 04.02.2008 15:32
Модель бензоколонки forester Помощь студентам 23 11.10.2007 15:17