Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Jarry
0 / 0 / 0
Регистрация: 18.06.2013
Сообщений: 50

Разделение кода на несколько файлов

22.03.2015, 04:32. Показов 1964. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Заинтересовал вопрос о разделении кода, когда это требуется разделяю на один CPP файл и некоторое количество H файлов. А заинтересовало именно в этой теме, зачем разделяют код на два CPP файла и как это работает?)
Всем заранее спасибо)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2015, 04:32
Ответы с готовыми решениями:

Разделение кода на несколько файлов
• Имеем основной cpp файл с main. • Имеем код некоторых нужных функций • Есть указание реализовать эти функции не в основном cpp, а в...

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

Visual C++ Разделение кода на несколько файлов
Здравствуйте! Помогите разобраться, как разбить код на несколько файлов? Я только начинаю изучать этот язык. До этого изучал другие,...

4
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
22.03.2015, 05:13
CPP - компилируется в объектный файл, там функции и переменные. В конце вся херня что будет востребована в приложении (компилятор определяет) будет искаться там. Будет ли реализация функции в одном или в другом файле - абсолютно пофиг. Но так удобнее, когда функции/классы разбиты на различные файлы. Главное чтобы реализация была одна в совокупности во всех файлах в конечном итоге, после добавления всех файлов указанных в #include.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.03.2015, 06:07
Цитата Сообщение от Jarry Посмотреть сообщение
зачем разделяют код на два CPP файла
Когда объем вашего кода в CPP-файле перевалит за 10К строк, тогда поймете. А если повезет, то и раньше
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
22.03.2015, 14:35
Вот сравни, всё в одном файле:
Кликните здесь для просмотра всего текста
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
#include <iostream>
#include <windows.h>
 
/*
Заполните матрицу размером N на M змейкой. Размер матрицы и направление
движения змейки должно задаваться пользователем. Для заполнения матрицы
и отображения матрицы напишите следующие функции:
 
для заполнения:
горизонтально слева направо сверху вниз fill_matrix_snake_h_fromleft_down();
горизонтально справа налево сверху вниз fill_matrix_snake_h_fromright_down();
горизонтально слева направо снизу вверх fill_matrix_snake_h_fromleft_up();
горизонтально справа налево снизу вверх fill_matrix_snake_h_fromright_up();
 
вертикально сверху вниз слева направо fill_matrix_snake_v_fromtop_right();
вертикально сверху вниз справа налево fill_matrix_snake_v_fromtop_left();
вертикально снизу вверх слева направо fill_matrix_snake_v_frombottom_right();
вертикально снизу вверх справа налево fill_matrix_snake_v_frombottom_left();
 
для отображения show_matrix().
*/
void fill_matrix_snake_h_fromleft_down(int **matrix, int row, int col);     // 1
void fill_matrix_snake_h_fromright_down(int **matrix, int row, int col);    // 2
void fill_matrix_snake_h_fromleft_up(int **matrix, int row, int col);       // 3
void fill_matrix_snake_h_fromright_up(int **matrix, int row, int col);      // 4
 
void fill_matrix_snake_v_fromtop_right(int **matrix, int row, int col);     // 5
void fill_matrix_snake_v_fromtop_left(int **matrix, int row, int col);      // 6
void fill_matrix_snake_v_frombottom_right(int **matrix, int row, int col);  // 7
void fill_matrix_snake_v_frombottom_left(int **matrix, int row, int col);   // 8
 
void show_matrix(int **matrix, int row, int col);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int row, col;
 
    std::cout << "Введите число строк: ";
    std::cin >> row;
 
    std::cout << "Введите количество символов в каждой строке: ";
    std::cin >> col;
 
    int **matrix = new int *[row];    // выделяем память
    for (int i=0; i<row; ++i)                  // для нашей матрицы
        matrix[i] = new int[col];     // размера row(x)col
    std::cout << "Матрица будет заполнена змейкой.\n"
                 "Выберите вариант заполнения:\n"
                 "горизонтально слева направо сверху вниз (нажмите 1)\n"
                 "горизонтально справа налево сверху вниз (нажмите 2)\n"
                 "горизонтально слева направо снизу вверх (нажмите 3)\n"
                 "горизонтально справа налево снизу вверх (нажмите 4)\n"
                 "вертикально сверху вниз слева направо (нажмите 5)\n"
                 "вертикально сверху вниз справа налево (нажмите 6)\n"
                 "вертикально снизу вверх слева направо (нажмите 7)\n"
                 "вертикально снизу вверх справа налево (нажмите 8)\n"
                 ;
    int choice;
    std::cout << std::endl;
    std::cin >> choice;
    std::cout << std::endl;
    switch (choice)
    {
        case 1: fill_matrix_snake_h_fromleft_down(matrix, row, col);
                break;
        case 2: fill_matrix_snake_h_fromright_down(matrix, row, col);
                break;
        case 3: fill_matrix_snake_h_fromleft_up(matrix, row, col);
                break;
        case 4: fill_matrix_snake_h_fromright_up(matrix, row, col);
                break;
        case 5: fill_matrix_snake_v_fromtop_right(matrix, row, col);
                break;
        case 6: fill_matrix_snake_v_fromtop_left(matrix, row, col);
                break;
        case 7: fill_matrix_snake_v_frombottom_right(matrix, row, col);
                break;
        case 8: fill_matrix_snake_v_frombottom_left(matrix, row, col);
                break;
    }
 
    show_matrix(matrix, row, col);
 
    for (int i = 0; i < row; i++)
        delete[] matrix[i];      //освобождаем память
    delete[] matrix;
 
    return 0;
}
 
// 1 - горизонтально слева направо сверху вниз
void fill_matrix_snake_h_fromleft_down(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=0; i<row; ++i)
    {
        if (i&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 2 - горизонтально справа налево сверху вниз
void fill_matrix_snake_h_fromright_down(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=0; i<row; ++i)
    {
        if (i&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 3 - горизонтально слева направо снизу вверх
void fill_matrix_snake_h_fromleft_up(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=row-1; i>=0; --i)
    {
        if (i&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 4 - горизонтально справа налево снизу вверх
void fill_matrix_snake_h_fromright_up(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=row-1; i>=0; --i)
    {
        if (i&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 5 - вертикально сверху вниз слева направо
void fill_matrix_snake_v_fromtop_right(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=0; j<col; ++j)
    {
        if (j&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 6 - вертикально сверху вниз справа налево
void fill_matrix_snake_v_fromtop_left(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=col-1; j>=0; --j)
    {
        if (j&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 7 - вертикально снизу вверх слева направо
void fill_matrix_snake_v_frombottom_right(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=0; j<col; ++j)
    {
        if (j&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 8 - вертикально снизу вверх справа налево
void fill_matrix_snake_v_frombottom_left(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=col-1; j>=0; --j)
    {
        if (j&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 9 - вывести содержимое матрицы на экран
void show_matrix(int **matrix, int row, int col)
{
    for (int i=0; i<row; ++i)
    {
        for (int j=0; j<col; ++j)
            std::cout << "[" << i << "]" << "[" << j
                      << "] == " << matrix[i][j] << "\t";
        std::cout << std::endl;
    }
}
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
22.03.2015, 14:35
Всё то же самое в трёх файлах:
Кликните здесь для просмотра всего текста

main.cpp
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
#include <iostream>
#include <windows.h>
#include "matrix_functions.h"
 
/*
Заполните матрицу размером N на M змейкой. Размер матрицы и направление
движения змейки должно задаваться пользователем. Для заполнения матрицы
и отображения матрицы напишите следующие функции:
 
для заполнения:
горизонтально слева направо сверху вниз fill_matrix_snake_h_fromleft_down();
горизонтально справа налево сверху вниз fill_matrix_snake_h_fromright_down();
горизонтально слева направо снизу вверх fill_matrix_snake_h_fromleft_up();
горизонтально справа налево снизу вверх fill_matrix_snake_h_fromright_up();
 
вертикально сверху вниз слева направо fill_matrix_snake_v_fromtop_right();
вертикально сверху вниз справа налево fill_matrix_snake_v_fromtop_left();
вертикально снизу вверх слева направо fill_matrix_snake_v_frombottom_right();
вертикально снизу вверх справа налево fill_matrix_snake_v_frombottom_left();
 
для отображения show_matrix().
*/
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int row, col;
 
    std::cout << "Введите число строк: ";
    std::cin >> row;
 
    std::cout << "Введите количество символов в каждой строке: ";
    std::cin >> col;
 
    int **matrix = new int *[row];    // выделяем память
    for (int i=0; i<row; ++i)                  // для нашей матрицы
        matrix[i] = new int[col];     // размера row(x)col
    std::cout << "Матрица будет заполнена змейкой.\n"
                 "Выберите вариант заполнения:\n"
                 "горизонтально слева направо сверху вниз (нажмите 1)\n"
                 "горизонтально справа налево сверху вниз (нажмите 2)\n"
                 "горизонтально слева направо снизу вверх (нажмите 3)\n"
                 "горизонтально справа налево снизу вверх (нажмите 4)\n"
                 "вертикально сверху вниз слева направо (нажмите 5)\n"
                 "вертикально сверху вниз справа налево (нажмите 6)\n"
                 "вертикально снизу вверх слева направо (нажмите 7)\n"
                 "вертикально снизу вверх справа налево (нажмите 8)\n"
                 ;
    int choice;
    std::cout << std::endl;
    std::cin >> choice;
    std::cout << std::endl;
    switch (choice)
    {
        case 1: fill_matrix_snake_h_fromleft_down(matrix, row, col);
                break;
        case 2: fill_matrix_snake_h_fromright_down(matrix, row, col);
                break;
        case 3: fill_matrix_snake_h_fromleft_up(matrix, row, col);
                break;
        case 4: fill_matrix_snake_h_fromright_up(matrix, row, col);
                break;
        case 5: fill_matrix_snake_v_fromtop_right(matrix, row, col);
                break;
        case 6: fill_matrix_snake_v_fromtop_left(matrix, row, col);
                break;
        case 7: fill_matrix_snake_v_frombottom_right(matrix, row, col);
                break;
        case 8: fill_matrix_snake_v_frombottom_left(matrix, row, col);
                break;
    }
 
    show_matrix(matrix, row, col);
 
    for (int i = 0; i < row; i++)
        delete[] matrix[i];      //освобождаем память
    delete[] matrix;
 
    return 0;
}
matrix_functions.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef MATRIX_FUNCTIONS_H_INCLUDED
#define MATRIX_FUNCTIONS_H_INCLUDED
 
void fill_matrix_snake_h_fromleft_down(int **matrix, int row, int col);     // 1
void fill_matrix_snake_h_fromright_down(int **matrix, int row, int col);    // 2
void fill_matrix_snake_h_fromleft_up(int **matrix, int row, int col);       // 3
void fill_matrix_snake_h_fromright_up(int **matrix, int row, int col);      // 4
 
void fill_matrix_snake_v_fromtop_right(int **matrix, int row, int col);     // 5
void fill_matrix_snake_v_fromtop_left(int **matrix, int row, int col);      // 6
void fill_matrix_snake_v_frombottom_right(int **matrix, int row, int col);  // 7
void fill_matrix_snake_v_frombottom_left(int **matrix, int row, int col);   // 8
 
void show_matrix(int **matrix, int row, int col);   // 9
 
#endif // MATRIX_FUNCTIONS_H_INCLUDED

matrix_functions.cpp
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
#include "matrix_functions.h"
#include <iostream>
 
// 1 - горизонтально слева направо сверху вниз
void fill_matrix_snake_h_fromleft_down(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=0; i<row; ++i)
    {
        if (i&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 2 - горизонтально справа налево сверху вниз
void fill_matrix_snake_h_fromright_down(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=0; i<row; ++i)
    {
        if (i&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 3 - горизонтально слева направо снизу вверх
void fill_matrix_snake_h_fromleft_up(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=row-1; i>=0; --i)
    {
        if (i&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 4 - горизонтально справа налево снизу вверх
void fill_matrix_snake_h_fromright_up(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int i=row-1; i>=0; --i)
    {
        if (i&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int j=first; j!=last; j+=add)
            matrix[i][j] = counter++;
    }
}
 
// 5 - вертикально сверху вниз слева направо
void fill_matrix_snake_v_fromtop_right(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=0; j<col; ++j)
    {
        if (j&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 6 - вертикально сверху вниз справа налево
void fill_matrix_snake_v_fromtop_left(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=col-1; j>=0; --j)
    {
        if (j&1)
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        else
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 7 - вертикально снизу вверх слева направо
void fill_matrix_snake_v_frombottom_right(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=0; j<col; ++j)
    {
        if (j&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 8 - вертикально снизу вверх справа налево
void fill_matrix_snake_v_frombottom_left(int **matrix, int row, int col)
{
    int counter = 1;
    int first, last, add;
    for (int j=col-1; j>=0; --j)
    {
        if (j&1)
        {
            first = 0;
            last = col;
            add = 1;
        }
 
        else
        {
            first = col - 1;
            last = -1;
            add = -1;
        }
 
        for (int i=first; i!=last; i+=add)
            matrix[i][j] = counter++;
    }
}
 
// 9 - вывести содержимое матрицы на экран
void show_matrix(int **matrix, int row, int col)
{
    for (int i=0; i<row; ++i)
    {
        for (int j=0; j<col; ++j)
            std::cout << matrix[i][j] << "\t";
        std::cout << std::endl;
    }
}


Как удобнее? А теперь представь, что таких функций несколько сотен. Или несколько десятков классов.

Большой проект, написанный в одном main.cpp - это как книга написанная на большом рулоне бумаги без оглавления, без содержания, без нумерации страниц.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2015, 14:35
Помогаю со студенческими работами здесь

Разделение программы на несколько файлов
Всем доброго времени суток! Возникла проблема - я написал небольшую програмку в main. #include &lt;stdio.h&gt; #include...

Шаблоны, разделение на несколько файлов
Добрый вечер! Написал обобщенный класс. Все работает, все ок. Да, вот только мне не нравится, что реализация методов идет в...

Разделение программы на несколько файлов
Здравствуйте, вот какой возник вопрос, я хотел написанную мною программу в одном файле, разделить на несколько файлов Header.h Sourсе.cpp...

Разделение mp4 на несколько файлов
Есть mp4 файл в кодеке h264, сформированный по трем разным каналам. Нужно по имеющемуся файлу сформировать три, соответственно каждому...

Разделение кода на несколько файлов
Здравствуйте!:senor: Помогите, пожалуйста, решить проблему. Она не столь тяжелая, но у меня не выходит. &lt;!-- Пример...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru