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

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

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

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


В чем смысл этого? Как и говорил, можно создать игру на Godot или Unity, но все тяжелые вычисления будет осуществляться в фоне, консольной прогой на С++. Более того, можно менять консольную прогу, не собирая заново игру.
1
Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
02.02.2025, 18:41
XLAT, типа так

1
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
02.02.2025, 18:49
Цитата Сообщение от Azathtot Посмотреть сообщение
объеденить клиент и сервер по TCP
это надо сервер поискать бесплатный, ибо превращать чей-то клиентский ПК в сервер это глупо
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
02.02.2025, 19:00
Цитата Сообщение от XLAT Посмотреть сообщение
осталось только КодерХулигана наставить
Я пока так решил.Сделать все алгоритмы в процедурке по схеме:
Цитата Сообщение от Croessmah Посмотреть сообщение
"...Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы... - Степанов
Отладить, чтобы все работало, а потом можно рефакторить хоть до посинения. Так оно быстрее будет.
1
Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
02.02.2025, 20:15
XLAT, я сейчас хочу в godot поэкспериментировать.
Ты пока реализуй, чтобы я мог выставлять размер, т.к. у меня игра будет 16 на 16 и она должна отправить, например
size 16 16
0
Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
02.02.2025, 20:51  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
Royal_X, и придумай уникальное название для своего плеера. и плиз, без енджин.
короче, твой плеер будет назваться Рояль...
0
Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
02.02.2025, 22:13  [ТС]
сам архив(win64+sources):
Вложения
Тип файла: rar Field-CF-02.rar (302.7 Кб, 15 просмотров)
1
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 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
Закрытая тема Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru