Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/352: Рейтинг темы: голосов - 352, средняя оценка - 4.94
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847

Шифр Цезаря

25.09.2015, 20:32. Показов 74799. Ответов 4

Студворк — интернет-сервис помощи студентам
Хочу поделиться шифром Цезаря. Я взял код из интернета, точнее отсюда http://cybern.ru/cezar-csharp.html
Конечно мне высвечивались ссылки и на наш любимый форум, но там как всегда никто и никогда не выкладывает в конце свой рабочий код. Брать с ошибкой, разбираться и опять повторять решение этой ошибки по советом ниже мне не хотелось. Поэтом то я и взят из выше указанного ресурса.
Но так конечно-же ничего не работало и опять пришлось самому дорабатывать код. В итоге за 1ч ( знаю, что много, но я чай пил в этот момент ещё) я таки сделал код рабочим.
Поэтому представляю РАБОЧИЙ КОД. Если не работает, то пните меня

Не по теме:

Все кроме Ангелины


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
//Программа шифрования/дешифрования символов кирилицы шифром Цезаря
//Подключение библиотек
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Shifrovanie_Cezar
{
    class Program
    {
        static void Main()
        {
            //Цикл для повтора задачи
            do
            {
                string path = @"C:\Test.txt";
                //Переменная выбора шифрования/дешифрования
                uint k = 0;
                //Строка, к которой применяется шифрованияе/дешифрование
                string s = "";
                //Строка - результат шифрования/дешифрования
                string result = "";
                //Величина сдвига при шифровании/дешифровании
                uint shift;
                //Вывод сообщения на экран
                Console.WriteLine("Введите 1 для шифрования или 2 для дешифрования");
                //Считывание переменной выбора, пока она не станет равной 1 или 2
                while ((k != 1) && (k != 2))
                {
                    //Считывание переменной k, если введенные данные имеют тип uint
                    uint.TryParse(Console.ReadLine(), out k);
                    //Вывод сообщения об ошибке, если k != 1 или k != 2
                    if ((k != 1) && (k != 2))
                        Console.WriteLine("Ошибка ввода, повторите попытку");
                }
                //Вывод сообщения на экран
                Console.WriteLine("Введите величину сдвига");
                //Считывние величины сдвига
                while (!uint.TryParse(Console.ReadLine(), out shift))
                {
                    //Если введена неверная величина сдвига (отрицательное число, или не число)
                    Console.WriteLine("Ошибка ввода, повторите попытку");
                }
                //Если величина сдвига больше длины алфавита кирилицы
                if (shift > 32)
                    shift = shift % 32;
                //Если выбрано шифрование
                if (k == 1)
                {
                    //Вывод сообщения на экран
                    Console.WriteLine("Строка считывается из файла!");
                    //Считывание строки
                    s = File.ReadAllText(path, Encoding.Default);
                    //Выполение шифрования
                    //Цикл по каждому символу строки
                    for (int i = 0; i < s.Length; i++)
                    {
                        //Если не кириллица
                        if (((int)(s[i]) < 1040) || ((int)(s[i]) > 1103))
                            result += s[i];
                        //Если буква является строчной
                        if ((Convert.ToInt16(s[i]) >= 1072) && (Convert.ToInt16(s[i]) <= 1103))
                        {
                            //Если буква, после сдвига выходит за пределы алфавита
                            if (Convert.ToInt16(s[i]) + shift > 1103)
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) + shift - 32);
                            //Если буква может быть сдвинута в пределах алфавита
                            else
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) + shift);
                        }
                        //Если буква является прописной
                        if ((Convert.ToInt16(s[i]) >= 1040) && (Convert.ToInt16(s[i]) <= 1071))
                        {
                            //Если буква, после сдвига выходит за пределы алфавита
                            if (Convert.ToInt16(s[i]) + shift > 1071)
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) + shift - 32);
                            //Если буква может быть сдвинута в пределах алфавита
                            else
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) + shift);
                        }
                    }
                    //Вывод на экран зашифрованной строки
                    Console.WriteLine("Строка успешно зашифрована!");
                    StreamWriter sr = new StreamWriter(@"C:\Институт\4 курс\1 семестр\kriptografia_1\криптография 1\lab1\Test.txt",false);
                    sr.Write(result);
                    sr.Close();
                    Console.WriteLine(result);
                }
                //Если было выбрано дешифрование
                if (k == 2)
                {
                    //Вывод сообщения на экран
                    Console.WriteLine("Строка считывается из файла!");
                    //Считывание строки
                    //s = File.ReadAllText(path, Encoding.Default);- не читает если есть Encoding.Default
                    StreamReader sr = new StreamReader(@"C:\Институт\4 курс\1 семестр\kriptografia_1\криптография 1\lab1\Test.txt");
                    s = sr.ReadToEnd();
                    sr.Close();
                    //Time.Start();- вообще не нужно!
                    //Выполение дешифрования
                    //Цикл по каждому символу строки
                    for (int i = 0; i < s.Length; i++)
                    {
                        if (Convert.ToInt16(s[i]) == 32)
                            result += ' ';
                        //Если буква является строчной
                        if ((Convert.ToInt16(s[i]) >= 1072) && (Convert.ToInt16(s[i]) <= 1103))
                        {
                            //Если буква, после сдвига выходит за пределы алфавита
                            if (Convert.ToInt16(s[i]) - shift < 1072)
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift + 32);
                            //Если буква может быть сдвинута в пределах алфавита
                            else
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift);
                        }
                        //Если буква является прописной
                        if ((Convert.ToInt16(s[i]) >= 1040) && (Convert.ToInt16(s[i]) <= 1071))
                        {
                            //Если буква, после сдвига выходит за пределы алфавита
                            if (Convert.ToInt16(s[i]) - shift < 1040)
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift + 32);
                            //Если буква может быть сдвинута в пределах алфавита
                            else
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift);
                        }
                    }
                    //Вывод на экран дешифрованной строки
                    Console.WriteLine("Строка успешно дешифрована!");
                    StreamWriter sr1 = new StreamWriter(@"C:\Институт\4 курс\1 семестр\kriptografia_1\криптография 1\lab1\Test.txt", false);
                    sr1.Write(result);
                    sr1.Close();
                    Console.WriteLine(result);
                }
                Console.WriteLine("Для выхода из программы нажмите Escape");
            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
        }
    }
}
3
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2015, 20:32
Ответы с готовыми решениями:

Шифр Цезаря
Здравствуйте, понимаю что тема достаточно распространенная, но пишу программу для шифрования методом Цезаря и столкнулась с ошибкой, не...

Шифр Цезаря
Алфавит представляет из себя массив символов и задается методом setAlphabet; Значение сдвига задается методом setShift, сдвиг алфавита...

Шифр Цезаря
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace cezar { class Program ...

4
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
25.09.2015, 21:49
Цитата Сообщение от dan24 Посмотреть сообщение
РАБОЧИЙ КОД

Не по теме:

Любые односимвольные подстановочные шифры элементарно реализуются через XLAT-таблицы (256 байт) - Цезаря / ROT13 / Win1251-KOI8R / EBCDIC-ASCII ... что угодно еще, без if-ов и прочих ужасов.

0
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
02.10.2015, 16:05  [ТС]
Для тех, кому кажется прошлый код слишком простым
Код на основе частотного анализа. Тоже кривоват конечно.
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int sdvig;
        public static List<To_Analisiz_1> To_Analisiz = new List<To_Analisiz_1>();
        public class To_Analisiz_1
        {
            public char letter { get; set; }
            public int frequency { get; set; }
        }
        public class To_Rachifrowka_1
        {
            public char letter { get; set; }
            public int frequency { get; set; }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = null;
            sdvig = Convert.ToInt32(textBox3.Text);
            //Строка, к которой применяется шифрованияе/дешифрование
            string s = "";
            //Строка - результат шифрования/дешифрования
            string result = "";
            //Величина сдвига при шифровании/дешифровании
            uint shift;
            //Считывние величины сдвига
            while (!uint.TryParse(textBox3.Text, out shift))
            {
                //Если введена неверная величина сдвига (отрицательное число, или не число)
                MessageBox.Show("Ошибка ввода, повторите попытку");
            }
            //Считывание строки
            s = textBox1.Text;
            //Выполение шифрования
            //Цикл по каждому символу строки
            for (int i = 0; i < s.Length; i++)
            {
                //Если не кириллица
                if (((int)(s[i]) < 1040) || ((int)(s[i]) > 1103))
                    result += s[i];
                //Если буква является строчной
                if ((Convert.ToInt16(s[i]) >= 1072) && (Convert.ToInt16(s[i]) <= 1103))
                {
                    //Если буква, после сдвига выходит за пределы алфавита
                    if (Convert.ToInt16(s[i]) + shift > 1103)
                        //Добавление в строку результатов символ
                        result += Convert.ToChar(Convert.ToInt16(s[i]) + shift - 32);
                    //Если буква может быть сдвинута в пределах алфавита
                    else
                        //Добавление в строку результатов символ
                        result += Convert.ToChar(Convert.ToInt16(s[i]) + shift);
                }
                //Если буква является прописной
                if ((Convert.ToInt16(s[i]) >= 1040) && (Convert.ToInt16(s[i]) <= 1071))
                {
                    //Если буква, после сдвига выходит за пределы алфавита
                    if (Convert.ToInt16(s[i]) + shift > 1071)
                        //Добавление в строку результатов символ
                        result += Convert.ToChar(Convert.ToInt16(s[i]) + shift - 32);
                    //Если буква может быть сдвинута в пределах алфавита
                    else
                        //Добавление в строку результатов символ
                        result += Convert.ToChar(Convert.ToInt16(s[i]) + shift);
                }
            }
 
 
                  
            for (int i = 0; i < textBox1.Text.Length; i++)
            {
                char Kodir_Bukwa;
                Kodir_Bukwa = textBox1.Text[i];
                if ((Kodir_Bukwa != '0') & (Kodir_Bukwa != '1') & (Kodir_Bukwa != '2') & (Kodir_Bukwa != '3') & (Kodir_Bukwa != '4') & (Kodir_Bukwa != '5') & (Kodir_Bukwa != '6') & (Kodir_Bukwa != '7') & (Kodir_Bukwa != '8') & (Kodir_Bukwa != '9') & (Kodir_Bukwa != '\r') & (Kodir_Bukwa != '\n') & (Kodir_Bukwa != '-') & (Kodir_Bukwa != '•') & (Kodir_Bukwa != ' ') & (Kodir_Bukwa != ',') & (Kodir_Bukwa != '.') & (Kodir_Bukwa != '(') & (Kodir_Bukwa != ')') & (Kodir_Bukwa != ';') & (Kodir_Bukwa != ':') & (Kodir_Bukwa != '!') & (Kodir_Bukwa != '?'))
                    textBox2.Text += Convert.ToChar(Kodir_Bukwa + sdvig);
                else textBox2.Text += Convert.ToChar(Kodir_Bukwa); 
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox2.Text;
            textBox2.Text = null;
            var To_Rachifrowka = new List<To_Rachifrowka_1>();
            Chet_To_Rachifrowka(To_Rachifrowka);
            sort_Chet_Rachifrowka(To_Rachifrowka);
            Dechifrowka(To_Rachifrowka);
        }
 
        private void Dechifrowka(List<To_Rachifrowka_1> decryption)
        {
            
            for (int i = 0; i < textBox1.Text.Length; i++)
            {
                if (Char.IsLetter(textBox1.Text, i))
                {
                    //ищем букву в массиве зашифорованного текста, с целью определения ее частоты
                    To_Rachifrowka_1 result = decryption.Find(
                        delegate(To_Rachifrowka_1 letters)
                        {
                            return letters.letter == textBox1.Text[i];
                        }
                        );
                    //ищем букву с такой же частотой, какая была в зашифрованном тексте
                    To_Analisiz_1 result_1 = To_Analisiz.Find(
                       delegate(To_Analisiz_1 letters_1)
                       {
                           return letters_1.frequency == result.frequency;
                       }
                       );
                    textBox2.Text += result_1.letter;
                    // т.е. щ- 23.  ищем щ и определяем число в зашифроманном тексте - 23.
                    // ищем 23 в анализируемом ранее тексте. 23 - о. Значит там не щ, а о!
                }
                else textBox2.Text += textBox1.Text[i];
            }
        }
        //Не понятно как передать колекцию T
        private void Chet_To_Analisiz(List<To_Analisiz_1> ab)
        {
            for (int i = 0; i < textBox1.Text.Length; i++)
            {
                if (Char.IsLetter(textBox1.Text, i))
                {
                    To_Analisiz_1 result = ab.Find(
                      delegate(To_Analisiz_1 letters)
                      {
                          return letters.letter == textBox1.Text[i];
                      }
                      );
                    if (result == null)
                    {
                        ab.Add(new To_Analisiz_1(){letter = textBox1.Text[i],frequency =1});
                    }
                    else
                    {
                        result.frequency +=1;
                    }
                }
                else
                    continue;
            }
        }
        private void Chet_To_Rachifrowka(List<To_Rachifrowka_1> ab)
        {
            for (int i = 0; i < textBox1.Text.Length; i++)
            {
                if (Char.IsLetter(textBox1.Text, i))
                {
                    To_Rachifrowka_1 result = ab.Find(
                      delegate(To_Rachifrowka_1 letters)
                      {
                          return letters.letter == textBox1.Text[i];
                      }
                      );
                    if (result == null)
                    {
                        ab.Add(new To_Rachifrowka_1() { letter = textBox1.Text[i], frequency = 1 });
                    }
                    else
                    {
                        result.frequency += 1;
                    }
                }
                else
                    continue;
            }
        }
        private void sort_Chet_Rachifrowka(List<To_Rachifrowka_1> Sort)
        {
            Sort.Sort((To_Rachifrowka_1 a, To_Rachifrowka_1 b) => a.frequency.CompareTo(b.frequency));
        }
        private void sort_Chet_Analisiz(List<To_Analisiz_1> Sort)
        {
             Sort.Sort((To_Analisiz_1 a, To_Analisiz_1 b) => a.frequency.CompareTo(b.frequency));  
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text.ToLower();
            
            Chet_To_Analisiz(To_Analisiz);
            To_Analisiz.Sort((To_Analisiz_1 a, To_Analisiz_1 b) => a.frequency.CompareTo(b.frequency));
            sort_Chet_Analisiz(To_Analisiz);
            string g = "";
            g = "Буквы- Частота" + Environment.NewLine;
            for (int i = 0; i < To_Analisiz.Count; i++)
            {
                g += To_Analisiz[i].letter + " " + To_Analisiz[i].frequency + Environment.NewLine;
               // g += Convert.ToChar(To_Analisiz[0, i]) + " " + To_Analisiz[1, i].ToString() + Environment.NewLine;
               
            } textBox2.Text=(g);
        }
 
 
    }
}
Чтобы заработало на форму нужно кинуть 3 текст бокса и 3 кнопки.

Добавлено через 3 минуты
Принцип работы:
1) Анализ(3)
Надо нажать на кнопку анализ
2)Шифрование.
Надо нажать на кнопку шифрование(1)
3)Дешифрирование
Не работает, если ранее не был проведён анализ! Т.е. нужно скормить программе какой-нибудь текст для анализа, можно тот же.
После чего жмите на кнопку.

https://msdn.microsoft.com/ru-... 00%29.aspx- чтобы разобраться с делигатами
0
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
03.10.2015, 10:57
dan24, Шифрование, в котором есть привязка к алфавиту делается с привязкой к алфавиту. Коды символов здесь не нужны ибо алфавитов куча, а, допустим, пользовательский алфавит еще сложнее будет реализовать.

вот не большой пример:
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
class CaesarCipher
{
    static string alph = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"; 
 
    public static string Encryption(string text)
    {  
        var res = new StringBuilder();
        for (int i = 0; i < text.Length; i++)
            for (int j = 0; j < alph.Length; j++)
                if (text[i] == alph[j]) res.Append(alph[(j + 3) % alph.Length]);
 
        return res.ToString();
    }
    public static string Decryption(string crypt)
    {
        var res = new StringBuilder();
        for (int i = 0; i < crypt.Length; i++)
            for (int j = 0; j < alph.Length; j++)
                if (crypt[i] == alph[j]) res.Append(alph[(j - 3 + alph.Length) % alph.Length]);
 
        return res.ToString();
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        string text = "абвя";
 
        string crypt = CaesarCipher.Encryption(text);
        string decrypt = CaesarCipher.Decryption(crypt);
 
        Console.WriteLine("текст: {0}, криптограмма: {1}, дешифрованный текст: {2}", text, crypt, decrypt);
 
        Console.ReadLine();
    }
}
Конечно переменную алфавит можно сделать свойством для дальнейшего изменения, учитывать или не учитывать регистр и тп, но данный вариант читается проще, как по мне и подходит для любого алфавита практически.
1
 Аватар для Tsorion_9
1 / 1 / 0
Регистрация: 15.04.2015
Сообщений: 9
11.05.2019, 12:38
Вдруг еще кто зайдет сюда, может поможет мой вариант кода.
Рабочая программа с буквой ё и знаками препинания.

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
using System;
 
namespace Decoder
{
    class Program
    {
        public static String CaesarCipher(String cipherText, Int32 key)
        {
            String alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
            String cipherTextLow = cipherText.ToLower();
            Char[] sourceText = new Char[cipherTextLow.Length];
            Int32 j = 0; 
 
            for (Int32 i = 0; i < cipherTextLow.Length; i++)
            {
                if (!Char.IsLetter(cipherTextLow[i]))
                    sourceText[i] = cipherTextLow[i];
                else
                {
                    sourceText[i] = '|';
                    while (sourceText[i] == '|')
                    {
                        if (cipherTextLow[i] == alphabet[j])
                        {
                            try
                            {
                                sourceText[i] = alphabet[j - key];
                            }
                            catch
                            {
                                sourceText[i] = alphabet[(j - key) + 33];
                            }
                        }
                        j++;
                    }
                    j = 0;
                }
            }
 
            return new String(sourceText);
        }
 
        static void Main(string[] args)
        {
            Console.WriteLine(CaesarCipher("Фхнжйч!", 5));
 
            Console.ReadKey();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2019, 12:38
Помогаю со студенческими работами здесь

Дешифратор Шифр Цезаря
Привет, делаю лабу, написал шифр цезаря вот код: Console.WriteLine(&quot;Введите слово,которое нужно зашифровать:&quot;); string...

Шифр Цезаря(неточности)
Шифр Цезаря. Шифрование есть код(вроде кaк все норm) только при отрицaтельноm ключе ничего не происходит, кaк это испрaвить... ...

Шифр Цезаря без ключа
Реализовать шифр Цезаря без ключа, с загрузкой словаря. Т.е ввожу заранее закодированную фразу, программа проверяет ее и выводит правильную...

Шифр цезаря с ключевым словом
Помогите реализовать программу,пожалуйста? Процедур шифрования и расшифрования с использованием шифра Цезаря при вводе с клавиатуры ключа и...

Шифр цезаря с ключевым словом
Здравствуйте. Мне необходимо реализовать программу дешифровки цезаря с ключевым словом. Я использую метод частотного анализа, и проверки...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-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. Пошагово создадим проект для загрузки изображения. . .
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, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru