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

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

08.01.2025, 12:45. Показов 45132. Ответов 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
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
25.02.2025, 21:00  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
как понимаю, ты собираешься сравнивать не одну линию граничных пикселей
я хочу увеличить пространство маневра для настройки расчета оценки.

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

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

далее, добавляем файл с логикой задачи:
"task384.h"

что там? - читаем комментарии...

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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#ifndef TASK384_H
#define TASK384_H
/// "task384.h"
///-----------------------------------------------------------------------------
/// ...
///----------------------------------------------------------------------------:
#include <cmath>
#include <iomanip>
 
#include <SFML/Graphics.hpp>
#include "images.h"
 
 
///-----------------------------------------------------------------------------
/// _2Sides.
///-------------------------------------------------------------------- _2Sides:
struct  _2Sides
{       _2Sides(TaskImage const* _a, TaskImage const* _b)
            : a(_a), b(_b)
        {
            do4Similarity();
        }
 
    ///--------------------------------------|
    /// Кто участвует?                       |
    ///--------------------------------------:
    TaskImage const* a;
    TaskImage const* b;
 
    ///--------------------------------------|
    /// Общие оценки для 4 пар сторон.       |
    ///--------------------------------------:
    std::array<int, 4> similarity;
 
    ///--------------------------------------|
    /// Для пары картинок -> 4 пары сторон.  |
    ///--------------------------------------:
    void do4Similarity()
    {   unsigned  cnt{0};
        for(auto& e :   similarity)
        {         e = doSimilarity(cnt++);
        }
    }
 
    using TE = TaskImage::eSIDES;
 
    ///--------------------------------------|
    /// Правила коннекта - "кто с кем?".     |
    ///--------------------------------------:
    inline static    TE  E[4][2]
    {   { TE::UP   , TE::DOWN  },
        { TE::DOWN , TE::UP    },
        { TE::RIGHT, TE::LEFT  },
        { TE::LEFT , TE::RIGHT }
    };
 
    ///--------------------------------------|
    /// Вычисляем оценку по пикселям...      |
    ///--------------------------------------:
    int doSimilarity(const unsigned cnt)
    {
        const Mat2dPixel& matA = a->get(E[cnt][0]);
        const Mat2dPixel& matB = b->get(E[cnt][1]);
 
        int SS{};
 
        for(auto ai  = matA[0].begin(),
                 bi  = matB[0].begin();
                 ai != matA[0].end(); ++ai, ++bi)
        {
            int N1 = int(ai->r) - bi->r; N1 *= N1;
            int N2 = int(ai->b) - bi->b; N2 *= N2;
            int N3 = int(ai->g) - bi->g; N2 *= N2;
 
            SS += N1 + N2 + N3;
        }
 
        return SS;
    }
 
    ///--------------------------------------|
    /// Инфа о том, что происходит...        |
    ///--------------------------------------:
    std::string debug() const
    {
        std::cout << "1. "; l(a->filename)
        std::cout << "2. "; l(b->filename) std::cout << '\n';
 
        unsigned cnt{};
        for(const auto similar : similarity)
        {   std::cout << std::format("[{}, {}]: ",
                                    TaskImage::whatSIDE(E[cnt][0]),
                                    TaskImage::whatSIDE(E[cnt][1])); ++cnt;
                     l(similar);
        }
 
        return "";
    }
};
 
 
///-----------------------------------------------------------------------------
/// Task384.
///-------------------------------------------------------------------- Task384:
struct  Task384 : std::vector<TaskImage const*>
{       Task384(const LoaderImages& imgs)
        {   reserve(imgs.size());
            for(const auto& e : imgs) push_back(&e);
            m.reserve(calcElem(size()));
            go();
        }
 
    ///--------------------------------------|
    /// Все пары, какие только есть ...      |
    ///--------------------------------------:
    void go()
    {
        for    (auto a = cbegin(), END = cend() - 1; a != END   ; ++a)
        {   for(auto b = a + 1;                      b != cend(); ++b)
            {
                m.push_back(_2Sides(*a, *b));
 
                ASSERT((*a)->filename != (*b)->filename)
            }
        }
            ASSERT(calcElem(384) == m.size())
    }
 
private:
    ///--------------------------------------|
    /// Склад для пар сторон.                |
    ///--------------------------------------:
    std::vector<_2Sides> m;
 
    ///--------------------------------------|
    /// Прогноз на кол-во пар.               |
    ///--------------------------------------:
    static unsigned calcElem(unsigned n){ return n * (n - 1) / 2; }
 
    ///--------------------------------------|
    /// Тест разраба.                        |
    ///--------------------------------------:
    TEST
    {
        LoaderImages    images ;
        Task384 task384(images);
/*
        _2Sides _2sides(task384[0], task384[1]);
                _2sides.debug();
*/
        l(calcElem(384) == task384.m.size())
 
        unsigned cnt{};
 
        for(const auto& e : task384.m)
        {
            std::cout << "\n///-------------------------------:"; l(cnt)
            e.debug();
 
            if(++cnt == 4) break;
        }
 
        std::cout << "\n...\n\nВсего таких пар: " << task384.m.size() << '\n';
    }
};
 
#endif // IMAGES_H
запускаем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void tests()
{
/// myl::testfoo_getVSizeWH();
/// CastomFilesCargo ::test();
/// HeroTest         ::test();
/// TaskImage        ::test();
/// TaskImage ::test_4Sides();
/// LoaderImages     ::test();
/// DrawImage        ::test();
    Task384          ::test();
 
    std::unique_ptr<Render> run(new Render);
}
рез:
Code
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
///--------------------------------------|
///      Demo::Pazzle384-ver:0.0.3       |
///--------------------------------------|
 
START ...
 
calcElem(384) == task384.m.size(): 1
 
///-------------------------------:cnt: 0
1. a->filename: ./images/00150.png
2. b->filename: ./images/00255.png
 
[UP   , DOWN ]: similar: 14383629
[DOWN , UP   ]: similar: 166738717
[RIGHT, LEFT ]: similar: 6908512
[LEFT , RIGHT]: similar: 2314404
 
///-------------------------------:cnt: 1
1. a->filename: ./images/00150.png
2. b->filename: ./images/00300.png
 
[UP   , DOWN ]: similar: 11919793
[DOWN , UP   ]: similar: 16343243
[RIGHT, LEFT ]: similar: 211722946
[LEFT , RIGHT]: similar: 1187559
 
///-------------------------------:cnt: 2
1. a->filename: ./images/00150.png
2. b->filename: ./images/00676.png
 
[UP   , DOWN ]: similar: 1996081214
[DOWN , UP   ]: similar: 1272707650
[RIGHT, LEFT ]: similar: 85998193
[LEFT , RIGHT]: similar: 1995314997
 
///-------------------------------:cnt: 3
1. a->filename: ./images/00150.png
2. b->filename: ./images/00923.png
 
[UP   , DOWN ]: similar: 100995157
[DOWN , UP   ]: similar: 34200560
[RIGHT, LEFT ]: similar: 182904581
[LEFT , RIGHT]: similar: 45245498
 
...
 
Всего таких пар: 73536
Royal_X, как видишь, тама твоё любимое квадратичное расстояние ...

можъ скрипт(например на луа) подцепить, чтобы моно интерактивно настройки расчета оценок менять?
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
25.02.2025, 21:11
Цитата Сообщение от ablex Посмотреть сообщение
В данном случае не нужно.
ты прав

без оптимизации на компиляторе g++
без ссылки - 7 инструкций, из затратных - 2 обращения к стеку
с ссылкой - 9 инструкций, 2 обращения к стеку, 2 обращения к памяти по указателю

с оптимизацией О2
без ссылки - работаем только с регистрами
с ссылкой - 2 обращения к памяти по указателю

в обоих случаях, с ссылкой хуже
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
25.02.2025, 21:22  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
ты прав
а ключевое слово const для кого придумали?
ну, яснень, не для сишкошкодеров))
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
25.02.2025, 21:35
Цитата Сообщение от XLAT Посмотреть сообщение
SS += N1 + N2 + N3;
мне кажется, будет переполнение. это же сумма квадратов разностей. Почему не вычислить среднее арифметическое, вместо суммы?

Добавлено через 4 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
а ключевое слово const для кого придумали?
там он никак на производительность не влияет
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
25.02.2025, 21:40  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
далее
архивов по Пазлу-384 больше не будет...



sources + C::B-проект + exe.win64
теперь можно найти на гитхабе: ccыль тут...
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
25.02.2025, 21:44  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
мне кажется, будет переполнение. это же сумма квадратов разностей. Почему не вычислить среднее арифметическое, вместо суммы?
этот вопрос на очереди исследования...
за всё сразу схватиться немасилов...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
25.02.2025, 21:47
Цитата Сообщение от XLAT Посмотреть сообщение
этот вопрос на очереди исследования...
я вот у себя вычисляю среднее арифметическое, причем с делением на каждой итерации, чтобы не было переполнения
просто если делать сумму, то кто-знает, сколько там будет пикселей...

еще я брал 4 компоненты цвета, а не 3. ты тоже можешь добавить альфу. конечно, в моих кусках ее нет, но в будущем, возможно, будет изображение с альфой
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
25.02.2025, 22:17  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
будет переполнение
посмотрим:

1. наш порядок это Ф, которое == 0xFF == 256.
2. порядок это оценка худшего варианта, когда встречается белое с черным.
3. Ф*Ф*3 == 18 разряда.
4. видно что у нас остаётся в запасе 14 разрядов.
5. 14 разрядов это фрагмент размером ~ 16000 пикселей.

но усреднить всё равно это гуд по причине унификации для гуляющих входных наборов...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
25.02.2025, 23:11
Цитата Сообщение от XLAT Посмотреть сообщение
256
макс. разница будет 255, а не 256: 0 это мин, 255 это макс
3 * 255^2 = 195 075
std::numeric_limits<int64_t>::max() это 9223372036854775807

9 223 372 036 854 775 807 / 195 075 ≈ 4.72812 * 10^13

с int64_t всё норм, столько пикселей у тебя не будет

Значит, не нужно использовать плавающие запятые, пусть будет в целых числах. Так будет быстрее.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
26.02.2025, 17:22  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
с int64_t всё норм,
1.
оставил unsigned, потому что:
C++
1
2
3
4
5
6
7
8
9
    ///--------------------------------------|
    /// unsigned ---> max: 4294967296        |
    /// хватит на картинку с сайзом:         |
    /// l(4294967296 / (255 * 255 * 3)) ==   |
    ///                                22017 |
    ///--------------------------------------:
    static unsigned calcMaxSimilar(const unsigned sizePixels)
    {   return 255 * 255 * 3 * sizePixels;
    }
2.
сохраняю во флоуте.
почему?
потому что это вероятность, и я хочу, чтобы она выглядела, как вероятность,
но в процентах,
потому что в дебаге в процентах он приятнее глазу c хвостиком до сотых.

3.
теперь пофик, какой размер сторон фрагмента пазла.
вероятность совпадения не может быть больше 100.

3.
если 100 то это значит что коннекты по сторонам фрагмента полностью совпали.

4.
собрал генератор простых картинок для тестов:
"gen-img.h"
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
#ifndef GENIMG_H
#define GENIMG_H
/// "gen-img.h"
///-----------------------------------------------------------------------------
/// Генератор простых картинок(для настройки глаза Саурона).
///----------------------------------------------------------------------------:
#include <cmath>
#include <SFML/Graphics.hpp>
 
#include "debug.h"
 
namespace tools
{
    ///------------------------------------------------------------------------|
    /// GenData.
    ///---------------------------------------------------------------- GenData:
    struct GenData
    {
        sf::Color  colorA;
        sf::Color  colorB; /// Not used ...
 
        sf::Vector2u Size{123, 47};
    };
 
 
    ///------------------------------------------------------------------------|
    /// ConfigGI.
    ///--------------------------------------------------------------- ConfigGI:
    struct ConfigGI
    {
        std::vector<GenData> data
        {
            {   { 255, 255, 255 },
                {   0, 255,   0 }
            },
            {   {   0,   0,   0 },
                { 255, 255, 255 }
            },
            {   { 255,   0,   0 },
                {   0, 255,   0 }
            },
            {   { 255, 255, 255 },
                {   0, 255,   0 }
            }
        };
 
        std::string dir{"./genTest/"};
 
        static     const ConfigGI& get()
        {   static const ConfigGI  cfg;
            return                 cfg;
        }
    };
 
 
    ///------------------------------------------------------------------------|
    /// GeneratorImages.
    ///-------------------------------------------------------- GeneratorImages:
    struct  GeneratorImages : std::vector<sf::Image>
    {       GeneratorImages(const ConfigGI& _cfg) : cfg(_cfg)
            {   gen();
                countSave = save2file();
            }
 
        unsigned countSave{};
 
    private:
        const ConfigGI& cfg;
        void  gen()
        {
            reserve(cfg.data.size());
 
            for(const auto& data : cfg.data)
            {   emplace_back (sf::Image());
                back().create(data.Size.x, data.Size.y, data.colorA);
            }
        }
 
        unsigned save2file() const
        {   unsigned   cnt{};
            for(const auto& image : *this)
            {  if(!image.saveToFile(getName(++cnt))) return --cnt;
            }
            return cnt;
        }
 
        std::string getName(const unsigned n) const
        {                    std::string     a{std::to_string(n)};
            return cfg.dir + std::string(4 - a.size(), '0') + a + ".png";
        }
 
        TEST
        {   GeneratorImages generatorImages(ConfigGI::get());
 
            std::cout << "generatorImаges сохранил на диске: "
                      <<  generatorImages.countSave << " png-файлов.\a\n\n"
                      << std::endl;
        }
    };
}
 
#endif // GENIMG_H
5.
Тест:
размеры: {123, 47}


размеры: {177, 143}


видно, что теперь оценка от размеров не зависит.

весь код на гитхабе...
2
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
26.02.2025, 18:38
XLAT, а я, когда есть свободное время, размышляю над алгоритмом склеивания.
1
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
26.02.2025, 19:20
Цитата Сообщение от Royal_X Посмотреть сообщение
ты прав
Блин, я думал ты будешь спорить
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
26.02.2025, 19:27
Цитата Сообщение от ablex Посмотреть сообщение
я думал ты будешь спорить
Не ну если ты прав, чё там спорить. И вообще, я сложно представляю споры по темам типа "чему равно 2+2", т.е. когда всё очевидно. Споры рождаются в темах совсем иной масти, например, "что такое трехмерный массив в С++" )))
0
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
26.02.2025, 19:36
Цитата Сообщение от Royal_X Посмотреть сообщение
я сложно представляю споры по темам типа "чему равно 2+2"
Читая форум, и не такое встречается.
Крч, вот ссылки (в которых другие ссылки), которые я хотел кинуть, если бы ты стал спорить. Или не спорить, а что-то типа

(да, я ленивая жопа и сам не стал бы ничего писать).
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
26.02.2025, 23:32
XLAT, я тоже сделал как ты: чтобы не выбирать количество столбцов и строк вручную, теперь можно выбрать из списка. Список генерируется на основе количества кусков.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
27.02.2025, 01:06  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
теперь можно выбрать из списка
всего рассчитанно оценок для 73536 пар, по 4 оценки в каждой.

но для задачи-384 с расположением фрагментов по 24 x 16
нужно всего 728 пар с одной оценкой,
...
C++
1
2
3
4
5
6
    ///--------------------------------------|
    /// Получить кол-во соединений для W x H.|
    ///--------------------------------------:
    inline unsigned getN4Size(const sf::Vector2u WH)
    {   return (WH.x - 1) * WH.y + (WH.y - 1) * WH.x;
    }


т.е. 73536 * 4 - 728 оценки будут ложными.

т.е. нужно выбрать именно те 728 оценки из 294144 всего рассчитанных.


кстати, с оценками ещё не покончено,
прогнозирую необходимость интегральной оценки для 4 сторон сразу...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
27.02.2025, 01:14
Цитата Сообщение от XLAT Посмотреть сообщение
с расположением фрагментов по 24 x 16
уже писал, но повторю
Цитата Сообщение от Royal_X Посмотреть сообщение
у оригинальной картинки 16 кусков по ширине и 24 по высоте, а у тебя наоборот
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
27.02.2025, 01:31
Цитата Сообщение от XLAT Посмотреть сообщение
384
эти куски очень мелкие, 32х32, поэтому не уверен, что сравнения всех 4 сторон будет достаточно, тут нужно всю сетку уже оценивать. Но перебирать 384! есесена не получится. Т.е. проблема не в том, что кусков много, а в том, что они низкого разрешения. Я пробовал алгоритмы Краскала и Прима (те самые, что для генерации лабиринтов еще используют), но они тоже не помогли.

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

0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
27.02.2025, 02:08  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
уже писал, но повторю
уже писал
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6283 / 3007 / 1051
Регистрация: 01.06.2021
Сообщений: 11,261
27.02.2025, 02:10
XLAT, я тебя понимаю, но картинка будет перевернутой. На сиськи нужно смотреть с правильного ракурса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2025, 02:10

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
880
Закрытая тема Создать тему
Новые блоги и статьи
[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
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru