|
Just Do It!
|
||||||||
Совместное создание игры08.01.2025, 12:45. Показов 45210. Ответов 942
Метки нет (Все метки)
если ТС готов варганить со мной сапера, то я сделаю ещё одну попытку его(пожалуй 4 версию) установить и испытать. собсно что нужно: формально отображать некие графические модели на экране в нужном его месте нужного масштаба, для теста сойдут спрайты - а потом можно и анимированные модели на усмотрение геймдиза)) и больше ничаво.
0
|
||||||||
| 08.01.2025, 12:45 | |
|
Ответы с готовыми решениями:
942
Для чего создан язык С++? создан массив Теория игр, массивы |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 19.02.2025, 15:38 | |
|
1
|
|
|
|
|
| 19.02.2025, 16:04 | |
|
Создаем фирму "Simple little programs". У неё не будет конкурентов.
1
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 19.02.2025, 19:13 | ||
![]() В видео присутствуют ненормативная лексика. Super Bunny Man
1
|
||
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
|
| 19.02.2025, 19:52 | |
|
SmallEvil, любая говно-игра прикольна, если это мультиплеер. Но одиночная игра была бы скучной.
1
|
|
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
|
| 20.02.2025, 23:31 | |
|
gunslinger, XLAT, SmallEvil, CoderHuligan, я взял картинку и раздробил её на куски 32 х 32. Высота и ширина оригинальной картинки делились на 32, поэтому без проблем создал куски. Получилось 384 куска, которые во вложении. Куски я не вращал. Названия кусков рандомные.
Задание: склеить куски, восстановить оригинальную картинку и выложить ее на форуме. Разрешено использовать что угодно, WinAPI, Qt, wxWidgets, SFML, SDL, OpenCV, VCL и т.д.
1
|
|
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
||
| 21.02.2025, 22:42 | ||
|
Написал прогу для склеивания, но есть несколько проблем. Во-первых, тайл, который должен быть в верхнем левом углу нужно указать вручную. Сколько не попытался вычислить данный тайл автоматически, не получилось. Во-вторых, с квадратными сетками проблем нет, но если оригинальное изображение были разделено по прямоугольной сетке (когда количество столбцов и рядов отличается), то иногда прога берет неверное количество столбцов... Одним словом, задача оказалась нелегкой. Не знаю, будут ли у вас интересные идеи.
0
|
||
|
Just Do It!
|
||
| 22.02.2025, 01:39 [ТС] | ||
|
зоны кусочка пазла: - левая - правая - верхняя - нижняя 2. каждая зона это матрица W x S - S сторона квадрата - W толщина зоны, где W >= 1 пиксель 3. далее как в шахматах - комбинаторика. 4. делаем оценку каждой пары зон - одна к 383 * 4 5. сортируем оценки 6. стыкуем в том месте, где они самые высокие. 7. готово. 8. для самых хитрожопых вычислителей всегда найдется такой рисунок в "горошек", который не вычисляется. 9. итого, рисунок должен иметь качество "вычисляемости".
1
|
||
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
|
| 22.02.2025, 02:40 | |
|
XLAT, не все так просто, как кажется. Попробуй написать прогу, поймёшь, что всё не так уж легко.
Сравнить края кусков несложно. Я написал код для этого за 10 мин где-то. Например, допустим нужно сравнить восточный край одного куска с западным краем второго куска. Тут просто вычисляется среднее арифметическое квадратов расстояний цветов пикселей (смысла вычислять квадратные корни нет). Таким образом, идеальное совпадение это 0, полное несовпадение это 4*255^2 (умножаем на 4 канала rgba). Это все отлично работает. У меня проблемы с определением левого верхнего куска. Когда он известен, остальные куски собирать не сложно. Я пытался его найти, путем перебора всех кусков, выбирая тот, у которого не находится ни северный, ни западный сосед с хорошим совпадением, но не всегда работает этот метод. Также проблема с определением размеров сетки. Если она квадратная, то все просто. Но допустим, 384 куска это 24 * 12. Как это определить, что именно там 24 * 16, а не 32 * 12, например? Использую я один способ, но он зависит от константной величины - порога соответствия, который я ввел в коде. Но для разных изображений этот порог должен быть разным, поэтому не всегда работает.
1
|
|
|
|
|
| 22.02.2025, 09:47 | |
|
У меня пока голова другими задачами забита, а то бы подключился. Может быть потом. Тут, думаю, не важно с какого тайла начать. Сравниваем по сторонам с оценкой граничных пикселей в каком-то диапазоне "весов". Когда все тайлы склеены, то первый угловой тайл найдется сам.
0
|
|
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
|||||||
| 22.02.2025, 14:37 | |||||||
|
XLAT, у меня несколько вопросов:
- какое предназначение верхней левой консольки? Показывает команды, но не пишет от кого идут. Тем более, в левой правой консольке все это уже есть, но реализовано получше - там уже показывает принадлежность команд к конкретным клиентам. - всё работает на одном ПК или оно может работать по всей LAN сети или даже через инет? - может ли сервер вырубать клиентов? Добавлено через 31 минуту Сейчас у меня такой код. Но, очевидно, его нужно полностью поменять. Мне этот код не нравится. Нужно придумать что-то получше.
1
|
|||||||
|
|
|
| 22.02.2025, 15:58 | |
|
Насколько понял, все куски перемешаны и надо определить что к чему подходит.
Такая идея. Создаем массив структур. В структуре есть 4 массива. Первый массив содержит верхнюю скан-линию пикселей изображения, 2 массив нижнюю, 3 - левый столбец, 4 - правый. И для каждого массива определяем bool что данная сторона обработана. Это чтобы не обрабатывать изображения целиком. То есть сперва подготавливаем и заполняем структуры. Потом заполняем ими массив. Ну и соответственно затем взяв первую структуру проходим по массиву и ищем похожие скан линии и столбцы. Если нашли подходящую, склеиваем оба изображения и отмечаем, что стороны обработаны. Далее ищем следующую сторону первого изображения и так до 4 стороны. Далее переходим к следующему изображению. После того как прошли весь массив проверяем все ли стороны всех фрагментов обработаны, и прямоугольное ли изображение получилось, если всё ок, то заканчиваем.
1
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 22.02.2025, 18:06 | ||
|
Сравнивать смежные части(край в один пиксель) и сортировать их по схожести(разница в цвете RGB). Писать код, как то лень.
1
|
||
|
Just Do It!
|
||||||||
| 22.02.2025, 18:09 [ТС] | ||||||||
|
в данном месте выполняет роль окна логов от пула потоков с играми. можно в логе вывести такое кол-во инфы, которое даже Айнштайн своим моском не переварит. по идее тестировщику без разницы что от кого идет - главное чтобы не было индикаций ошибок. здесь я воображаю хацкерский клиент, желающий угробить сервер, но задача сервера выжить... сервер может посылать на клиент любые команды, клиент их будет принимать все и далее либо игнорить, либо фильтровать и выполнять... сервер не может заставить клиент выполнить команду(и наоборот), которая не прописана в holderRPC. выше правило можно расширить на исполняемые текстовые скрипты ... можно ли запустить 2000 клиентов на одном ПК, разумеется, облегчив их от всякого огл и т.п.? и в связи с этим - какой лог мне будет нужен?
1
|
||||||||
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
||
| 22.02.2025, 19:25 | ||
|
SmallEvil, ты пишешь как CoderHuligan, а именно, абстрактными терминами, которые мне ничем не помогут. Я же написал, что я столкнулся с конкретной проблемой. Даже не то чтобы столкнулся с проблемой, но дошел до того момента, что нужно найти самое верное решение и только потом продолжить.
Внимательно прочтите это: никаких проблем со сравнениями пикселей у меня нет, я все это уже написал, причем в первый же день, когда решил начать этот проект. Написал всё это за 10 мин (потратил столько времени на настройку проекта, реализацию загрузки изображений с папки и все прочее). А сейчас даже реализован процесс склеивания и отображения цельного изображения. Т.е. для каждого куска я могу без проблем определить, какой кусок ему больше подходит слева, справа, сверху и снизу. Вопрос: ну а дальше-то что? 1. Как определить, сколько кусков должно быть в ширину, и сколько кусков в высоту? Если известно, что оригинальное изображение квадратное, то тогда проблем нет. Но ведь первоначальное изображение может быть прямоугольным. 2. Как составить двумерный массив с индексами кусков, расположенных в правильном порядке? Потому что я уже написал код, который берет такой массив и выводит цельное изображение на экран. Примечание: ответы на эти вопросы у меня есть, и даже написан код по этим проблемам. Но он мне не устраивает, из-за того, что работает коряво. Поэтому хочу услышать разные мнения.
1
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||
| 22.02.2025, 20:22 | ||||
|
Первой присваиваешь парный индекс, (0, 0), следующей, которую "клеишь" в зависимости к какому краю, допустим к верхнему (-1,0). using index_type = unsigned; // индексы наших кусочков [0, N-1], N - количество кусочков set<<pair<int,int>, index_type>> map_of_parts; Сортировать по сначала по X, потом по Y. Так в наборе будут идти кусочки ряд за рядом. Сколько будет в ряду кусочков, ты и сам можешь узнать. Добавлено через 3 минуты С X и Y, разберешься. Я тут напутал в примере. Первый индекс у меня отвечает за строки, то есть за Y.
0
|
||||
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
|||
| 22.02.2025, 20:48 | |||
|
1 384 2 192 3 128 4 96 6 64 8 48 12 32 24 16 32 12 48 8 64 6 96 4 128 3 192 2 384 1 В моей реализации, идеальное совпадение это 0 (прям когда все пиксели совпадают), а худшее совпадение это 260100. Я вот перебираю и ищу, с какой стороной это значение меньше всего. Конечно, можно представить переменную Порог и если значение выше этого порога, то значит считаем, что эта сторона не должна ни с кем склеиваться. Именно это я и делал в своем коде. Но данный подход корявый, потому что для одного изображения значение порога норм, но для другого - нет, и нужно брать другой порог...
0
|
|||
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
||
| 22.02.2025, 21:02 | ||
|
Например, представь, что есть такое изображение И допустим мы проверяем верхний левый кусок, а именно его правую сторону, на соответствие. Если мы будем искать всего по двум сторонам, то может быть так, что мы во время проверки столкнемся с куском, который сейчас отображен в верхнем правом углу. Проверка покажет, что правая сторона нашего куска идеально совпадает с левой стороной верхнего правого куска. Однако, правильный кусок это верхний посередине. Т.е. я это к тому, что проверять нужно все стороны и только потом делать выводы.
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 22.02.2025, 21:22 | |||
|
И где то будет ""косяк". Значит нужно подбирать до тех пор, пока косяков не будет. Сколько может быть вариантов? В плохом случае, наверное много. Добавлено через 1 минуту Вообще, на пазлах пишется сколько кусков 200*80, например. Добавлено через 2 минуты А может и нет)) Но там есть картинка. Добавлено через 1 минуту
0
|
|||
|
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
|
||
| 22.02.2025, 22:03 | ||
|
Но ведь с автоматическим определением было бы интереснее. Я вчера даже написал код для авто определения, но опять же все зависит от некой магической константы для порога совпадения, поэтому не всегда размер определяется правильно.
0
|
||
| 22.02.2025, 22:03 | |
|
Решение матричных игр. Есть у кого такая программа написанная уже... Запуск приложений(старых игр) в оконном режиме Алгоритм календаря игр (например в футболе)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат
Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
|
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1)
Сложность: Medium
Источник: LeetCode 380
Задача
Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
|
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли.
Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
|
|
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack
Сложность: Medium
Источник: LeetCode 155
Задача:
Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1).
Методы:
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|