Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3

Совместное создание игры

08.01.2025, 12:45. Показов 46011. Ответов 942
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
 Комментарий администратора 
Обсуждение вынесено из темы Ищу человека для совместного изучения программирования


Цитата Сообщение от Royal_X Посмотреть сообщение
Вот на моем неигровом ноуте последний UE без проблем запускается и не тормозит даже.
ок.
если ТС готов варганить со мной сапера, то я сделаю ещё одну попытку его(пожалуй 4 версию) установить и испытать.

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

и больше ничаво.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2025, 12:45
Ответы с готовыми решениями:

Для чего создан язык С++?
Для чего создан язык С++????

создан массив
создан массив автовладельцев, для каждого известны Ф.И.О., номер, адрес...,Выяснить есть ли автовладельцы у которых имеются больше 1-ой...

Теория игр, массивы
Есть задание (прикрепил его в виде файла к сообщению). Есть решение для 12-ого варианта на BORLANDC, у меня 2-ой. Я изменил в начале...

942
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6309 / 3031 / 1053
Регистрация: 01.06.2021
Сообщений: 11,512
08.01.2025, 18:32
Студворк — интернет-сервис помощи студентам
CoderHuligan, вот туториал
https://ravesli.com/sozdayom-igru-sapyor-v-s-sfml/
И таких в инете полно. Так что, создать можно быстро. Ну если разраб никогда не слышал о данной игре, возможно, за час и не справится, хз.

А вот сделать на винапи, например, вообще не проблема. И, кстати, имхо gdi+ это единственный оптимальный выбор. Я его всегда использую, ибо gdi много чего не поддерживает: прозрачность, сглаживание и т.д. А вот погружаться во всякие DirectX это перебор.


CoderHuligan, только когда будешь делать на винапи, в частности на gdi+, то пожалуйста рассчитывай размеры правильно, и включи dpi поддержку в манифесте. А то потом на устройствах с высоким разрешением монитора игра будет уродливой. Вот у меня OLED дисплей и все проги, которые это не учитывают, размыты...

Единственный минус gdi+ это отсутствие аппаратного ускорения. Хотя, если рисовать в буфере, то и без нее все очень быстро.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
08.01.2025, 19:02
Royal_X, спасибо, учту.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
08.01.2025, 19:59  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
SFML поддерживает трубы - каналы?
зачем ему трубы если у него есть сокеты?
сокеты будут покруче труб)
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6309 / 3031 / 1053
Регистрация: 01.06.2021
Сообщений: 11,512
08.01.2025, 20:16
Цитата Сообщение от XLAT Посмотреть сообщение
сокеты будут покруче труб
...в той же степени, в которой sfml эталон Когда нет грузовика, чтобы дрова развозить, можно и в салон ламборгини закинуть.

Добавлено через 2 минуты
XLAT, создай мне тогда на сокетах попугая командной строки. Хочу увидеть эту порнографию. Только делай так, чтобы брандмауэр не блокировал шнягу.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
08.01.2025, 20:27  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
попугая
я глянул бенчмарк - все путем
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 10:06
Цитата Сообщение от Royal_X Посмотреть сообщение
Хотя, если рисовать в буфере, то и без нее все очень быстро.
Там же почти отсутствует анимация. Смайлик не в счет. Я вот никак не могу понять алгоритм открытия пустых регионов на поле когда игрок выбирает пустую клетку. В чем прикол так и не могу понять.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6309 / 3031 / 1053
Регистрация: 01.06.2021
Сообщений: 11,512
10.01.2025, 11:17
CoderHuligan,

Если под открытой ячейкой мины нет, то в ней появляется число, показывающее, сколько ячеек, соседствующих с только что открытой, «заминировано» (в каждом варианте игры соседство определяется по-своему); используя эти числа, игрок пытается рассчитать расположение мин, однако иногда даже в середине и в конце игры некоторые ячейки всё же приходится открывать наугад. Если под соседними ячейками тоже нет мин, то открывается некоторая «не заминированная» область до ячеек, в которых есть цифры.
Я так понимаю, в правилах не сказано, сколько пустых нужно открывать. Надо, в инете лучше попытаться найти описание процесса оригинального сапера.
Наверное, глупо открывать все клетки, в которых пусто (нет мин и нет цифр). Возможно, нужно ставить какой-то лимит
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 11:38
Цитата Сообщение от Royal_X Посмотреть сообщение
в правилах не сказано, сколько пустых нужно открывать.
Вот именно. И в инете сколько гуглил ничего внятного не нашел. Короче каждый изголяется как сам понимает. Естественно должен быть лимит на открытие, иначе могут открыться все пустые. Я пытаюсь понять играя в оригинального сапера, но до сих пор логика не ясна. Наверно нужно дизассемблировать оригинальный алгоритм, если точно надо скопировать поведение. Иначе придется изобретать свой подход.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6309 / 3031 / 1053
Регистрация: 01.06.2021
Сообщений: 11,512
10.01.2025, 11:53
CoderHuligan, возможно лимит рандомный. Порой открывается много, а порой пару штук, хотя пустых клеток много рядом
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 11:59
Цитата Сообщение от Royal_X Посмотреть сообщение
возможно лимит рандомный.
Я тоже так думал. Сейчас кажется дошло, что открываются только те клетки, в окружении которых нет мин. Вроде так.

Добавлено через 2 минуты
Цитата Сообщение от CoderHuligan Посмотреть сообщение
в окружении которых нет мин
Плюс те клетки, которыми ограничен вот это пустой регион, т.е. клетки с цифрами.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6309 / 3031 / 1053
Регистрация: 01.06.2021
Сообщений: 11,512
10.01.2025, 12:07
CoderHuligan, то, что открытая пустая клетка не может граничить с миной - это ясно, иначе там была бы цифра. Ну то есть, пустые открытые не должны граничить с цифрами?
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
10.01.2025, 12:32  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я вот никак не могу понять алгоритм открытия пустых регионов на поле когда игрок выбирает пустую клетку. В чем прикол так и не могу понять.
прикол в том,
что для игрока открытие этих клеток РУТИННАЯ задача,
т.е. такая задача для которой не требуется мыслительных напряжений,
поэтому алгоритм УБИРАЕТ РУТИНУ с их открытием, просто открывая их все сразу.

отсюда один интересный момент,
желательна хитрая генерация минного поля без полного открытия безминных зон за один раз,
ну, что бы интереснее был холодок у игрока.

но это нюанс, можно забить пока.

касаемо клеток, ну, обычно их открытие кодят рекурсивно,
но можно тут и поумничать)
0
 Аватар для Annemesski
2689 / 1346 / 485
Регистрация: 08.11.2016
Сообщений: 3,734
10.01.2025, 12:47
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Наверно нужно дизассемблировать оригинальный алгоритм
а можно не надо? Что там непонятного? Оригинальный сапер открывает все возможные клетки от текущей нажатой, алгоритм как три копейки:
1 копейка) открывается текущая нажатая клетка и от нее обходятся по порядку все оставшиеся 8 соседних клеток
2 копейка) если в клетке 0, то есть как факт ноль или число в клетке полностью компенсировано расставленными флажками бомб - значит клетка автоматически открывается, при этом если флажки расставлены ошибочно игрок взрывается на автоматически вскрытой клетке с миной не помеченной флажком (клетки помеченные флажком не вкрываются ни автоматически ни при нажатии.
3 копейка) каждая автоматически открытая клетка является центром нового каскада вскрытия соседних клеток.

Плюс это часть алгоритма вскрытия соседей: если в оригинальной игре нажать на клетку обеими клавишами мыши, то происходит попытка вкрытия всех соседних с ней клеток и если все мыны вокруг клетки помечени флажком происходит автоматическое вскрытия не помеченных клеток.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 13:18
Цитата Сообщение от Royal_X Посмотреть сообщение
Ну то есть, пустые открытые не должны граничить с цифрами?
С цифрами - могут, с минами - нет.
Цитата Сообщение от XLAT Посмотреть сообщение
алгоритм УБИРАЕТ РУТИНУ с их открытием, просто открывая их все сразу.
Не только это. Это еще и подсказка игроку, так как пустой регион имеет границу, которая состоит из клеток с цифрами (не равными 0).
Цитата Сообщение от XLAT Посмотреть сообщение
желательна хитрая генерация минного поля без полного открытия безминных зон за один раз,
ну, что бы интереснее был холодок у игрока.
Это имеет смысл если уровень сложности максимален.
Цитата Сообщение от XLAT Посмотреть сообщение
касаемо клеток, ну, обычно их открытие кодят рекурсивно,
но можно тут и поумничать)
Я бы сделал по своему, через список. Но это уже детали. Вообще если все делать в лоб, то тут ничего особо сложного нет. Мне интересна архитектура данного проекта. Игра сама по себе меня мало интересует. Интересует организация кода и алгоритмы. К примеру игровое поле можно представить в виде матрицы, а в ячейках числа определяющее состояние каждой ячейки. а можно загнать все клетки в список и обрабатывать уже его. Но даже не это главное. Ведь делать то надо на плюсах, а тут нужно тотальное ООП. Как это сделать через объекты? Что считать объектом, а что нет? Вот что интересно. Так как я в c++ пока не очень силен, но в общих чертах, понимаю как ооп тут работает, поэтому хочется именно через классы сделать. В лоб не интересно.
1
 Аватар для Annemesski
2689 / 1346 / 485
Регистрация: 08.11.2016
Сообщений: 3,734
10.01.2025, 13:25
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это еще и подсказка игроку
нет там никакой подсказки, КСЛАТ правильно сказал - это только рутина, эффект ровно такой же как если бы игрок ручками открывал каждую клетку в отдельности с учетом того что в "пустых" клетках просто бы открывалась цифра ноль.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
10.01.2025, 13:35
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Наверно нужно дизассемблировать оригинальный алгоритм
"сапёр онлайн"
Куча сайтов с готовый реализацией нагугливается. Можно посмотреть что как сделано и вообще на С++ забить, раз в вебе всё можно это напрограммировать
Нагляднее, прикольнее

Добавлено через 3 минуты
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Что считать объектом, а что нет?
Да пофик.
Для сапёра вообще ООП не требуется.
А если для поупражняться - то любое ООП сгодится, ибо в любом варианте ООП-представления будут как удобства, так и грабли.
Так сделать, сяк сделать - будет понятно где какие плюсы-минусы. Пока не сделаешь до конца несколько вариантов - не узнаешь (и не скажет никто) где что лучше, а где что нет.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 13:49
Цитата Сообщение от Annemesski Посмотреть сообщение
эффект ровно такой же как если бы игрок ручками открывал каждую клетку в отдельности
Тогда было бы больше шансов подорваться. Игра стала бы менее интересной. Ведь в обычных играх алгоритм хотя бы чисто теоретически позволяет игроку выиграть, если он не будет ошибаться. В данной игре это не так, вернее не всегда так. Тут иногда на удачу надо открывать.
Цитата Сообщение от KSergey9 Посмотреть сообщение
Куча сайтов с готовый реализацией нагугливается.
А я конечно нагуглил. Один проектик на чистом си даже проштудировал. Но конечно посмеялся, от того как он реализован, но интересно было. Я бы по своему сделал, не так как там, вообще по другому. Там SDL использовалась, а я хочу на gdi+ и на с++.
Цитата Сообщение от KSergey9 Посмотреть сообщение
Для сапёра вообще ООП не требуется.
Понятное дело, что можно ВСЁ сделать без ооп. Но хочется именно через ооп)) Ну вот такой у меня бзик. Причем понимаю, что медленнее работать будет (скорее всего). Я вот смотрю на то, как реализовано ооп в gdi+, и думаю, что вот он пример правльной архитектуры объектно-ориентированной библиотеки, когда наследование используется редко и только там, где оно действительно нужно, а каждый класс по сути самостоятелен.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
10.01.2025, 13:59  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
Для сапёра вообще ООП не требуется.
в моем случае сапер это часть абстракции,
абстракция же подразумевает наличие множества:
- сапер
- тетрис
- морской бой
- арканоид
- про шарики в ряд и не в ряд - 100500 всех видов
- ещё 100500 вариантов из пространства для геймдизайнера
- ...

поэтому ООП требуется.

тупо тут можно выйти на движок, но движок из игровой логики, без погружение в низкоуровневую канализацию...

короче это не движок, скорее общий шаблон...
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 14:00
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Но хочется именно через ооп))
И так, как лично я понимаю это ооп)).
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
10.01.2025, 14:00
Цитата Сообщение от CoderHuligan Посмотреть сообщение
хочу на gdi+ и на с++.
Хотя бы игровое поле уже рисуется? пара дней уж прошла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2025, 14:00

Решение матричных игр. Есть у кого такая программа написанная уже...
Требуется программа по решению матричных игр... С выбором размера матрицы и выдачей решения... Может кто смогёт такую сбатцать?

Запуск приложений(старых игр) в оконном режиме
День добрый, подскажите, хотелось бы реализовать свое желание запуска старых игр windo`вых(типа StarCraft) в оконном режиме, с чего начать,...

Алгоритм календаря игр (например в футболе)
необходимо составить календарь футбольных матчей, допустим есть 6 команд char *teams = {"TEAM A","TEAM B","TEAM...

Движок для игр
Всем привет!!!, хотел узнать возможно ли создать движок на C++ чтобы экспортировать модели из 3ds max а после в самом движке можно было...

Выбор IDE для создания 2D игр
Здравствуйте. Задача сделать пака 2ух – мерные драчки загружая в проект анимацию-как удар(ы) и реакция на удар...(лучше всего секвенцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 02.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru