|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.05.2011, 13:36 | #1 |
VisualC++/DirectX
Форумчанин
Регистрация: 16.07.2010
Сообщений: 831
|
Улучшение процедуры перемешивания
И снова я. Помогите улучшить процедуру перемешивание фрагментов картинки.
Код:
Последний раз редактировалось ZvEr_HaCkEr; 03.05.2011 в 14:11. |
03.05.2011, 14:07 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
1) небольшой косяк тут:
d:=random(5)+1; в результате d получается от 1 до 5 (включительно): [1..5] а дальше строчки в case реагируют только на d от 1 до 4-х... 2) если я правильно понял идею, то я бы ещё в цикле получения перемещения (в проверку условия) добавил проверку на то, что перемещение не равно обратному на предыдущем шаге (ну, если сдвинули влево, чтобы следующим ходом не сдвинули обратно, вправо - т.е. не вернули на исходное место). 3) более конкрентно можно говорить, если Вы выложите небольшой работающий тестовый проект, где видно, что кусок изображения остаётся нетронутым... Потому как всё мною сказанное выше - это плод моих умозрительных предположений... Проверить сказанное я не могу (точнее лень реализовыывать проект с нуля! Тем более ,что у Вас он уже есть! ) |
03.05.2011, 14:16 | #3 |
VisualC++/DirectX
Форумчанин
Регистрация: 16.07.2010
Сообщений: 831
|
Вот,потыкайте несколько раз новая игра, и сами все увидите.
|
03.05.2011, 14:28 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну, потыкал...
и не подверждаю! из (примерно) 10 нажатий - ~5-6 - абсолютно перемешаная картинка. пара раз - по два-три квадратика сопадают, образуя картинку. и только один раз сопвално две большие группы (одна примерно из 6 квадратов, другая - из 3-4x) вот визуализация работы Вашего алгоритма на форме (см. аттач). Mixer1.rar а способ улучшить - если стоит задача перемешать так, чтобы НИ ОДНОЙ группы, более чем из одного квадрата не совпало - тогда надо повторять процесс перемешивания до тех пор, пока функция проверки, что квадраты совпали не вернёт false... (только надо будет эту функцию реализовать...) |
03.05.2011, 14:34 | #5 |
VisualC++/DirectX
Форумчанин
Регистрация: 16.07.2010
Сообщений: 831
|
Спасибо, буду разбираться.
|
03.05.2011, 14:42 | #6 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Матан чистой воды, "чётность числа инверсий". Тыкаем фишки рандомно, считаем это число. Чётное - ок, можно собрать обратно, нечётное - нельзя.
http://ru.wikipedia.org/wiki/Пятнашки http://slovari.yandex.ru/~книги/БСЭ/...ия%20и%20игры/ http://www.gamedev.ru/flame/forum/?id=12159#m8
пыщь
|
03.05.2011, 14:52 | #7 | |
VisualC++/DirectX
Форумчанин
Регистрация: 16.07.2010
Сообщений: 831
|
Цитата:
Код:
|
|
03.05.2011, 15:20 | #8 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Вот как-то так. И это, лучше всегда нумеруй массивы с 0
ЗЫ: реализацию подсчёта числа инверсий с геймдева не проверял
пыщь
Последний раз редактировалось JTG; 03.05.2011 в 15:23. |
03.05.2011, 15:43 | #9 |
VisualC++/DirectX
Форумчанин
Регистрация: 16.07.2010
Сообщений: 831
|
Спасибо за генератор. У меня получилось так:
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Улучшение скрипта | Eldrich | JavaScript, Ajax | 4 | 14.02.2011 17:06 |
Улучшение кода | Rusl92 | Помощь студентам | 4 | 23.09.2010 19:15 |
Delphi7 Шифр перемешивания. Реализация | randomiaiz | Помощь студентам | 0 | 13.06.2010 19:49 |
Хеш-таблица. Непонятно с решением коллизии методом перемешивания внутренними цепочками | Познающий | Помощь студентам | 9 | 05.12.2009 02:48 |
Алгоритм "перемешивания" массива в Delphi | MusicMan | Помощь студентам | 4 | 26.04.2008 21:06 |