Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 3
Регистрация: 11.04.2014
Сообщений: 35

Расшифровка Полибия

30.09.2018, 08:33. Показов 7026. Ответов 11

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с расшифровкой Полибия, вот шифровка:
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
       char[,] alphavit = {
                                   {'А', 'Б', 'В', 'Г', 'Д', 'Е'},
                                   {'Ё', 'Ж', 'З', 'И', 'Й', 'К'},
                                   {'Л', 'М', 'Н', 'О', 'П', 'Р'},
                                   {'С', 'Т', 'У', 'Ф', 'Х', 'Ц'},
                                   {'Ч', 'Ш', 'Щ', 'Ъ' ,'Ы', 'Ь'},
                                   {'Э', 'Ю', 'Я', ' ', ' ',' '}
 
                               };
        private void button1_Click(object sender, EventArgs e)
        {
            string message = textBox1.Text;
            string new_message = "";
            for (int i = 0; i < message.Length; i++)
            {
                for (int j = 0; j < alphavit.GetLength(0); j++)
                    for (int k = 0; k < alphavit.GetLength(1); k++)
                        if (Char.ToLower(alphavit[j, k]) == message[i] || Char.ToUpper(alphavit[j, k]) == message[i])
                        {
                            new_message += (Convert.ToString(j+1) + Convert.ToString(k+1));
                            break;
                        }
                textBox2.Text = new_message;
 
            }
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.09.2018, 08:33
Ответы с готовыми решениями:

Расшифровка слов
Здравствуйте, помогите, пожалуйста, составить программу на языке C# для следующего задания. В записке слова зашифрованы – каждое из них...

Расшифровка кода
DataSet result; private void button1_Click(object sender, EventArgs e) { using (OpenFileDialog...

RSA расшифровка
Посмотрел тему - https://www.cyberforum.ru/csharp-beginners/thread1797020.html#post9482812 И OwenGlendower показал код шифрования и...

11
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16129 / 11253 / 2888
Регистрация: 21.04.2018
Сообщений: 33,086
Записей в блоге: 2
30.09.2018, 11:33
Цитата Сообщение от svirid Посмотреть сообщение
Помогите пожалуйста с расшифровкой Полибия, вот шифровка:
Шифрование Полибия - это семейство шифрований. В коде у Вас нет комментарий, поэтому понять какой именно Вы используете из методов шифрования трудно.
Или подробно закомментируйте код, или распишите используемый Вами метод.
0
0 / 0 / 3
Регистрация: 11.04.2014
Сообщений: 35
30.09.2018, 12:03  [ТС]
Это Квадрат Полибия, мы вводим текст, программа выдаёт координаты этой буквы
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16129 / 11253 / 2888
Регистрация: 21.04.2018
Сообщений: 33,086
Записей в блоге: 2
30.09.2018, 13:12
Цитата Сообщение от svirid Посмотреть сообщение
Это Квадрат Полибия, мы вводим текст, программа выдаёт координаты этой буквы
Вот простая статья https://ru.wikipedia.org/wiki/... 0%B8%D1%8F
Но даже в ней указано три метода шифрования по квадрату Полибия.
Вы конкретно в этом приложении какой метод используете?
0
0 / 0 / 3
Регистрация: 11.04.2014
Сообщений: 35
30.09.2018, 14:02  [ТС]
по второму методу
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16129 / 11253 / 2888
Регистрация: 21.04.2018
Сообщений: 33,086
Записей в блоге: 2
30.09.2018, 14:37
Буду писать сразу здесь.
Кусками с объяснениями.
Если что не понятно - сразу спрашивайте.

Добавлено через 14 минут
Насколько помню символы в квадрате должны быть уникальными, поэтому квадрат вместо трёх пробелов надо дополнить другими символами
C#
1
2
3
4
5
6
7
8
9
            char[,] alphavit =
            {
                {'А', 'Б', 'В', 'Г', 'Д', 'Е'},
                {'Ё', 'Ж', 'З', 'И', 'Й', 'К'},
                {'Л', 'М', 'Н', 'О', 'П', 'Р'},
                {'С', 'Т', 'У', 'Ф', 'Х', 'Ц'},
                {'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь'},
                {'Э', 'Ю', 'Я', ' ', ',', '.'}
            };
Добавлено через 4 минуты
Работа по квадратной матрице очень не удобна. Код будет путаный и трудночитаемый. Соответственно, вероятность ошибок будет высока.
Надо матрицу преобразовать в более удобный вид. Для этого создадим сначала структуру для элементов матрицы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        struct CharPolybStr
        {
            public char CharP { get; set; }
            public int Row { get; set; }
            public int Column { get; set; }
 
            public CharPolybStr(char CharP, int Row, int Column)
            {
                this.Row = Row;
                this.Column = Column;
                this.CharP = CharP;
            }
        }
Добавлено через 3 минуты
Создадим метод для преобразования матрицы в список
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        static List<CharPolybStr> ListPolyb(char[,] alphavit)
        {
            int RowCount = alphavit.GetLength(0); // Количество строк
            int ColCount = alphavit.GetLength(1); // Количество колонок
            if (RowCount != ColCount) return null;// Выход, если массив не квадратный
 
            List<CharPolybStr> ret = new List<CharPolybStr>(); // Создание списка для возврата
            for (int row = 0; row < RowCount; row++)
            {
                for (int col = 0; col < ColCount; col++)
                {
                    ret.Add(new CharPolybStr(alphavit[row,col], row, col));
                }
            }
 
            return ret;
        }
Добавлено через 44 секунды
И с помощью этого метода получим список элементов
C#
1
            List<CharPolybStr> AlphPolyb = ListPolyb(alphavit);
Добавлено через 50 секунд
Теперь у нас есть список по которому мы можем искать как по символам так и по координатам.
0
0 / 0 / 3
Регистрация: 11.04.2014
Сообщений: 35
30.09.2018, 14:53  [ТС]
Это конечно круто вы написали) но ладно, спасибо)
Теперь вопросы: Куда мне подавать строку и откуда получать координаты этой строки, и обратный процесс, подавать координаты и получать строку?
И что такое
C#
1
this.CharP = CharP;
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16129 / 11253 / 2888
Регистрация: 21.04.2018
Сообщений: 33,086
Записей в блоге: 2
30.09.2018, 15:33
По этому списку реализуем первое кодирование - перевод символов в координаты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            string message = "СООБЩЕНИЕ. ПРИВЕТ, ВСЕМ." /*textBox1.Text*/; // Исходный текст
 
            // переводим строку в верхний регистр и очищаем от символов которых нет в коде
            string mess = message.ToUpper().Where(x => AlphPolyb.FindIndex(y => y.CharP == x) >= 0).ToString();
 
            int count = mess.Length; // Длина сообщения для кодирования
 
            int[,] mess_cod = new int[count, 2]; // Массив для кодирования
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по строке 
            {
                CharPolybStr _CharPoly = AlphPolyb.Find(x => x.CharP == mess[Ind]); // Получение символа из шифра
                mess_cod[Ind, 0] = _CharPoly.Row; // Запись координат
                mess_cod[Ind, 1] = _CharPoly.Column;
            }
Добавлено через 57 секунд
Цитата Сообщение от svirid Посмотреть сообщение
Куда мне подавать строку и откуда получать координаты этой строки, и обратный процесс, подавать координаты и получать строку?
Я пишу и по ходу отправляю Вам. Ещё не всё написано.

Добавлено через 57 секунд
Цитата Сообщение от svirid Посмотреть сообщение
И что такое
C#
1
this.CharP = CharP;
Это в конструкторе идёт присваивание значения параметру сохраняемому свойству.

Добавлено через 10 минут
Создаём вторую матрицу с координатами считанными в другом порядке
C#
1
2
3
4
5
6
7
8
9
10
11
            int[,] mess_trans = new int[count, 2]; // Массив для последовательного считывания 
            int index = 0; // Индекс для подсчёта элементов
 
            for (int col = 0; col < 2; col++)
            { // Циклы для последовательно считывания координат и записи в другом порядке
                for (int row = 0; row < count; row++)
                {
                    mess_trans[index / 2, index % 2] = mess_cod[row, col];
                    index++;
                }
            }
Добавлено через 5 минут
Получаем выходную строку
C#
1
2
3
4
5
6
            string new_message = ""; // Строка для выходного кода
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по подготовленному массиву 
            {// Получение символов по трансформированным координатам
                new_message += AlphPolyb.Find(x => x.Row == mess_trans[Ind, 0] && x.Column == mess_trans[Ind, 1]);
            }
Добавлено через 20 секунд
Осталось только проверить.

Добавлено через 8 минут
Одна ошибка сразу выскочила надо
C#
1
2
            // переводим строку в верхний регистр и очищаем от символов которых нет в коде
            string mess = new string( message.ToUpper().Where(x => AlphPolyb.FindIndex(y => y.CharP == x) >= 0).ToArray()) ;
Добавлено через 6 минут
Ещё одна ошибка
C#
1
2
3
4
            for (int Ind = 0; Ind < count; Ind++) // Цикл по подготовленному массиву 
            {// Получение символов по трансформированным координатам
                new_message += AlphPolyb.Find(x => x.Row == mess_trans[Ind, 0] && x.Column == mess_trans[Ind, 1]).CharP;
            }
Всё работает!
0
0 / 0 / 3
Регистрация: 11.04.2014
Сообщений: 35
30.09.2018, 15:41  [ТС]
а можно файл проекта?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16129 / 11253 / 2888
Регистрация: 21.04.2018
Сообщений: 33,086
Записей в блоге: 2
30.09.2018, 15:57
Вот код целиком
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
        #region Расшифровка Полибия
 
        static void ExplanationPolybius()
        {
            char[,] alphavit =
            {
                {'А', 'Б', 'В', 'Г', 'Д', 'Е'},
                {'Ё', 'Ж', 'З', 'И', 'Й', 'К'},
                {'Л', 'М', 'Н', 'О', 'П', 'Р'},
                {'С', 'Т', 'У', 'Ф', 'Х', 'Ц'},
                {'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь'},
                {'Э', 'Ю', 'Я', ' ', ',', '.'}
            };
 
            List<CharPolybStr> AlphPolyb = ListPolyb(alphavit);
 
            string message = "СООБЩЕНИЕ. ПРИВЕТ, ВСЕМ." /*textBox1.Text*/; // Исходный текст
 
            // переводим строку в верхний регистр и очищаем от символов которых нет в коде
            string mess = new string( message.ToUpper().Where(x => AlphPolyb.FindIndex(y => y.CharP == x) >= 0).ToArray()) ;
 
            int count = mess.Length; // Длина сообщения для кодирования
 
            int[,] mess_cod = new int[count, 2]; // Массив для кодирования
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по строке 
            {
                CharPolybStr _CharPoly = AlphPolyb.Find(x => x.CharP == mess[Ind]); // Получение символа из шифра
                mess_cod[Ind, 0] = _CharPoly.Row; // Запись координат
                mess_cod[Ind, 1] = _CharPoly.Column;
            }
 
            int[,] mess_trans = new int[count, 2]; // Массив для последовательного считывания 
            int index = 0; // Индекс для подсчёта элементов
 
            for (int col = 0; col < 2; col++)
            { // Циклы для последовательно считывания координат и записи в другом порядке
                for (int row = 0; row < count; row++)
                {
                    mess_trans[index / 2, index % 2] = mess_cod[row, col];
                    index++;
                }
            }
 
            string new_message = ""; // Строка для выходного кода
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по подготовленному массиву 
            {// Получение символов по трансформированным координатам
                new_message += AlphPolyb.Find(x => x.Row == mess_trans[Ind, 0] && x.Column == mess_trans[Ind, 1]).CharP;
            }
 
        }
 
        static List<CharPolybStr> ListPolyb(char[,] alphavit)
        {
            int RowCount = alphavit.GetLength(0); // Количество строк
            int ColCount = alphavit.GetLength(1); // Количество колонок
            if (RowCount != ColCount) return null;// Выход, если массив не квадратный
 
            List<CharPolybStr> ret = new List<CharPolybStr>(); // Создание списка для возврата
            for (int row = 0; row < RowCount; row++)
            {
                for (int col = 0; col < ColCount; col++)
                {
                    ret.Add(new CharPolybStr(alphavit[row, col], row, col));
                }
            }
 
            return ret;
        }
 
        struct CharPolybStr
        {
            public char CharP { get; set; }
            public int Row { get; set; }
            public int Column { get; set; }
 
            public CharPolybStr(char CharP, int Row, int Column)
            {
                this.Row = Row;
                this.Column = Column;
                this.CharP = CharP;
            }
        }
 
        #endregion
0
0 / 0 / 3
Регистрация: 11.04.2014
Сообщений: 35
30.09.2018, 16:53  [ТС]
А как из этого когда ещё шифровку сделать, а то у меня шифровка по галимому написанная, а тут расшифровка по крутому?)

Добавлено через 17 минут
Вообщем куда подавать строку я понял, вопросы:
1) Мы подаём строку в "message" уже зашифрованную или текст?
2) откуда мне вывести координаты
3) Куда мне отправить координаты чтоб получить расшифровку
4)Откуда брать расшифрованный текст?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16129 / 11253 / 2888
Регистрация: 21.04.2018
Сообщений: 33,086
Записей в блоге: 2
30.09.2018, 17:46
Лучший ответ Сообщение было отмечено svirid как решение

Решение

Цитата Сообщение от svirid Посмотреть сообщение
Вообщем куда подавать строку я понял, вопросы:
Чтобы Вам было проще немного переделал код. Создал два метода шифрование и дешифрирование, и пример их использования
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
        #region Расшифровка Полибия
 
        static void ExplanationPolybius()
        {
            char[,] alphavit =
            {
                {'А', 'Б', 'В', 'Г', 'Д', 'Е'},
                {'Ё', 'Ж', 'З', 'И', 'Й', 'К'},
                {'Л', 'М', 'Н', 'О', 'П', 'Р'},
                {'С', 'Т', 'У', 'Ф', 'Х', 'Ц'},
                {'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь'},
                {'Э', 'Ю', 'Я', ' ', ',', '.'}
            };
 
            string message = "СООБЩЕНИЕ. ПРИВЕТ, ВСЕМ." /*textBox1.Text*/; // Исходный текст
 
            string message_coding = CodingPolybius(message, alphavit); // Кодирование
 
            string message_decoding = DeCodingPolybius(message_coding, alphavit); // Декодирование
        }
 
 
        static string CodingPolybius(string Message, char[,] PolybiusSquare)
        {
            List<CharPolybStr> AlphPolyb = ListPolyb(PolybiusSquare);
 
            // переводим строку в верхний регистр и очищаем от символов которых нет в коде
            string mess = new string(Message.ToUpper().Where(x => AlphPolyb.FindIndex(y => y.CharP == x) >= 0).ToArray());
 
            int count = mess.Length; // Длина сообщения для кодирования
 
            int[,] mess_cod = new int[count, 2]; // Массив для кодирования
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по строке 
            {
                CharPolybStr _CharPoly = AlphPolyb.Find(x => x.CharP == mess[Ind]); // Получение символа из шифра
                mess_cod[Ind, 0] = _CharPoly.Row; // Запись координат
                mess_cod[Ind, 1] = _CharPoly.Column;
            }
 
            int[,] mess_trans = new int[count, 2]; // Массив для последовательного считывания 
            int index = 0; // Индекс для подсчёта элементов
 
            for (int col = 0; col < 2; col++)
            { // Циклы для последовательно считывания координат и записи в другом порядке
                for (int row = 0; row < count; row++)
                {
                    mess_trans[index / 2, index % 2] = mess_cod[row, col];
                    index++;
                }
            }
 
            string new_message = ""; // Строка для выходного кода
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по подготовленному массиву 
            {// Получение символов по трансформированным координатам
                new_message += AlphPolyb.Find(x => x.Row == mess_trans[Ind, 0] && x.Column == mess_trans[Ind, 1]).CharP;
            }
 
            return new_message;
        }
 
        static string DeCodingPolybius(string Message, char[,] PolybiusSquare)
        {
            List<CharPolybStr> AlphPolyb = ListPolyb(PolybiusSquare);
 
            // переводим строку в верхний регистр и очищаем от символов которых нет в коде
            string mess = new string(Message.ToUpper().Where(x => AlphPolyb.FindIndex(y => y.CharP == x) >= 0).ToArray());
 
            if (mess.Length != Message.Length) return "ERROR - недопустимые символы!";
 
            int count = mess.Length; // Длина сообщения для кодирования
 
            int[,] mess_cod = new int[count, 2]; // Массив для декодирования
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по строке 
            {
                CharPolybStr _CharPoly = AlphPolyb.Find(x => x.CharP == mess[Ind]); // Получение символа из шифра
                mess_cod[Ind, 0] = _CharPoly.Row; // Запись координат
                mess_cod[Ind, 1] = _CharPoly.Column;
            }
 
            int[,] mess_trans = new int[count, 2]; // Массив для последовательного считывания 
            int index = 0; // Индекс для подсчёта элементов
 
            for(int row = 0; row < count; row++) 
            { // Циклы для последовательно считывания координат и записи в другом порядке
                for (int col = 0; col < 2; col++)
                {
                    mess_trans[index % count, index / count] = mess_cod[row, col];
                    index++;
                }
            }
 
            string new_message = ""; // Строка для выходного кода
 
            for (int Ind = 0; Ind < count; Ind++) // Цикл по подготовленному массиву 
            {// Получение символов по трансформированным координатам
                new_message += AlphPolyb.Find(x => x.Row == mess_trans[Ind, 0] && x.Column == mess_trans[Ind, 1]).CharP;
            }
 
            return new_message;
        }
 
        static List<CharPolybStr> ListPolyb(char[,] alphavit)
        {
            int RowCount = alphavit.GetLength(0); // Количество строк
            int ColCount = alphavit.GetLength(1); // Количество колонок
            if (RowCount != ColCount) return null;// Выход, если массив не квадратный
 
            List<CharPolybStr> ret = new List<CharPolybStr>(); // Создание списка для возврата
            for (int row = 0; row < RowCount; row++)
            {
                for (int col = 0; col < ColCount; col++)
                {
                    ret.Add(new CharPolybStr(alphavit[row, col], row, col));
                }
            }
 
            return ret;
        }
 
        struct CharPolybStr
        {
            public char CharP { get; set; }
            public int Row { get; set; }
            public int Column { get; set; }
 
            public CharPolybStr(char CharP, int Row, int Column)
            {
                this.Row = Row;
                this.Column = Column;
                this.CharP = CharP;
            }
        }
 
        #endregion
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.09.2018, 17:46
Помогаю со студенческими работами здесь

Распаковка/Расшифровка Файла
Есть одна игра,и к этой игре есть файлы с форматом &quot;.sf&quot;,мне нужно написать программу которая может Распаковать/Расшифровать эти файлы. ...

Расшифровка данных, NullReferenceException
Добрый день, есть windows forms с полем ключ (textbox1), поле для ввода данных (textbox2) и кнопки зашифровать и расшифровать, а также...

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

Расшифровка двойной перестановки. Не получается
Реализовал кое-как с помощью разных ресурсов двойную перестановку. Не получается расшифровать. Прочел, что нужно инициализировать все, как...

Расшифровка DPapi из Google Chrome
Вот код для получения 2 строк из cookie файла хрома, using System; using System.Collections.Generic; using System.Data.SQLite; ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru