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

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

08.01.2025, 12:45. Показов 52894. Ответов 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
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
17.01.2025, 17:59  [ТС]
Студворк — интернет-сервис помощи студентам
модель подключилась в wxWidget как по маслу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void Text::OnPaint(wxPaintEvent& event)
{
    wxPaintDC dc(this);
 
    Log(field == nullptr)
 
    if( field == nullptr)
    {   cfg = minesweeper::startGame();
    
        Log(cfg.W)
        Log(cfg.H)
        
        minesweeper::openAll(); /// Читерская ...
 
        field  = new view::Field(cfg.W, cfg.H);
    }
 
    std::vector<unsigned> m = minesweeper::getVisual();
 
    Log(m.size() != cfg.W * cfg.H)
 
    field->render(m, dc);
 
...
что касается view::Field(cfg.W, cfg.H), то оно обобщенное - ему пофик какое поле выводить,
от сапера или шахмат или морского боя или ...



Цитата Сообщение от CoderHuligan Посмотреть сообщение
Если бы я делал на сишке, то уже сделал бы.)) Эх..
мне вот Royal_X тоже подсуетил wxWidget, тоже стонаю, но делаю.

на SFML уже бы давно бы сделал))
2
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
17.01.2025, 18:07
Цитата Сообщение от XLAT Посмотреть сообщение
но делаю
"Надоть, так надоть".
Цели поставлены, инструменты определены, а дальше терпение. Я еще параллельно Шилдта читаю)).
1
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
17.01.2025, 18:10  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я еще параллельно Шилдта читаю))
а я чуть было вам не написал:

Закодить Сапёра это вам не книжки читать...
))
0
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
17.01.2025, 18:51
Цитата Сообщение от XLAT Посмотреть сообщение
Закодить Сапёра это вам не книжки читать...
Естественно. Я ж говорю: на Си пожалуйста, тут как бы я в своей стихии, но плюсы дело другое. Тут много нюансов. Я сейчас вот думаю куда настройки сохранять.В dat файл? С реестром я знаю как работать, но сомневаюсь, что это будет работать везде. Лучше dat.Сохранять в текущей директории. Если файл отсутствует создавать по умолчанию.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,184
17.01.2025, 19:04
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я ж говорю: на Си пожалуйста, тут как бы я в своей стихии, но плюсы дело другое.
На С++ можно писать точно так же, как и на С. В чем проблема?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Лучше dat
Хорошая идея. Можно создать бинарный файлик. Потом можно даже сжать https://learn.microsoft.com/en... compressor
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
17.01.2025, 19:11  [ТС]
Royal_X,
как вызвать событие(wxWidgets) для метода перерисовки окна OnPaint(wxPaintEvent& event)?

- клик по окну должен перерисовать окно.

заюзал
C++
1
this->Refresh();
но окно от него дьявольски моргает, хотя и перерисовывает ...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,184
17.01.2025, 19:15
XLAT, ты вообще на чем рисуешь? Что за контрол?

XLAT, тебе нужно было рисовать на wxStaticBitmap. У данного контрола есть функция SetBitmap, которая может получать в качестве аргумента, в том числе, твой wxImage.

XLAT, посмотри на красную стрелку.
Миниатюры
Совместное создание игры  
1
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
17.01.2025, 19:26
Цитата Сообщение от Royal_X Посмотреть сообщение
В чем проблема?
Можно. Но я именно не хочу писать в стиле C, в этом и есть смысл проекта. Я же учу С++. Поэтому буду писать на нем в ООП стиле.))
Цитата Сообщение от Royal_X Посмотреть сообщение
Можно создать бинарный файлик.
Конечно.Сейчас уже пишу класс для обработки параметров.
1
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
17.01.2025, 19:31  [ТС]
Royal_X,
правильно ли я понял, что в wxWidgets нет способа программно вызвать событие для OnPaint ?

Цитата Сообщение от Royal_X Посмотреть сообщение
посмотри на красную стрелку.
с кликом у мя всё ок.

мне нужно генерить событие для рисования.

Цитата Сообщение от Royal_X Посмотреть сообщение
SetBitmap
я никуда не спешу это на по позже - а щас мне нужно программное событие.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,184
17.01.2025, 19:31
XLAT, попробуй Update, должен мгновенно перерисовывать. Но чёт ты делаешь не то. На окне что-ли рисуешь?
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
17.01.2025, 19:37  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
На окне что-ли рисуешь?
окно wxFrame.
почему нельзя?

всё работает тока моргает...

мошъ двойную буферизацию присобачить?)))

Цитата Сообщение от Royal_X Посмотреть сообщение
попробуй Update, должен мгновенно перерисовывать.
ваще никак не перерисовывает.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,184
17.01.2025, 19:38
Цитата Сообщение от XLAT Посмотреть сообщение
всё работает тока моргает...
земля тоже дрожит, когда мины взрываются
Цитата Сообщение от XLAT Посмотреть сообщение
мошъ двойную буферизацию присобачить?)))
спрайты по отдельности не рисуй на окне. Собирай одно изображение, а потом рисуй его на окне.
1
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
18.01.2025, 07:11
Royal_X, а подобное можешь сделать?

1
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
18.01.2025, 08:59  [ТС]
Цитата Сообщение от gunslinger Посмотреть сообщение
а подобное можешь сделать?
вот это правильная прелюдия к правильному вопросу - одобряю)
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,184
18.01.2025, 12:05
gunslinger, ну ничего сложного там не вижу. И видно, что там даже не 3д, а имитация.
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
18.01.2025, 12:53
Это бонусный уровень сеговской игры (которая полностью весила "всего" около 2 MB, если не ошибаюсь) 30-летней давности.
Даже сейчас смотрится ок, не говоря уж про то время.
Вечная мечта сделать такое "с нуля", но дальше мечты не продвинулся.
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
18.01.2025, 13:44  [ТС]
Цитата Сообщение от gunslinger Посмотреть сообщение
весила "всего" около 2 MB
Цитата Сообщение от gunslinger Посмотреть сообщение
сделать такое "с нуля"
опять не в ту степь)

1. не нужно с нуля.
2. только нормальные текстуры(которые не стыдно показать) будут весить больше.
3. под конкретную железку можно и гвоздями прибивать, а так нужно к весу игрульки прибавлять вес эмулятора.


Цитата Сообщение от Royal_X Посмотреть сообщение
спрайты по отдельности не рисуй на окне. Собирай одно изображение, а потом рисуй его на окне.
по сути это пародия на двойную буферизацию.
потому что подразумевает копирование.

в общем я так и сделал:
1. создал буферную битмапу
2. туда рисовал.
3. копировал на wxFrame
так:
C++
1
2
dc.Blit(0,0, dc.GetSize().GetWidth (),
             dc.GetSize().GetHeight(), &m_DoubleBufferDC, wxCOPY, 0);
или так:
C++
1
dc.DrawBitmap(m_DoubleBuffer, 0, 0, true);
4. моргание не исчезало, пока в конструкторе от wxFrame не добавил:
C++
1
this->SetDoubleBuffered(true);
5. теперь не моргает - проблема решена.

6. почему пародия? должен быть swap между буферами с константным временем исполнения на пару тактов проца.
0
place status here
 Аватар для gunslinger
3192 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,028
18.01.2025, 13:45
С нуля интересней (наверно). Хотя кому как.
Насчет текстур не знаю, там вроде ничего такого особо нет, кроме моделей персонажей.
А к размеру игры на ПК тогда нужно добавить размер установленной ОС.
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
18.01.2025, 13:51  [ТС]
Цитата Сообщение от gunslinger Посмотреть сообщение
А к размеру игры на ПК тогда нужно добавить размер установленной ОС.
я про то что для ремейка текущие технологии это отлично.
после готовности у вас ещё появится полезный опыт,
который можно продолжить применять в полезных начинаниях)

а вы, я как полагаю, хотите прямо повторить на ассемблере сеги той модели))
0
 Аватар для Наталья8
640 / 404 / 68
Регистрация: 09.03.2016
Сообщений: 4,431
18.01.2025, 14:20
Цитата Сообщение от gunslinger Посмотреть сообщение
Вечная мечта сделать такое "с нуля"
Это ювелирная была работа. А не гвоздями.
А сейчас это будет ещё и неблагодарная работа.
(Наверное они этим способом деньги зарабатывали)
Кстати, все спрайты можно найти в интернете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2025, 14:20

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
320
Закрытая тема Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru