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

Игра Arcanoid. Рандомное создание блоков для уровня - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объявление и определение функции http://www.cyberforum.ru/cpp-beginners/thread1092453.html
В учебнике такой код: void somefunction(int); int main() { //неважно }
C++ Узкие места в программе Есть старая большая программа, которую хочется оптимизировать, она в принципе написана неоптимально, и хочется как можно быстрее найти часто используемые методы и попытаться оптимизировать хотя бы... http://www.cyberforum.ru/cpp-beginners/thread1092450.html
Составить программу которая по заданному значению соответствующего элемента, вычисляла бы значения всех остальных элементов треугольника. C++
В общем суть задачи такова: Дан равнобедренный треугольник с катетом - a, гиппотенузой - b, высотой - h и площадью - s, и, нужно составить программу которая по заданному значению соответствующего...
C++ Консольный ввод или Тесты
Привет всем. Вопрос:Как сделать так, что бы при начале дебага, в консоли уже была введена строка? Т.е. без cin>> и набора строки, а сразу была введена?
C++ Фактические параметры член - функции http://www.cyberforum.ru/cpp-beginners/thread1092406.html
p - ссылка на класс it - итератор списка(list) Почему при такой (p->make_node(*it, *(++it)) записи в член-функцию в параметрах передается одна и та же ссылка? Собственно, если написать так...
C++ Распечатать длинное и короткое слово в строке при заданном условии Заданная строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255... подробнее

Показать сообщение отдельно
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,041
09.02.2014, 09:00
Цитата Сообщение от kpoxaa Посмотреть сообщение
как же все таки реализовать эту идею с рандомным созданием продуманного и красивого мира для арканойда
Прежде всего целесообразно задуматься: а надо ли оно? Это определенно не та задача, которую стоит автоматизировать. Лучше продумать формат хранения уровней в файлах (xml, json) и загружать уровни, нарисованные человеком. Опционально - было бы неплохо написать редактор уровней.

Что касается симметричного уровня, то все кажется простым: берем часть поля (половину, четверть, столбец или строку), забиваем случайными блоками, а затем получившийся паттерн применяем ко всему полю.

Может возникнуть несколько проблем.
Уровень может не оказаться красивым. Просто будет прослеживаться некоторый паттерн. Тут можно поэкспериментировать с извесными распределениями, прогрессиями. Мб можно попробовать за основу взять известные числовые последовательности (например, поиграться вокруг чисел Фибоначчи).

В полученном уровне может отсутсвовать логика.
Случайные уровни хороши в играх вроде сапера, где у ячейки всего два состояния и нет необходимости получить конкретный узор. А логика может быть нарушена если, например, нам сгенерится сплошная стена непробиваемых блоков.

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

Как итог.
Если принципиально хочется, чтобы уровни обязательно были случайными, лучше выбрать самый простой тупой алгоритм. Сгенерировать часть уровня и растянуть. Более умные алгоритмы потребуют больших затрат, скорее всего неоправданных. Лучше потратить силы на редактор уровней.
2
Миниатюры
Игра Arcanoid. Рандомное создание блоков для уровня   Игра Arcanoid. Рандомное создание блоков для уровня   Игра Arcanoid. Рандомное создание блоков для уровня  

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