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

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

08.01.2025, 12:45. Показов 49497. Ответов 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
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 14:11
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от XLAT Посмотреть сообщение
поэтому ООП требуется.
Каждая клетка это объект. Смайлик - объект. Часы - объект. Индикатор количества мин - объект. Меню тоже. Для меня нет абстрактных объектов, которые нельзя "пощупать", по крайней мере пока. Объект имеет состояние. Объект может посылать сообщения другим объектам. Весь цимус состоит в том, как отслеживать общее состояние игры. Создать класс "игрок", я думаю. Ну, ладно по ходу видно будет.

Добавлено через 6 минут
Цитата Сообщение от KSergey9 Посмотреть сообщение
Хотя бы игровое поле уже рисуется? пара дней уж прошла.
Я еще не приступал. Пока в голове всё устаканивается. Я не спешу. Еще хотелось бы, чтобы окно можно было бы увеличивать и уменьшать. Масштабировать. В оригинальной игре жестко привязано к одному размеру. Поэтому тут спрайты не подойдут, нужна векторная графика.
Писать буду в visual studio 10 professional, которая у меня стоит. Сегодня, ладно уж, создам проект и начну.
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 14:12  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Тогда было бы больше шансов подорваться.
тут проблема скатывание в компетенцию геймдиза,
вам - мне не нужно забывать: мы всего лишь кодеры
и не нужно лезть в дела геймдизайнера,
наша-ваша цель это предоставить геймдизу такой конфиг, который бы он сам, по своему усмотрению решил бы настроить
для лучшей по его мнению играбельности.

т.е. отличаем кодера от разных художников и дизайнеров и т.п..
это разные профессии...

этим товарищам нужно всего лишь предоставить интерфейс для угодной им настройки игрового процесса.

но важный момент: ничего не нужно щас усложнять - только обозначить кодом общие принципы и технологии...
1
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
10.01.2025, 14:14
Цитата Сообщение от CoderHuligan Посмотреть сообщение
как отслеживать общее состояние игры.
Создать класс "игрок", я думаю.
"игра"
"Игрок" - это объект, который посылает сигналы про нажатия.

Добавлено через 1 минуту
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Пока в голове всё устаканивается.
"Устаканивается в голове" - это прокрастинация.
Схемка на бумажке (и кучка в мусорке) - это результат реальной работы.
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 14:20  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
Схемка на бумажке (и кучка в мусорке) - это результат реальной работы.
обожаю сишкошкодеров,
аш кушать не могу!
))
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 14:32  [ТС]
как читается разный код:

Cи-программа, написана просто и быстро, процедурный стиль, сплошные void*:

С++ программа, написана сложно и долго, продуманная архитектура:
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 16:20  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
Хотя бы игровое поле уже рисуется?
это "стандартная" рутина:
примерно так:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
///----------------------------------------------------------------------------|
/// C++20
/// хеллоуворлд: Тест поля.
///----------------------------------------------------------------------------:
#include <iostream>
#include <sstream>
#include <vector>
 
///----------------|
/// Лог в консоль. |
///----------------:
#define log(a) std::cout << #a << ": \n" << (a) << '\n';
 
///----------------------------------------------------------------------------|
/// Модуль игровой логики.
///----------------------------------------------------------------------------:
namespace game
{
    ///------------------------------------------------------------------------|
    /// Ячейка поля.
    ///------------------------------------------------------------------------:
    struct Cell
    {
        void setVisual(unsigned n)
        {   if(n >= data.size()) throw "ERROR CODING!";
            visual = n;
        }
 
        char getVisual() const
        {   return data[visual];
        }
 
    protected:
        unsigned    visual{0};
        std::string data  {"0.2345"};
    };
 
    using array1D = std::vector<Cell>   ;
    using array2D = std::vector<array1D>;
 
    ///------------------------------------------------------------------------|
    /// Поле.
    ///------------------------------------------------------------------------:
    struct  Field : array2D
    {       Field(size_t W, size_t H) : array2D(H, array1D(W))
            {
            }
 
        ///----------------------------------------|
        /// Дебаг.                                 |
        ///----------------------------------------:
        std::string debug() const
        {   std::stringstream o;
            for    (const auto& row  : *this)
            {   for(const auto& cell : row  )
                {   o << cell.getVisual();
                }   o << '\n';
            }
            return o.str();
        }
 
        ///----------------------------------------|
        /// Ручной тест.                           |
        ///----------------------------------------:
        static void test()
        {   ///------------------------------------|
            /// Создаем поле.                      |
            ///------------------------------------:
            Field field(21, 11);
 
            ///------------------------------------|
            /// Устанавливаем ячейку.              |
            ///------------------------------------:
                  field[5][10].setVisual(1);
 
            ///------------------------------------|
            /// Вывод поля в лог.                  |
            ///------------------------------------:
              log(field.debug());
 
            ///------------------------------------|
            /// Тест исключения на ошибку кодера.  |
            ///------------------------------------:
                  field[0][0].setVisual(666);
        }
    };
}
 
///----------------------------------------------------------------------------|
/// Старт.
///----------------------------------------------------------------------------:
int main()
{
    std::cout << "Hello, Field!" << std::endl;
 
    try
    {   ///----------------|
        /// Запускаем тест.|
        ///----------------:
        game::Field::test();
    }
    catch(const char* error)
    {   ///----------------|
        /// Ошибки кодера. |
        ///----------------:
        std::cerr << error << '\n';
    }
}
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 17:02
Можно добавить в игру дополнительные плюшки. Например ввести бальную систему поощрения. При этом допускается подорваться на мине с последующим снижением количества баллов. Что-то типа такого. Если игрок доходит до конца с положительным числом баллов, то выигрывает, если с отрицательным, проигрывает. За каждый успешный шаг начисляется балл.

Добавлено через 16 минут
Короче всю инфу по проекту буду выкладывать у себя в блоге.
1
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
10.01.2025, 19:16
Цитата Сообщение от XLAT Посмотреть сообщение
это "стандартная" рутина:
примерно так:
Без GDI+ нещитово!
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
10.01.2025, 19:22
CoderHuligan, ты на какой стадии? Смог уже достичь до этапа, что можешь выводить любой тип клетки (мина, цифра, пустота, трава, трава с флагом) на любом месте поля?

Добавлено через 2 минуты
Как-то долго делаете сапер...
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 19:51  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
GDI+
GDI+ это ооп'нутая библа.
как же так - вы же запретили себе ооп?
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
10.01.2025, 20:00
Цитата Сообщение от Royal_X Посмотреть сообщение
ты на какой стадии? Смог уже достичь до этапа, что можешь выводить любой тип
Не смешно.

Добавлено через 26 секунд
Я страуса читаю))
1
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 20:08  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
Как-то долго делаете сапер...
гавнокодерный сапер уже как 5 лет назад был готов.
Цитата Сообщение от Vladymyr_2020 Посмотреть сообщение
Мне нужно без структур и без классов
хочешь меня опередить - садись в машину времени и дуй в прошлое ...
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
10.01.2025, 20:20
Цитата Сообщение от XLAT Посмотреть сообщение
как же так - вы же запретили себе ооп?
Чета я такого не помню.

Цитата Сообщение от XLAT Посмотреть сообщение
GDI+ это ооп'нутая библа.
Да не, это обычное Win API, обычные функции.
Но для для красоты вокруг неё сделали ООП обертку для С++.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
10.01.2025, 20:23
CoderHuligan, пока вы прокрастинировали, а я игру создал на WinAPI.
Используется GDI+. Программа корректно работает с любым разрешением монитора, т.к. используются dpi независимые размеры.
Играть можно с помощью стрелок или WASD. Можно ускорить падение, как в тетрисе. Стоящие друг на друга блоки при получении суммы 10 исчезают. Черный блок бесполезен, его цель только, чтобы помешать. Его можно убрать, если на нем взорвать другие блоки.

Вложения
Тип файла: zip Numix.zip (101.1 Кб, 21 просмотров)
2
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 20:31  [ТС]
Royal_X,
сразу +1 за архив, даже если он пустой))

Цитата Сообщение от KSergey9 Посмотреть сообщение
для красоты вокруг неё сделали ООП обертку для С++
ага, так почему вы тогда так боитесь ооп?
тем более, если он красивый.

я вот щитаю, что код нужно писать красивый, а не гавнокод...
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
10.01.2025, 20:37
Цитата Сообщение от XLAT Посмотреть сообщение
так почему вы тогда так боитесь ооп
Я не согласен, когда используют ООП там, где оно неуместно. В таких случаях, ООП только захламляет и усложняет код.
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 20:38  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
хочешь меня опередить - садись в машину времени и дуй в прошлое ...
Royal_X, это я не к Vladymyr_2020'у писал - это я тебе писал))
смотри там ссылочка на тред с датой.
0
10.01.2025, 20:45

Не по теме:

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

0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,240
Записей в блоге: 3
10.01.2025, 20:53  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
а прикинь я поеду в прошлое, но из-за эффекта бабочки ты станешь женщиной
ты не шаришь в теории хаоса - для эффекта бабочки нужно >1 лям лет...
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
10.01.2025, 20:59
Цитата Сообщение от XLAT Посмотреть сообщение
гавнокодерный сапер уже как 5 лет назад был готов.
это не так работает

в Google Play есть тысячи саперов, тысячи 2048, тысячи крестиков-ноликов и т.д. Но некоторые имеют хорошее количество закачек, а их разрабы получают неплохие деньги. Хотя, среди этих тысяч игр найдутся те, которые в разы лучше этих нескольких популярных, однако, их кроме разрабов и их мам, никто не скачивает.

Закон Мойши гласит, что успешный человек делает говнокодерную игру и тратит на рекламу этой игры несколько десятков тысяч баксов. Потом эта игра становится игрой номер 1 или номер 2 Google Play и получает многомиллионные загрузки. В итоге, первоначальные траты на рекламу полностью окупаются, а чел только богатеет и богатеет, ничего не делая. Эта история о том, что школьник, который создал говно-игру, не зная программирования, поимел всех умных разрабов. Потом на вторую игру не нужно тратиться так много на рекламу. Он уже имеет популярный аккаунт разраба. Данная техника применима любому виду зароботка в интернете, начиная от блогеров ютюба, заканчивая кисками онлифанса.

Не по теме:

Цитата Сообщение от XLAT Посмотреть сообщение
ты не шаришь в теории хаоса - для эффекта бабочки нужно >1 лям лет...
я найду твою маму и мы договоримся без ляма) Посоветую ей не рожать сыновей. Надеюсь ты понимаешь, что предложив мне машину времени, все обернулось против тебя)))
Или сделаю еще лучше. Скажу ей, чтобы отдала сына в балет. Будет Хлат - лебединого озера балеринчик.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2025, 20:59

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Закрытая тема Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru