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

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

08.01.2025, 12:45. Показов 45210. Ответов 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
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
22.02.2025, 23:08
А ещё в реальных пазлах есть внешние грани)
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
22.02.2025, 23:42
Цитата Сообщение от SmallEvil Посмотреть сообщение
А ещё в реальных пазлах
реальные пазлы меня не интересуют. Там вообще не прямоугольные тайлы.

И на то есть причина. В реальнах пазлах тайлы должна цепляться друг за друга, иначе ребенок будет долго плакать)
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
23.02.2025, 03:01
Цитата Сообщение от Royal_X Посмотреть сообщение
иначе ребенок будет долго плакать)
Кликните здесь для просмотра всего текста

Согласен))

Добавлено через 2 часа 45 минут
Пока настраивал SDL3 и SDL_image - утомился.
Попробую завтра. Стало интересно, где ж тут сложность, склеить картинку?
3
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
23.02.2025, 03:04
SmallEvil, я тогда новые куски выложу. С 384 кусками 32х32 будет сложновато.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.02.2025, 09:21
В общем случае задача не имеет решения, если вся картинка однотоновая или только её часть. То есть неясно в каком направлении склеивать если более 1 стороны будут залиты одним цветом. Задача упрощается если мы заранее знаем исходные размеры целого изображения, но даже в этом случае могут быть ситуации,когда выбор не будет однозначным.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
23.02.2025, 10:53
SmallEvil, вот куски для проверки

в архиве две папки: в одной квадратные куски, в другой прямоугольные
Вложения
Тип файла: zip images.zip (2.16 Мб, 16 просмотров)
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
23.02.2025, 15:23  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
У меня пока голова другими задачами забита, а то бы подключился.
а вот это особо важный вскрик...

1.
хм, у нас была история с написанием ТЗ, которая "благополучно" затихла...

2.
а по идее, история с ТЗ должна была породить историю с Декомпозицией,
что "странным образом" не случилось ..

3.
Почему?
потому что декомпозиция это ключевое: ДЕКОМПОЗИЦИЯ РУЛИТ!,
среди прочего, моно разложить задачи по степени важности/полезности/актуальности/"100500-синонимов"

4.
у вас нет времени на решение тупых не имеющих прямой актуальности к решаемой задаче.
верно?

5.
например, в пазле-384, ключевая важность в подзадачах:
- вычислении оценки
- и билд img-портянки по этим вычисленным оценкам.

6.
но есть куча сопутствующих рутинных сабзадач, которые, как бы, "неинтересны",
а значит они являются демотивирующим фактором, что ваще не годится)

7.
и вот тут засада,
предлагается условный прожект, который все участники должны написать с нуля...
нафик?

8.
поэтому ТЗ кодом в нашем контексте это прежде всего ДЕКОМПОЗИЦИЯ.

9.
пишутся модули для рутинных субзадач, которые не прячутся под грифом "коммерческая тайна"...
Ха-ха, знаю, для многих индивидуумов тут всё сложно))
ну, тогда у нас тут не совместная разработка, а тупой конкурс... c доп-ой физ-нагрузкой...

10.
есть ещ кое-что, но пока хватит...

на примере пазла-384,
мелкая задача: "Получить список файлов для дальнейшей обработки"
"files-cargo.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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#ifndef FILES_CARGO_H
#define FILES_CARGO_H
/// "files-cargo.h"
///-----------------------------------------------------------------------------
/// Файловый коллектор.
///     -   как испльзовать смотрим тест.
///----------------------------------------------------------------------------:
#include <filesystem> /// C++17
#include <algorithm>
#include <iostream>
#include <iterator>
#include <fstream>
#include <sstream>
#include <format>  /// C++20
#include <vector>
#include <string>
#include <map>
#include <set>
 
namespace fs = std::filesystem;
 
#define ln(a) std::cout << #a << ":\n" << (a) << '\n';
#define  l(a) std::cout << #a << ": "  << (a) << '\n';
 
///----------------------------------------------------------------------------|
/// Внимание!
/// Настройте конфиг согласно вашим хотелкам, разумеется, адекватным.
///--------------------------------------------------------------------- Config:
struct  Config
{       Config()
        {   std::system("chcp 65001>nul");
            l(LOGOVERSION)
        }
        Config          (const Config&) = delete;
        Config operator=(const Config&) = delete;
 
    ///--------------------------------------|
    /// Уважайте ваш код! :)                 |
    ///--------------------------------------:
    const char* LOGOVERSION{"Test-demo-config::0.0.1"};
 
    ///--------------------------------------|
    /// Фильтр поиска по расширению файлов.  |
    ///--------------------------------------:
    const std::set<std::string_view> filtr{".jpg",".png"};
 
    ///--------------------------------------|
    /// Базовая директория поиска.           |
    ///--------------------------------------:
    const std::string_view dirSource{"./images/"};
 
    ///--------------------------------------|
    /// Глубина вложенности папок для поиска.|
    ///--------------------------------------:
    int  depth{1};
 
    ///--------------------------------------|
    /// Получить существующий объект.        |
    ///--------------------------------------:
    static const Config& get(){ static const Config cfg; return cfg; }
};
 
using MapPath = std::map<std::string, std::vector<fs::path>>;
 
///----------------------------------------------------------------------------|
/// FilesCargo.
///----------------------------------------------------------------- FilesCargo:
struct  FilesCargo : protected MapPath
{       FilesCargo()
        {
            for(const auto& ext : Config::get().filtr)
            {   (*this)[ext.data()] = std::vector<fs::path>();
            }
            scan();
        }
 
    ///--------------------------------------|
    /// Получить массив директорий к файлам. |
    ///--------------------------------------:
    const std::vector<fs::path>& get(std::string_view ext) const
    {   static std::vector<fs::path> nul;
        if(const auto it = this->find(ext.data()); it != cend())
        {   return it->second;
        }
        return nul;
    }
 
    ///--------------------------------------|
    /// Получить отчёт.                      |
    ///--------------------------------------:
    std::string debug() const
    {   std::stringstream ss;
 
        ss << "|------------------ FilesCargo:\n";
 
        unsigned cnt = 0;
 
        for(auto&[exten, vecPath] : *this)
        {
            ss << "  \\---------------- " << exten << ":\n";
 
            for(const auto& path : vecPath)
            {   ss << "    " << path.string() << '\n'; ++cnt;
 
                if(cnt > 10)
                {   ss << "    " << "и так далее ...\n    ...\n";
                    break;
                }
            }
        }
 
        if(0 == cnt)
        {    ss.str("");
             ss << "  WARNING: Файлы из фильтра конфига отсутсвуют ...\n";
        }
        else ss << "  Всего файлов: " << cntFiles() << '\n';
 
        return ss.str();
    }
 
    ///--------------------------------------|
    /// Тест разраба.                        |
    ///--------------------------------------:
    static void test()
    {   FilesCargo   filesCargo;
        std::cout << filesCargo.debug() << '\n';
    }
 
    ///--------------------------------------|
    /// Этот м. тут случайно затесался.      |
    ///--------------------------------------:
    static void remove(const fs::path& path)
    {   fs::remove(path);
    }
 
    ///--------------------------------------|
    /// Кол-во найденных файлов по фильтру.  |
    ///--------------------------------------:
    size_t cntFiles() const
    {   size_t cnt{0};
        for(const auto&[ext, vecpath] : *this) cnt += vecpath.size();
        return cnt;
    }
 
private:
    ///--------------------------------------|
    /// Для удобства.                        |
    ///--------------------------------------:
    inline static const Config& cfg{Config::get()};
 
    ///--------------------------------------|
    /// Поиск согласно конфигу.              |
    ///--------------------------------------:
    void scan()
    {
        const auto& spd = fs::directory_options::skip_permission_denied;
 
        const fs::recursive_directory_iterator START(cfg.dirSource, spd);
        const fs::recursive_directory_iterator END  {};
 
        for (auto ifile  = START; ifile != END; ++ifile)
        {
            if(ifile.depth() > cfg.depth)
            {   ifile.pop( );
 
                if(ifile == END) break;
            }
 
            const auto& ext = ifile->path().extension().string();
 
            if(auto i = cfg.filtr.find(ext); cfg.filtr.end() != i)
            {
                if(auto it = this->find(ext); it != this->end())
                {
                    it->second.push_back(ifile->path());
                }
            }
        }
    }
};
 
///----------------------------------------------------------------------------|
/// Если, вдруг, захотца добавить ваши фичи, то, пжлста, вам сюды.
///----------------------------------------------------------- CastomFilesCargo:
struct CastomFilesCargo : FilesCargo
{
    static void test()
    {   FilesCargo  filesCargo;
                    ln(filesCargo.debug())
 
        l(filesCargo.get(".xxx").size())
        l(filesCargo.get(".png").size())
    }
};
 
#undef l
#undef ln
#endif // FILES_CARGO_H
рез Теста:


понятно, что решение одной маленькой задачи, это мало,
но если такие будут решены все(я про рутинные),
то это сокращает время остальных желающих поэкспериментировать с самой сутью задачи,
а не заниматься настройками годной среды для энтих опытов...
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.02.2025, 19:03
Ну, я как раз и занимаюсь рутинными задачами. Вот научил win api делать рамки в удобном для меня месте. Решил все таки использовать gdi без +. Состояние сейчас вот такое:
Название: nn2.jpg
Просмотров: 128

Размер: 40.0 Кб
Использовал poligon().
2
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.02.2025, 19:07
Цитата Сообщение от XLAT Посмотреть сообщение
это прежде всего ДЕКОМПОЗИЦИЯ
Я и пошел именно этим путем. Декомпозирую на небольшие функции. потом их можно распихать в объекты. а пока так.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
23.02.2025, 20:39
CoderHuligan, у меня почти готово, будет время, займусь улучшением



я брал другие куски, чтобы не спойлерить те куски, что я выложил на форуме. Это чтобы у вас была мотивация
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
24.02.2025, 08:35
Цитата Сообщение от Royal_X Посмотреть сообщение
Это чтобы у вас была мотивация
А у меня аппетит приходит во время еды. Меня вообще мало тянет реально программировать. Лень. А вот если я начинаю реально что-то делать, вот тогда это затягивает и мне уже начинает нравится процесс. То есть главное это первоначальный толчок, преодоление какой-то инерции. Сейчас меня, да, затянуло. В данном случае интересует реальная возможность переиспользования кода. Сапер надо сделать, а на его основе сделать другую игру и посмотреть: а можно ли повторно что-то использовать из прежнего проекта.
Интересно, сравнение чистых функций с объектной инкапсуляцией.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
24.02.2025, 12:40
CoderHuligan, я вчера видео смотрел на тему, почему ООП уже не модно и почему самые сложные и топовые проекты в мире пишут без ООП (или лишь с незначительным использованием ООП), многие вообще на языке С, а если и пишут на С++, то не ради ООП, а STL. Короче, вся суть была в том, что если использовать ООП по максимуму, то потом, если захочется что-то менять или оптимизировать код, то весь код придется менять, потому что ООП работает по принципу домино. Тогда как, если писать все четко функциями, где каждая функция делает ровно одно действие, то в любой момент можно поменять эту функцию, причем не разбираясь даже в суть остального кода, и ничего потом не сломается. По этой же причине, во всех сложных научных проектах используется только функциональное программирование.
ООП хорошо для игр, где нужно создать ИИ разных персонажей, людей, зверей, монстров, ботов и прочее. Тут пригодится наследование, полиморфизм и прочее. И реально ООП может сэкономить много времени, чтобы не писать одни и те же или похожие функции. Например, и человек ходит и прыгает, и монстр тоже ходит и прыгает. Да и разрабам игр будет легче, если они будут мыслить категорией объектов.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.02.2025, 14:22  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
ООП уже не модно


0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
24.02.2025, 14:40
Цитата Сообщение от XLAT
Человечество тупеет?
Размер мозга вообще не показатель. "Самый большой размер мозга у человека был 30 000 лет назад" - это вообще смешно. Этот первобытный человек был очень тупым.
Если сравнивать относительно "ум / размер мозга", то в природе найдутся животные, которые относительно гораздо умнее человека. Человеческий мозг постепенно эволюционирует и улучшается.
Можно привести аналогию с процессорами. 50 лет назад процы тоже были большими. Но ведь, современный крошечный проц рвет все эти огромные процы из прошлого. Чем меньше тех. процесс проц, тем лучше. Возможно, и люди идут к тому, что с меньшим мозгом будут в разы умнее.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
24.02.2025, 15:19
Цитата Сообщение от Royal_X Посмотреть сообщение
что если использовать ООП по максимуму, то потом, если захочется что-то менять или оптимизировать код, то весь код придется менять, потому что ООП работает по принципу домино.
Вот это у кого то блезнь. Я в шоке. Такое ляпнуть.
Как раз таки с помощью ООП осуществляется разделение на независимые подчасти и с помощью шаблонов проектирования и интерфейсов - гибкие системы. Где для для добавления нового не нужно трогать и перекомпилировать ВСЕ остальные части проекта.
А для изменения, достаточно изменить поведение одной сущности или добавить адаптер.
Но детишкам легче процедурно саперы писать. Согласен.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.02.2025, 15:42  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
мелкая задача: "Получить список файлов для дальнейшей обработки"
итак список файлов у нас есть, что дальше?

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

каким образом?
Цитата Сообщение от Royal_X Посмотреть сообщение
Разрешено использовать что угодно, WinAPI, Qt, wxWidgets, SFML, SDL, OpenCV, VCL и т.д.
- WinAPI: древнее сишное г.мамонта некросс.
- Qt: главари кутешников замешаны в преступлениях против аборигенов Гренландии.
- wxWidgets: годно, там есть даже огл.
- SFML: годно: в разы проще, чем wxWidgets и чем всё остальное, кросс, истинно крестовый, короче ЭТАЛОН!
- SDL: кросс, забиндин на все известные мне япы, а если нет, то оно же сишкошкодерное, то моно с коленок это сделать ...
- OpenCV: для элиты, дети африки не одобрят.
- VCL: боланд ещё жив? я не в курсе...
Кликните здесь для просмотра всего текста
gunslinger, прости за VCL


и что?
разумеется, берём эталон: SFML.
ура, господа!

далее, я буду юзать 2.6.2 версию.

но, пока для разминки:

Цитата Сообщение от Royal_X Посмотреть сообщение
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
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
#ifndef IMAGES_H
#define IMAGES_H
/// "images.h"
///-----------------------------------------------------------------------------
/// Загрузка текстуры в память.
///----------------------------------------------------------------------------:
#include <SFML/Graphics.hpp>
#include "files-cargo.h"
#include <cmath>
 
#define ln(a) std::cout << #a << ":\n" << (a) << '\n';
 
template<typename T>
inline std::ostream& operator<<(std::ostream& o, const sf::Vector2<T>& e)
{   o << std::format("    WH: [{}, {}]\n", e.x, e.y);
    return o;
}
 
template<typename T>
inline std::ostream& operator<<(std::ostream& o, const std::vector<T>& m)
{   for(const auto& e : m) o << e;
    return o;
}
 
namespace myl
{
    ///--------------------------------------|
    /// Получить массив делителей для N.     |
    ///--------------------------------------:
    inline std::vector<sf::Vector2u> getVSizeWH(const unsigned N)
    {      std::vector<sf::Vector2u> m;
 
        for(unsigned a = unsigned(std::sqrt(N)); a != 0; --a)
        {   if(unsigned  b = N %  a; b == 0)
            {   m.push_back({N /  a, a});
                if( m.back().x != a)
                {   m.push_back( {a, m.back().x});
                }
            }
        }
        return m;
    }
 
    void testfoo_getVSizeWH(){ ln(getVSizeWH(384)) }
}
#endif // IMAGES_H
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "files-cargo.h"
#include "images.h"
 
void tests()
{
    myl::testfoo_getVSizeWH();
/// CastomFilesCargo ::test();
}
 
 
///----------------------------------------------------------------------------|
/// Start.
///----------------------------------------------------------------------------:
int main ()
{   std::cout << "START ...\n\n";
    tests();
    std::cout << "\nFINISHED PROGRAMM!\n";
}
рез:
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
24.02.2025, 15:59
SmallEvil, речь не о добавлении чего-то, а в изменении, например, какой-то части кода в родителе. Поменял что-то, теперь трать несколько месяцев на исправление потомков. Твой коммент просто говорит о том, что ты не видел сложных проектов, пронизанных ООП, особенно всякими запутанными наследованиями и полиморфизмами. Или захотел поменять паттерн ООП, ибо в конце проекта осознал, что говно, то тогда вообще, единственный вариант это долбиться об стену и начать писать с нуля.
Я еще раз говорю, все серьезные проекты пишутся без ООП. Вместо того, чтобы со мной спорить, лучше копай открытые коды.
Что я понимаю под серьезным проектом: например, браузер Chromium, на основе которого сделано большинство современных браузеров, Blender написан без ООП, GIMP написан без ООП, CPython - эталонная реализация питона, написана без ООП, ядро Линукса, написано без ООП, уверен, что код винды тоже без ООП, учитывая, что была утечка части кода старых версий и по ней это видно, GCC написан без ООП, Git написан без ООП, FFmpeg - самая топовая библиотека для работы с видео и звуком, написана без ООП. Я могу бесконечно продолжить этот список...
Цитата Сообщение от SmallEvil Посмотреть сообщение
Но детишкам легче процедурно саперы писать.
Так а в чем смысл программирования? Создать программу или шашечки?

Добавлено через 9 минут
Цитата Сообщение от XLAT Посмотреть сообщение
главари кутешников замешаны в преступлениях против аборигенов Гренландии.
по такой логике, нужно просто отказаться от всего, собрать вещи и пойти в пещеру, ибо я могу для любого продукта найти похожее оправдание)

Добавлено через 2 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
далее, я буду юзать 2.6.2 версию.
и почему? а ладно, можешь не отвечать:
Кликните здесь для просмотра всего текста
пока настроишь проект на эталоне, роял напишет полностью прогу)))


Добавлено через 2 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
пока для разминки
я вот думаю, а действительно ли это надо? это типа подсказка для юзера, какие размеры вводить?
например, у меня просто прога проверяет размеры, если их произведение не равно количеству кусков, то выдает ошибку.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.02.2025, 16:19  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
и почему?
это же логично, я его беру, потому что он ПРОСТОЙ,
но в 3 версии там чуть-чуть поменяли и я, тупо, не хочу парится над выяснениями, что они там поменяли.

т.е. если апи библы будет часто меняться, то она для меня уже не будет простой.

но если приспичит(с чего это бы?), то ваще не проблема поправить на 3 версию.

Не по теме:

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

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
24.02.2025, 16:20
XLAT, и как вижу ты решил собрать 384 куска. Но я проверил на этих кусках, путем сравнения пикселей там невозможно собрать (собирается только часть, самая интересная часть, но не вся картинка). Либо ты придумаешь какой-нибудь интересный способ. Возможно, просто мой алгоритм отстойный. Я начинаю собирать с первого куска, возможно в этом и ошибка.
Но вот куски из поста Совместное создание игры абсолютно рабочие. Я проверял и моя прога смогла их склеить.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.02.2025, 16:25  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
Либо ты придумаешь какой-нибудь интересный способ. Возможно
по алгоритмам у нас КодерХулиган голова,
я ему сделаю стенд, а он уже для мэнэ соберёт)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2025, 16:25

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
820
Закрытая тема Создать тему
Новые блоги и статьи
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
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru