Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495

Не выводит данные в DataGridView

16.12.2018, 23:50. Показов 4245. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Опять я. Я написал свою програмку, но у меня не выводит данные из файла в DataGridView. Данные записываю в класс, а объекты класса записываю в List. Потом провожу сериализацию(в основной форме) и десериализацию в форме, где вывожу таблицу рекордов.
Вот код:
Кликните здесь для просмотра всего текста
Здесь код основной формы:
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.IO.Compression;
using System.IO;
 
namespace Minesweeper
{
    public partial class Form1 : Form
    {
        int height = 7; 
        int width = 7;  
        int distanseBetweenButtons = 22;
        ButtonExtended[,] allButtons;
        int amount_buttons;
        int EmptyCell;
        Data_achievements result = new Data_achievements("", "", "");
        Stopwatch stopWatch = new Stopwatch();
        public Form1()
        {
            
            InitializeComponent();
        }
 
 
        private void Form1_Load(object sender, EventArgs e)
        {
            GenerateField();
        }
        void GenerateField ()
        {
            groupBox1.Text = width.ToString() + " x " + height.ToString();
            stopWatch.Start();
            result.sizeOf_Field = width.ToString() + "x" + height.ToString();//** size of field remembering
            amount_buttons = height * width;
            int numerator_mineOrNot = 0;
            allButtons = new ButtonExtended[width, height];
            Random rng = new Random();
            for (int x = 10; (x - 10) < width * distanseBetweenButtons; x += distanseBetweenButtons)
            {
                for (int y = 20; (y - 20) < height * distanseBetweenButtons; y += distanseBetweenButtons)
                {
                    ButtonExtended button = new ButtonExtended();
                    button.Location = new Point(x, y);
                    button.Size = new Size(21, 21);
                    if (rng.Next(0, 101) < 20)
                    {
                        button.isBomb = true;
                        numerator_mineOrNot++;
                    }
                    allButtons[(x - 10) / distanseBetweenButtons, (y - 20) / distanseBetweenButtons] = button; //We put our created buttons in array
                    groupBox1.Controls.Add(button); 
                    //creating field and checking on mine
                    
                    EmptyCell = amount_buttons - numerator_mineOrNot;
 
                    button.Click += new EventHandler(FieldClick);
                }
            }
        }
        void FieldClick(object sender, EventArgs e)
        {
            EmptyCell--;
            //function which will call with each click on button
            ButtonExtended button = (ButtonExtended)sender;
            if(EmptyCell == 0)// win condition
            {
                EmptyFieldClick(button);
                for (int x = 0; x < width; x++)
                {
                    for (int y = 0; y < height; y++)
                    {
                        if (allButtons[x, y].isBomb)
                        {
                            allButtons[x, y].Text = "*";
                        }
                    }
                }
                stopWatch.Stop();
                TimeSpan result_time = stopWatch.Elapsed;
                result.time = String.Format("{0:00}:{1:00}:{2:00}", result_time.Hours, result_time.Minutes, result_time.Seconds);
                request Request_form = new request();
                Request_form.Show();
                Achievements_recording(result);
                Disactiveted();
            }
            if(button.isBomb == true)
            {
                stopWatch.Stop();
                Explode(button);
            }
            else
            {
                EmptyFieldClick(button);
                button.Enabled = false;
            }
        }
        void Explode(ButtonExtended button)
        {
            
            for(int x = 0; x < width; x++)
            {
                for(int y = 0; y < height; y++)
                {
                    if (allButtons[x,y].isBomb)
                    {
                        allButtons[x, y].Text = "*";
                    }
                }
            }
            Disactiveted(); 
            MessageBox.Show("You lose!");
        }
        void EmptyFieldClick(ButtonExtended button)
        {
            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                  if(allButtons[x,y] == button)
                  {
                        button.Text = "" + CountBombsAround(x, y);
                  }
                }
            }
        }
        
        int CountBombsAround (int xB, int yB)
        {
            int bombsCount = 0;
            for (int x = xB - 1; x <= xB + 1 ; x++)
            {
                for (int y = yB - 1; y <= yB + 1; y++)
                {
                    if(x >= 0 && x < width && y >= 0 && y < height)
                    {
                        if(allButtons[x, y].isBomb)
                        {
                            bombsCount++;
                        }
                    }
                    
                }
            }
            return bombsCount;
        }
 
        private void x10ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Activeted(); 
            groupBox1.Controls.Clear(); 
            //size for form (255; 300)
            width = 7;
            height = 7;
            GenerateField();
        }
 
        private void x5ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Activeted(); 
            groupBox1.Controls.Clear(); 
            //size for form (190; 228)
            width = 10;
            height = 10;
            GenerateField();
        }
 
        private void x15ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Activeted(); 
            groupBox1.Controls.Clear(); 
            //size for form (365; 405)
            width = 15;
            height = 15;
            GenerateField();
        }
 
        void Disactiveted () 
        {
            groupBox1.Enabled = false;
        }
 
        void Activeted () 
        {
            groupBox1.Enabled = true;
        }
 
        private void рекордиToolStripMenuItem_Click(object sender, EventArgs e)//**
        {
            Form2 _achievements = new Form2();
            _achievements.Show();
            _achievements.Size = new Size(250, 250);
        }
 
        void Achievements_recording(Data_achievements results)//**
        {
            List<Data_achievements> recording = new List<Data_achievements>();
            using (request userNAME = new request())
            {
                result.user_name = userNAME.userName;
            }
            recording.Add(results);
 
            var formatter = new BinaryFormatter();
 
            // Запись
            using (var fileStream = new FileStream("Minesweep_result.bin", FileMode.Create))
            using (var zipStream = new GZipStream(fileStream, CompressionMode.Compress))
            {
                formatter.Serialize(zipStream, recording);
            }
        }
    }
}

Здесь код класса, который собирает данные:
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Minesweeper
{
    [Serializable]
    class Data_achievements
    {
        private string User_name { get; set; }
        private string Time { get; set; }
        private string SizeOf_Field { get; set; }
 
        public string user_name { get; set; }
        public string time { get; set; }
        public string sizeOf_Field { get; set; }
 
        public Data_achievements (string user_name, string time, string sizeOf_Field)
        {
            this.user_name = user_name;
            this.time = time;
            this.sizeOf_Field = sizeOf_Field;
        }
            
    }
}

Вот здесь код формы которая принимает введённое игроком имя:
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Minesweeper
{
    public partial class request : Form
    {
        public string userName
        {
            get { return textBox1.Text; }
        }
        
 
        public request()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Hide();
        }
    }
}

А тут код формы которая содержит таблицу DataGridView и выводит сохраненные в файле данные на экран:
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.IO.Compression;
using System.IO;
 
namespace Minesweeper
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
 
        }
 
        void data_output()
        {
            var formatter = new BinaryFormatter();
            List<Data_achievements> gift = new List <Data_achievements>();
            // Чтение
            using (var fileStream = new FileStream("data.bin", FileMode.Open))
            using (var zipStream = new GZipStream(fileStream, CompressionMode.Decompress))
            {
                gift = (List<Data_achievements>)formatter.Deserialize(zipStream);
            }
 
            //create table with name: "Results"
            DataTable table = new DataTable("Результати");
 
            //create objects DataColumn
            var user_name = new DataColumn("Ім'я");
            var time = new DataColumn("Час");
            var field = new DataColumn("Поле");
 
            //add objects DataColumn in DataTable
            table.Columns.Add(user_name);
            table.Columns.Add(time);
            table.Columns.Add(field);
 
            //for each elements add row in table
            foreach (Data_achievements results in gift)
            {
                DataRow row = table.NewRow();
                row["Ім'я"] = results.user_name;
                row["Час"] = results.time;
                row["Поле"] = results.sizeOf_Field;
            }
            dataGridView1.DataSource = table;
        }
    }
}


Программа работает, игра - играется, компиляор - не ругаеться. Единственное, что не так: то-ли вывод данных в таблицу не работает, то ли класс данные не собирает и не записывает. Помогите, пожалуйста.
P. S. еще прикрепляю код файлом:
Minesweeper.rar
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2018, 23:50
Ответы с готовыми решениями:

Не выводит данные в DataGridView
Почему то не выводит в DataGridView данные которые больше чем 0.6.Когда u = 0.7 или больше цикл этого не видит и ничего не...

Во втором DataGridView отобразить данные, используя значения выбранной строчки первого DataGridView
Доброго времени суток, Ув. Форумчане! Такой вопрос: Во во втором DataGridView отобразить данные используя значения выбранной строчки...

Подставить данные из combobox в DatagridView при создании новой записи в этом DatagridView
Здравствуйте! Возможно я плохо искал, но я искал ответ или наводку на решение. Подскажите пожалуйста: Есть таблица User, записи которой...

16
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
17.12.2018, 00:04
Iangyl, Чёт не пойму, есть метод data_output, который читает файл data.bin. Ни одной ссылки на метод в проекте нет. Файла тоже. С чего бы ему заполняться ?
0
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
17.12.2018, 00:47  [ТС]
PoPsa85, не понимаю. Можно поподробнее, что мне нужно сделать, а то я это все делал практически не понимая, что делаю(имею введу сериализацию, десериализаию и работу с DataGridView).

Добавлено через 1 минуту
PoPsa85, имеете введу, что я этот метод нигде не вызываю?

Добавлено через 28 секунд
А ссылка на файл, где должна быть?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
17.12.2018, 00:47
Iangyl, А что не понятного ? Метод есть. А его никто не запускает.
Я имею в виду файла data.bin в папке проекта нет.
0
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
17.12.2018, 01:07  [ТС]
PoPsa85, а разве он не запускается при вызове формы, которая отвечает за таблицу рекордов?

Добавлено через 1 минуту
Такой вызов будет считатся?
как здесь в основной форме:
C#
1
2
3
4
private void Form1_Load(object sender, EventArgs e)
        {
            GenerateField();
        }
только это будет в форме с таблицей и метод data_output?

Добавлено через 6 минут
PoPsa85, насчёт файла - здесь нашёл оплошность: я записывал в "Minesweep_result.bin", а читал не существующий. Уже поменял.

Добавлено через 2 минуты
Я заглянул в файл этот, там что-то написано(я просто несколько игр выиграл), по идее мне должно сразу вывести если будет с кодом все в порядке?

Добавлено через 45 секунд
И это может значить, что с записью все в порядке, ведь так?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
17.12.2018, 01:07
Iangyl, Будет. Метод измените:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        void data_output()
        {
            var formatter = new BinaryFormatter();
            List<Data_achievements> gift = new List <Data_achievements>();
            // Чтение
            using (var fileStream = new FileStream("Minesweep_result.bin", FileMode.Open))
            using (var zipStream = new GZipStream(fileStream, CompressionMode.Decompress))
            {
                gift = (List<Data_achievements>)formatter.Deserialize(zipStream);
            }
 
            dataGridView1.DataSource = gift;
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            data_output();
        }
Пробуйте. Если в первой форме вручную запись добавить. То всё работает.
C#
1
2
3
4
void Achievements_recording(Data_achievements results)//**
        {
            List<Data_achievements> recording = new List<Data_achievements>();
           recording.Add(new Data_achievements("Mt", "29.10.2010", "7x7"));
P.S. только он по-моему новые результаты не добавляет, а перезаписывает. Не вникал особо. Потестируйте, потом спросите если что.
P.P.S Ну да судя по коду. Перезаписывает.
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
17.12.2018, 02:11  [ТС]
Закинул data_output сюда:
C#
1
2
3
4
5
public Form2()
        {
            InitializeComponent();
 
        }
Начало работать, да перезаписывает, пробовал разными способами идёт перезапись, и имя не показывает.
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
17.12.2018, 09:15
Iangyl, При записи нужно десериализовать в список. Добавлять в него новое значение и заново сериализовать.
0
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
17.12.2018, 19:49  [ТС]
PoPsa85, что-то не уловил ход мыслей. Объясните пожалуйста.
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
17.12.2018, 20:50
Iangyl, При сохранении результата. Десериализуете файл, получаете List<Data_achievements> добавляете в него результат и сериализуете.
0
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
17.12.2018, 23:58  [ТС]
PoPsa85, вот так?
В форме для записи данных, в таком порядке?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
18.12.2018, 00:34
Iangyl, Так. Давайте начнем с того, что чуть наведем порядок.
В файл Data_achievements.cs добавте
C#
1
2
3
4
    class AchievementsCollection
    {
        public static List<Data_achievements> records = new List<Data_achievements>();
    }
В файл Form1.cs добавте
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        List<Data_achievements> PrepareRecords()
        {
            var formatter = new BinaryFormatter();
           
            using (var fileStream = new FileStream("Minesweep_result.bin", FileMode.Open))
            using (var zipStream = new GZipStream(fileStream, CompressionMode.Decompress))
            {
                return (List<Data_achievements>)formatter.Deserialize(zipStream);   
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            AchievementsCollection.records = PrepareRecords();
            GenerateField();
        }
Теперь при каждом запуске программы у вас есть лист AchievementsCollection.records в который вы будете добавлять результаты игроков.
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
19.12.2018, 01:25  [ТС]
PoPsa85, List in List? Как это понять? И что мне тогда выводить в таблицу?

Добавлено через 2 минуты
C#
1
2
3
4
    class AchievementsCollection
    {
        public static List<Data_achievements> records = new List<Data_achievements>();
    }
Является ли он сериализуемый?

Добавлено через 1 минуту
А это, я так понял:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Achievements_recording(Data_achievements results)//**
        {
            List<Data_achievements> recording = new List<Data_achievements>();
            using (request userNAME = new request())
            {
                result.user_name = userNAME.userName;
            }
            recording.Add(results);
 
            var formatter = new BinaryFormatter();
 
            // Запись
            using (var fileStream = new FileStream("Minesweep_result.bin", FileMode.Create))
            using (var zipStream = new GZipStream(fileStream, CompressionMode.Compress))
            {
                formatter.Serialize(zipStream, recording);
            }
Нужно заменить вот этим куском кода:
C#
1
2
3
4
5
6
7
8
9
10
List<Data_achievements> PrepareRecords()
        {
            var formatter = new BinaryFormatter();
           
            using (var fileStream = new FileStream("Minesweep_result.bin", FileMode.Open))
            using (var zipStream = new GZipStream(fileStream, CompressionMode.Decompress))
            {
                return (List<Data_achievements>)formatter.Deserialize(zipStream);   
            }
        }
Добавлено через 33 секунды
Или нет?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
19.12.2018, 11:27
Лучший ответ Сообщение было отмечено Iangyl как решение

Решение

Цитата Сообщение от Iangyl Посмотреть сообщение
List in List? Как это понять?
Где вы тут увидели List in List. AchievementsCollection это имя класса. List<Data_achievements> records Это коллекция для хранения ваших записей, она доступна из любой формы.
Цитата Сообщение от Iangyl Посмотреть сообщение
А это, я так понял:
Этот метод работает неправильно он записывает данные до того как получает user_name. Долго рассказывать.
Вот смотрите, если что спрашивайте.
Вложения
Тип файла: zip Minesweeper.zip (75.1 Кб, 2 просмотров)
1
 Аватар для Iangyl
32 / 34 / 21
Регистрация: 31.03.2018
Сообщений: 495
19.12.2018, 17:26  [ТС]
PoPsa85, вот эти участки объясните пожалуйста, каким образом записываются данные и самое интересное как вы используете класс Data_achievements, я просто немного растерялся в его работе это меня больше всего путает: List из Data_achievements но данные из AchievementsCollection
Миниатюры
Не выводит данные в DataGridView   Не выводит данные в DataGridView  
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
19.12.2018, 18:59
Лучший ответ Сообщение было отмечено Iangyl как решение

Решение

Iangyl, На первом скрине. Ничего не записывается. PrepareRecors Это метод который возвращает переменную с типом List<Data_achivements>. В которую уже десериализован ваш файл Minesweep_result.bin Т.е. если в коде выполнить
C#
1
var result = PrepareRecords()
то это будет равнозначно тому. что вы сначала создатите лист List<Data_achievements> result = new List<Data_achievements>(); а потом в него десериализуете ваш файл.
Цитата Сообщение от Iangyl Посмотреть сообщение
путает: List из Data_achievements но данные из AchievementsCollection
AchievementsCollection - это класс, который содержит List класса Data_achievements. Вы этот лист можете и в своем классе прописать, разницы нет. Тогда обращаться к нему придется Data_achievements.records. Просто для более ясного поняминая что к чему принадлежит, у вас логика работы с таблицей рекордов находится в отдельном классе. Список - куда сереилизуются и откуда десериализуются данные, переменные, в которые вы записываете. А то что там переменные дублируются. Это я вписал, что бы проверить сериализацию. Вы можете оставить метод, который сохраняли и раньше. Главное, убедитесь что username вы получили перед записью.
1
21.12.2018, 02:04  [ТС]

Не по теме:

PoPsa85, большое спасибо!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2018, 02:04
Помогаю со студенческими работами здесь

Как перенести все данные из DataGridVIew в другую DataGridView, которая находится во второй форме
Как перенести все данные из DataGridVIew в другую DataGridView, которая находится во второй форме?

Перенести данные dataGridView в другую dataGridView на другой форме
Есть Form1 на которой расположен dataGridView1. Как мне данные из этой dataGridView1 перенести на dataGridView2, которая находиться на...

Нужно, чтобы при выборе элемента в одном DataGridView отображались связанные данные в другом DataGridView
Есть две связанные таблицы и соответственно два DataGridView, нужно, чтобы при выборе элемента в одном DataGridView отображались связанные...

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

Как в php сделать поиск? Вводить данные, нажимать на кнопку, скрипт по базе ищет данные и выводит
Можно ли в php сделать поиск? Вводить данные например, нажимать на кнопку и он по базе ищет эти данные и выводит И подскажите...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru