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

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

08.01.2025, 12:45. Показов 52924. Ответов 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
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 16:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от XLAT Посмотреть сообщение
если будет запущенно несколько консолей
всё это реализуемо. Сколько консольных прог, столько будет отдельных фоновых процессов.
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 16:56  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
Юнька отправляет rand и quit, а консоль принимает и обрабатывает эти команды
фу ты ёлы-палы, дошло - пойду тогда кавы попью.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 17:03
Цитата Сообщение от XLAT Посмотреть сообщение
фу ты ёлы-палы, дошло - пойду тогда кавы попью.
надеюсь ты вручную engine.exe не запускал, типа чтобы помочь юньке. Ведь, она сама фоново запускает и все что надо отправляет и принимает, а при закрытии юньки, она сама вырубает консоль, отправляя quit.
При нажатии на кнопку в юньке, юнька отправляет rand и потом принимает результат.
Но, конечно, engine.exe можно запустить и без юньки.

XLAT, я же тебе выложил код консольки. Только когда юнька фоново запускает консольку, то пользователь ни вводит ничего, и не видит ничего (engine.exe работает как фоновый процесс, окно консоли не видно). cin получает от юньки, а cout дает юньке. Ибо процесс, созданный юнькой, перехватывает стандартный ввод и вывод.


В чем смысл этого? Как и говорил, можно создать игру на Godot или Unity, но все тяжелые вычисления будет осуществляться в фоне, консольной прогой на С++. Более того, можно менять консольную прогу, не собирая заново игру.
1
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 17:50  [ТС]
Royal_X,
сделай красиво на клиенте команду "matrix":
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
#include <iostream>
#include <vector>
#include <random>
#include <string>
 
using Arr1d = std::vector<unsigned>;
using Arr2d = std::vector<Arr1d   >;
 
 
///----------------------------------------------------------------------------|
/// 10 - туман войны(клетка закрыта)
///----------------------------------------------------------------------------:
struct  Matrix   : Arr2d
{       Matrix(unsigned h, unsigned w) : Arr2d(h, Arr1d(w, 10))
        {
        }
 
    inline static std::string_view command{"matrix"};
 
};
 
std::ostream& operator<<(std::ostream& o, const Matrix& m)
{   for    (const auto&  r : m)
    {   for(const auto   e : r)
        {   std::cout << e  << ' ';
        }   std::cout <<      '\n';
    }       std::cout << std::endl;
    return o;
}
 
 
int main()
{
    std::mt19937 gen(std::random_device{}());
    std::uniform_int_distribution<> dist(0, 99);
 
    Matrix matrix(10, 20);
 
    for (std::string s; std::getline(std::cin, s);)
    {
        if (s == "quit"         ) break;
        if (s == "rand"         ) std::cout << dist(gen) << std::endl;
        if (s == Matrix::command) std::cout << matrix    << std::endl;
    }
}
мне будет достаточно скриншота.
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
02.02.2025, 18:01
Цитата Сообщение от Royal_X Посмотреть сообщение
но все тяжелые вычисления будет осуществляться в фоне, консольной прогой на С++
Еще чуть-чуть (объеденить клиент и сервер по TCP) и у вас будет онлайн игра.
В нормальных онлайн играх сервер не верит клиенту, все считает сам, а клиент только картинки рисует.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 18:41
XLAT, типа так

1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 18:49
Цитата Сообщение от Azathtot Посмотреть сообщение
объеденить клиент и сервер по TCP
это надо сервер поискать бесплатный, ибо превращать чей-то клиентский ПК в сервер это глупо
0
 Аватар для CoderHuligan
1754 / 1020 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
02.02.2025, 19:00
Цитата Сообщение от XLAT Посмотреть сообщение
осталось только КодерХулигана наставить
Я пока так решил.Сделать все алгоритмы в процедурке по схеме:
Цитата Сообщение от Croessmah Посмотреть сообщение
"...Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы... - Степанов
Отладить, чтобы все работало, а потом можно рефакторить хоть до посинения. Так оно быстрее будет.
1
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 19:42  [ТС]
Royal_X,
CoderHuligan,
добро пожаловать в дивный мир RPC:

набросок:
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
#include <iostream>
#include <sstream>
#include <vector>
#include <random>
#include <string>
 
constexpr bool ISDEBUG{false};
 
using Arr1d = std::vector<unsigned>;
using Arr2d = std::vector<Arr1d   >;
 
///----------------------------------------------------------------------------|
/// Парсер команд с аргументами.
///----------------------------------------------------------------------------:
struct  RPCParser
{       RPCParser()
        {
        }
 
    void operator<<(const std::string& str)
    {
        error = false;
        a.clear();
 
        std::stringstream ss(str);
 
        ss >> command;
 
        for(std::string s; ss >> s;)
        {   try
            {   a.push_back(std::stoi(s));
            }
            catch(...)
            {   error = true;
                return;
            }
        }
    }
 
    std::string command;
    Arr1d             a;
    bool          error;
 
    void debug() const
    {   if(ISDEBUG) return;
        std::cout << "RPCParser:debug()-------------:\n"
                  << "command: " << command   << ' ';
        for(const auto  e : a) std::cout << e << ' ';
        std::cout << '\n';
    }
}rpcParser;
 
 
///----------------------------------------------------------------------------|
/// 10 - туман войны(клетка закрыта)
/// 99 - тест.
///
/// Умеет:
///     - "open Y X" - где Y номер ряда матрицы,
///                        X номер столбца матрицы.
///----------------------------------------------------------------------------:
struct  Matrix   : Arr2d
{       Matrix(unsigned h, unsigned w) : Arr2d(h, Arr1d(w, 10))
        {
        }
 
    inline static std::string_view command {"matrix"};
    inline static std::string_view command1{"open"  };
 
    void doCommand(const RPCParser& com)
    {
        if(com.command  != command1) return;
        if(com.a.size() == 2           &&
           com.a[0]     >= this->size() &&
           com.a[1]     >= this->back().size())
        {
            std::cout << "ERROR CODING: BAD ARGUMENTS\n";
            return;
        }
 
        (*this)[com.a[0]][com.a[1] ] = 99;
    }
};
 
 
std::ostream& operator<<(std::ostream& o, const Matrix& m)
{   for    (const auto&  r : m)
    {   for(const auto   e : r)
        {   std::cout << e  << ' ';
        }   std::cout <<      '\n';
    }       std::cout << std::endl;
    return o;
}
 
 
int main()
{
    std::mt19937 gen(std::random_device{}());
    std::uniform_int_distribution<> dist(0, 99);
 
    Matrix matrix(5, 5);
 
    for (std::string s; std::getline(std::cin, s);)
    {
        if (s == "quit"         ) break;
        if (s == "rand"         ) std::cout << dist(gen) << std::endl;
        if (s == Matrix::command) std::cout << matrix    << std::endl;
 
        rpcParser << s;
 
        rpcParser.debug();
 
        if(!rpcParser.error)
        {
            matrix.doCommand(rpcParser);
        }
    }
}
а тут нужно продумать шаблонный(читай универсальный) формат, также оптимизацию и тд.
и все написать буквами, как в настоящей документации.
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
02.02.2025, 19:45
Цитата Сообщение от XLAT Посмотреть сообщение
а тут нужно продумать шаблонный(читай универсальный) формат
XML-RPC вас чем-то не устравивает? Нашли в нем фатальный недостаток?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 20:08
XLAT, все вроде ясно, только вот после каждой команды выдает текст
Code
1
2
RPCParser:debug()-------------:
command: команда
Зачем мне этот мусор?

Я вот отправляю команду и читаю до тех пор, пока в потоке вывода есть текст. Соответственно, мне придется читать и этот мусор. Либо нужно придумать ключевое слово, после которого чтение завершается.
Типа
Code
1
2
3
4
5
6
7
8
9
10
>> matrix
10 10 10 10 10
10 10 10 10 10
10 10 10 10 10
10 10 10 10 10
10 10 10 10 10
MATRIX_END\n
 
RPCParser:debug()-------------:
command: matrix
Добавлено через 5 минут
XLAT, реализуй команду, чтобы игра выставляла размеры матрицы.
Например,
size 5 5
А я вот попробую сделать тестовую игру под определенный размер, который я отправлю твоей консольной проге
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 20:13  [ТС]
Цитата Сообщение от Azathtot Посмотреть сообщение
XML-RPC вас чем-то не устравивает?
текстовики гонять туды-сюды - кто их читать из людей будет?
ах, читеры будут? так дулю им!
тока бинарники и тока побайтная сериализация в/из бинарники.

Добавлено через 2 минуты
Цитата Сообщение от Royal_X Посмотреть сообщение
Зачем мне этот мусор?
C++
7
constexpr bool ISDEBUG{false};
ёк,

нужно поправить:
C++
45
    {   if(!ISDEBUG) return;
вот замените 45 строку на эту.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 20:15
XLAT, я сейчас хочу в godot поэкспериментировать.
Ты пока реализуй, чтобы я мог выставлять размер, т.к. у меня игра будет 16 на 16 и она должна отправить, например
size 16 16
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 20:25  [ТС]
Royal_X, короче, завтра я всё это накину на модель сапёра,
там будет вот такие прототипы команд:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
    ///------------------------------------------------------------------------|
    /// Интерфейс для клиенской части.
    ///     startGame():
    ///         0,...,8 -   кол-во соседних бомб.
    ///         9       -   флажок.
    ///        10       -   закрытое поле.
    ///        11       -   бомба.
    ///        12       -   БАХ!!!.
    ///---------------------------------------------------------------Интерфейс:
    Config                startGame();
    std::vector<unsigned> getVisual();
    Config::eEVENT        inputPlot(unsigned x, unsigned y);
    void                  setFlag  (unsigned x, unsigned y);
хм, и попытаюсь написать доку по подробнее...

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

Добавлено через 2 минуты
Royal_X, и придумай уникальное название для своего плеера. и плиз, без енджин.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 20:29
XLAT, сделай пока статический 16 на 16, чтобы я проверил сейчас на годоте
нужны всего команды
open
matrix
quit

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
0,...,8 - кол-во соседних бомб.
/// 9 - флажок.
/// 10 - закрытое поле.
/// 11 - бомба.
/// 12 - БАХ!!!.
кстати, в моем сапере точно такие же константы.

Добавлено через 48 секунд
Сейчас пусть создает матрицу заполненную 10. А после open, бери любое число. Это просто для теста
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 20:51  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
Royal_X, и придумай уникальное название для своего плеера. и плиз, без енджин.
короче, твой плеер будет назваться Рояль...
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 22:12  [ТС]
Royal_X, готово:
куда нужно смотреть:
тут 4 команды и ничего лишнего:
royal.h
C++
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
    namespace mns = minesweeper;
    ///------------------------------------------------------------------------|
    /// ...
    ///------------------------------------------------------------------------:
    void test_02()
    {
        //std::mt19937 gen(std::random_device{}());
        //std::uniform_int_distribution<> dist(0, 99);
 
        for (std::string s; std::getline(std::cin, s);)
        {   if (s == "quit"  ) break;
          //if (s == "rand"  ) std::cout << dist(gen) << std::endl;
 
            ///--------------------------|
            /// Отправляем на парсер.    |
            ///--------------------------:
            rpcParser << s;
 
            if(!rpcParser.error)
            {
                if (s == "getVisual")
                {
                    const std::vector<unsigned>& m = mns::getVisual();
 
                    for(const auto e : m) std::cout << e << ' ';
 
                    continue;
                }
                if (s == "startGame")
                {
                    ///--------------------------|
                    /// Старт новой игры.        |
                    ///--------------------------:
                    mns::Config _cfg = mns::startGame();
 
                    ///--------------------------|
                    /// Отправляем размеры поля. |
                    ///--------------------------:
                    std::cout << _cfg.H << ' ' << _cfg.W << std::endl;
 
                    continue;
                }
                if (rpcParser.command == "inputPlot")
                {
                    ///--------------------------|
                    /// Получаем координаты.     |
                    ///--------------------------:
                    mns::Config::eEVENT EVENT
                        = mns::inputPlot(rpcParser.a[1], rpcParser.a[0]);
 
                    ///--------------------------|
                    /// Отправляем сообщение.    |
                    ///--------------------------:
                    std::cout << EVENT << std::endl;
 
                    continue;
                }
                if (rpcParser.command == "setFlag"  )
                {
                    ///--------------------------|
                    /// Установка флага.         |
                    ///--------------------------:
                    mns::setFlag(rpcParser.a[1], rpcParser.a[0]);
                }
            }
        }
    }
смотри в скриншот в какой последовательности их вызывать,
(ваще обработка ошибок это самое нудная но и важная часть, и тут еще нужно доделывать)

внутри архива есть уже готовы ексешник, можешь запустить его.
(внимание, на скриншоте это не работа визуализатора - это в таком виде к тебе будут приходить данные)


внимание, смотри внимательно, что после некоторых команд нужно сразу получить ответ.
1
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
02.02.2025, 22:13  [ТС]
сам архив(win64+sources):
Вложения
Тип файла: rar Field-CF-02.rar (302.7 Кб, 15 просмотров)
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6771 / 3138 / 1065
Регистрация: 01.06.2021
Сообщений: 12,186
02.02.2025, 23:39
XLAT, у меня после getVisual массив, который заканчивается пробелом, а не новой строкой

eще этот дурацкий майкрософтовский антивирус всё удаляет

https://www.virustotal.com/gui... UyNjYwNw==

XLAT, еще годот крашится, с Unity было проще работать с процессами, там я за 15 мин все написал (и на C# работать с процессами, как на WinAPI C++). А с годот уже час пытаюсь.
Проблема в том, что я не могу прочесть поток вывода до конца. Если читаю больше, чем там есть, то крашится. А как проверить буфер на наличие данных не знаю. Функции годот не работают.
В любом случае нужно прочесть до конца, чтобы поток очистился от текста.

XLAT, я пока пробую на том массиве пустышке.

XLAT, пайпы в годот имеют тип FileAccess

но многие функции данного класса работают только с файлами, а не пайпами
например, get_as_text не работает, eof_reached() не работает, get_length() не работает, get_position() не работает

Ну и как блет мне узнать, есть ли в трубе вода или нет?

Работает только get_line() и с её помощью я построчно получаю текст из пайпа. Но нужно вызывать эту функцию ровно столько раз, сколько там есть текста. Если хоть один раз излишне вызову, то сразу краш.

В нормальных API есть функции для проверки, чтобы типа если пайп пустой, не пытаться читать.

Короче, сильно разочарован OS.execute_with_pipe


Дебильным решением проблемы может быть добавление текста END с новой строки в конце каждого вывода. Тогда я прочитаю END и прекращу чтение из пайпа.

Добавлено через 15 минут
XLAT, или делать на юньке?
0
Just Do It!
 Аватар для XLAT
4223 / 2689 / 656
Регистрация: 23.09.2014
Сообщений: 9,250
Записей в блоге: 3
03.02.2025, 00:05  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
у меня после getVisual массив, который заканчивается пробелом, а не новой строкой
ну, это косяк, а как ты хотел без косяков)
C++
139
140
141
142
143
144
145
146
147
148
149
                if (s == "getVisual")
                {
                    const std::vector<unsigned>& m = mns::getVisual();
 
                    ///--------------------------|
                    /// Отправить на визуализацию|
                    ///--------------------------:
                    for(const auto e : m) std::cout << e << ' ';
                    std::cout << std::endl; ///<--- нужно добавить!
                    continue;
                }
Цитата Сообщение от Royal_X Посмотреть сообщение
я пока пробую на том массиве пустышке.
ну, конешъ, сначала хелловорлд должен заработать

Цитата Сообщение от Royal_X Посмотреть сообщение
или делать на юньке?
это же сапёр! он на всем должен быть сделан. как хеллоуворлд.

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
620
Закрытая тема Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №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