Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/96: Рейтинг темы: голосов - 96, средняя оценка - 4.96
 Аватар для RiG1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474

Шарики двигаются внутри pictereBox-a и отталкиваются от стенок

09.07.2011, 20:31. Показов 20606. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Балуясь, написал программульку. Шарики двигаются внутри pictereBox-a и отталкиваются от стенок.
Вот как это выглядит

Вот выкладываю прогу в текущем состоянии. WindowsFormsApplication7.zip
Переписал полностью, вывел шары в отдельный класс. На данный момент 2 проблемы:
1) Создание шаров "один в другом". Решение с помощью проверки на пересечение при генерации не подходит я думаю, т.к. при большом кол-ве шаров им просто не будет хватать места... нужно что-то другое
2) Так и не смог ничего сделать чтобы шары реалистично отталкивались. Пока тупо отправляются в разные стороны при соударении.
Подскажите как решить это, желательно в виде кода).

Код
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
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 WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        List<shar> balllist = new List<shar>(); // список экземпляров (шаров)
        int razmer,kolvo;
        Random rand = new Random(DateTime.Now.Millisecond);
 
        public class shar
        {
            public int X,Y; // Координаты
            public int R; // Радиус (половина размера)
            public int dX,dY; // Путь за 1 тик таймера
 
            // Заполнение данных о шаре 
            public shar(int Razm,Random rand)
            {
                R = Razm; // Размер шара        
                X = rand.Next(R, 700); // Координаты центра
                Y = rand.Next(R, 300);
                dX = rand.Next(1, 10); // Путь за один tick таймера (в пикселях)
                dY = rand.Next(1, 10);
            }
 
            // Рисование
            public void drawBall(PaintEventArgs e)
            {
                Graphics rg = e.Graphics;
                Pen pen = new Pen(Color.Red);
                // Отрисовка шаров
                rg.DrawEllipse(pen, X-(R/2), Y-(R/2), R, R);
            }
 
            //рассчет траектории
            public void beginBall(int width, int height, int razm)
            {
                if (X <= (razm/2)) dX = -dX; // Если координата Х <= 10 то меняем направление движения по оси Х на противоположное
                if (X >= width - (razm/2)) dX = -dX;
                if (Y <= (razm/2)) dY = -dY; // Если координата У <= 10 то меняем направление движения по оси У на противоположное
                if (Y >= height - (razm / 2)) dY = -dY;
 
                // прибавляем к текущей координате изменение пути
                X += dX;
                Y += dY;
            }
 
            // соударение шаров друг с другом
            public void collisionball(shar ball1,int razmer)
            {
                if ((Math.Pow(X - ball1.X, 2) + Math.Pow(Y - ball1.Y, 2) <= Math.Pow(razmer, 2)))
                {
                    dX = -dX;
                   // dY = -dY;
                }
                
 
            }
      
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            razmer = Convert.ToInt32(textBox2.Text);
            kolvo = Convert.ToInt32(textBox1.Text);
            balllist.Clear(); // Очищаем список шаров
            for (int i = 0; i < kolvo; i++)
            {
                balllist.Add(new shar(Convert.ToInt32(textBox2.Text), rand)); // Заполнение списка шаров
            }
            
        }
 
        private void tick(object sender, EventArgs e)
        {
            // Метод проверки соударения друг с другом
            for (int i = 0; i < balllist.Count; i++)
                for (int j = 0; j < balllist.Count; j++)
                {
                    if (i != j)
                        balllist[i].collisionball(balllist[j], razmer);
                }
 
            // Метод проверки соударения со стенками
            foreach (shar ball in balllist)
                ball.beginBall(pictureBox1.Width,pictureBox1.Height,razmer);
 
            pictureBox1.Invalidate(); // Перерисовка
        }
 
        private void paint(object sender, PaintEventArgs e)
        {
            foreach (shar ball in balllist)
                ball.drawBall(e); // Само рисование
        }
 
        private void speed(object sender, EventArgs e)
        {
            timer1.Interval = (trackBar1.Maximum + 1 - trackBar1.Value) * 10; // Скорость
        }
    }
}
2
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2011, 20:31
Ответы с готовыми решениями:

Шарики двигаются внутри pictereBox-a и отталкиваются от стенок.
Балуясь, написал программульку. Шарики двигаются внутри pictereBox-a и отталкиваются от стенок. Вот как это выглядит Хочется...

Анимация. Два квадрата двигаются в противоположном направлении и отталкиваются от стенок синего квадрата
Два квадрата двигаются в противоположном направлении и отталкиваются от стенок синего квадрата:

Шарики отталкиваются от стен и друг друга
Нужна помощь с программой, где несколько шариков отталкиваются от стен и бьются друг об друга. Вот код, где один шар летает по форме и...

22
09.07.2011, 21:20

Не по теме:

Хех, прикольно.

0
155 / 155 / 30
Регистрация: 19.10.2009
Сообщений: 319
09.07.2011, 23:01
Я б стал это делать с помощью векторов. В WPF есть класс Vector, здесь, похоже, WinForms, но можно его сделать самостоятельно, например:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Vector{
public Vector(double x, double y){
X=x;
Y=y;
}
 
public double X{get;set;}
public double Y{get;set;}
 
public static operator+ Vector (Vector v1, Vector v2){
 return new Vector(v1.X+v2.X,v1.Y+v2.Y);
}
 
public void Rotate(double angle){
  X=X*Math.Cos(angle)-Y*Math.Sin(angle);
  Y=X*Math.Sin(angle)+Y*Math.Cos(angle);
}
 
public double Length{get{return Math.Sqrt(Math.Pow(X,2)+Math.Pow(Y,2));}}
 
}
И так далее. Схему векторов по мне лучше всего изобразить на бумажке, как-то так

А потом уже выполнить действия над векторами в программе.
0
 Аватар для RiG1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
10.07.2011, 00:04  [ТС]
Цитата Сообщение от Ilya81 Посмотреть сообщение
Я б стал это делать с помощью векторов. В WPF есть класс Vector, здесь, похоже, WinForms, но можно его сделать самостоятельно, например:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Vector{
public Vector(double x, double y){
X=x;
Y=y;
}
 
public double X{get;set;}
public double Y{get;set;}
 
public static operator+ Vector (Vector v1, Vector v2){
 return new Vector(v1.X+v2.X,v1.Y+v2.Y);
}
 
public void Rotate(double angle){
  X=X*Math.Cos(angle)-Y*Math.Sin(angle);
  Y=X*Math.Sin(angle)+Y*Math.Cos(angle);
}
 
public double Length{get{return Math.Sqrt(Math.Pow(X,2)+Math.Pow(Y,2));}}
 
}
И так далее. Схему векторов по мне лучше всего изобразить на бумажке, как-то так
Вложение 87497
А потом уже выполнить действия над векторами в программе.
Честно говоря не понял
0
 Аватар для Питекантроп
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
10.07.2011, 03:48
Лучший ответ Сообщение было отмечено как решение

Решение

RiG1,
Сделайте так.
И будет все ОК.

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.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        List<shar> balllist = new List<shar>(); // список экземпляров (шаров)
        int razmer,kolvo;
        Random rand = new Random(DateTime.Now.Millisecond);
 
        public class shar
        {
            public double X, Y; // Координаты
            public int R; // Радиус (половина размера)
            public double dX, dY; // Путь за 1 тик таймера
            public bool flag = false;
            public int radius;
 
            // Заполнение данных о шаре 
            public shar(int Razm,Random rand)
            {
                radius = (R = Razm) / 2;
                dX = (rand.NextDouble() - 0.5) * 5; // Путь за один tick таймера (в пикселях)
                dY = (rand.NextDouble() - 0.5) * 5;
            }
 
            // Рисование
            public void drawBall(PaintEventArgs e)
            {
                Graphics rg = e.Graphics;
                Pen pen = new Pen(Color.Red);
                // Отрисовка шаров
                rg.DrawEllipse(pen, (float)X - radius, (float)Y - radius, R, R);
            }
 
            //рассчет траектории
            public void beginBall(int width, int height, int razm)
            {
                if (X <= (razm/2) && dX<0) dX = -dX; // Если координата Х <= 10 то меняем направление движения по оси Х на противоположное
                if (X >= width - (razm/2) && dX>0) dX = -dX;
                if (Y <= (razm/2) && dY<0) dY = -dY; // Если координата У <= 10 то меняем направление движения по оси У на противоположное
                if (Y >= height - (razm / 2) && dY > 0) dY = -dY;
                radius = razm/2;
                // прибавляем к текущей координате изменение пути
                X += dX;
                Y += dY;
            }
 
            // соударение шаров друг с другом
            public bool BallOwerlap(shar ball1)
            {
                return (X - ball1.X) * (X - ball1.X) + (Y - ball1.Y) * (Y - ball1.Y) <= 
                    (radius + ball1.radius) * (radius + ball1.radius);
            }
            public bool collisionball(shar ball1, bool enable)
            {
                if (BallOwerlap(ball1))
                {
                    if (enable)
                    {
                        double dx = ball1.X - X, dy = ball1.Y - Y;
                        double alfa = Math.Atan2(dy, dx);
                        double angle = Math.Atan2(dY, dX) - alfa, angleBall = Math.Atan2(ball1.dY, ball1.dX) - alfa,
                            mod = Math.Sqrt(dX * dX + dY * dY), modBall = Math.Sqrt(ball1.dX * ball1.dX + ball1.dY * ball1.dY);
                        double newDX1 = mod * Math.Cos(angle), newDY = mod * Math.Sin(angle),
                            newDX = modBall * Math.Cos(angleBall), newDY1 = modBall * Math.Sin(angleBall);
                        angle = Math.Atan2(newDY, newDX) + alfa;
                        angleBall = Math.Atan2(newDY1, newDX1) + alfa;
                        mod = Math.Sqrt(newDX * newDX + newDY * newDY);
                        modBall = Math.Sqrt(newDX1 * newDX1 + newDY1 * newDY1); 
                        dX = mod * Math.Cos(angle);
                        dY = mod * Math.Sin(angle);
                        ball1.dX = modBall * Math.Cos(angleBall);
                        ball1.dY = modBall * Math.Sin(angleBall);
 
                    }
                    return true;
                }
                return false; 
            }
      
        }
 
        bool[,] colisions;
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            timer1.Interval = (trackBar1.Maximum + 1 - trackBar1.Value) * 3;
            razmer = Convert.ToInt32(textBox2.Text);
            int r = razmer / 2;
            kolvo = Convert.ToInt32(textBox1.Text);
            balllist.Clear(); // Очищаем список шаров
            colisions = new bool[kolvo, kolvo];
                
                for (int i = 0; i < kolvo; i++)
                {
                    for (int j = 0; j < kolvo; j++) colisions[i,j] = false;
                    shar s = new shar(Convert.ToInt32(textBox2.Text), rand);
                    bool collis = true;
                    do{
                        s.X = rand.Next(10, pictureBox1.Width - r);
                        s.Y = rand.Next(r, pictureBox1.Height - r);
                        collis = false;
                        foreach (shar s1 in balllist) if (collis = s.BallOwerlap(s1)) break;
                    } while (collis);
                    balllist.Add(s); // Заполнение списка шаров
                }
        }
 
        private void tick(object sender, EventArgs e)
        {
            // Метод проверки соударения друг с другом
            for (int i = 0; i < balllist.Count-1; i++)
                for (int j = i+1; j < balllist.Count; j++)
                {
                    colisions[i, j] = balllist[i].collisionball(balllist[j], !colisions[i, j]);
                }
            // Метод проверки соударения со стенками
            foreach (shar ball in balllist)
                ball.beginBall(pictureBox1.Width,pictureBox1.Height,razmer);
 
            pictureBox1.Invalidate(); // Перерисовка
        }
 
        private void paint(object sender, PaintEventArgs e)
        {
            foreach (shar ball in balllist)
                ball.drawBall(e); // Само рисование
        }
 
        private void speed(object sender, EventArgs e)
        {
            timer1.Interval = (trackBar1.Maximum + 1 - trackBar1.Value) * 3; // Скорость
        }
    }
}
5
 Аватар для RiG1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
10.07.2011, 13:15  [ТС]
Питекантроп, спасибо, а можно немного откомментить код?
0
7 / 15 / 0
Регистрация: 08.03.2011
Сообщений: 100
10.07.2011, 13:36
А как сделать так , чтобы когда два шарика соприкасаются, они не отталкивались бы друг от друга, а слиплялись в более большой шарик?
0
 Аватар для Питекантроп
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
11.07.2011, 00:00
Цитата Сообщение от Питекантроп Посмотреть сообщение
public double X, Y;
public double dX, dY;
// сделали координаты double, чтобы не было ошибок целочисленного счета.
Цитата Сообщение от Питекантроп Посмотреть сообщение
bool[,] colisions;
Если шары ударились, то соответствующий элемент этого массива - тру. Если на следующей итерации они будут еще пересекаться (такое бывает), то операцию расчета траектории не производить. Последнее реализовано в проверке
C#
1
2
3
4
                    if (enable)
                    {
..............
                    }
Сам процесс расчета траектории исходит из закона сохранения энергии, имплульса и геометрических проеобразований.
Смысл такой:
1. узнать угол между столкнувшимся шарами.
2. перевести вектора движений шаров в систему координат А,В (центры шаров)
3. составить систему из двух уравнений в системе АВ, решить, решение - новые направления.
4. перевести решения в исходную систему координат.
Если кому интересно - даю скрин рассчетов. Довольно сумбурно, но разобрать можно.

теперь код.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
                        double dx = ball1.X - X, dy = ball1.Y - Y;
                        double alfa = Math.Atan2(dy, dx); // нашли угол между центрами шаров
                        double angle = Math.Atan2(dY, dX) - alfa, angleBall = Math.Atan2(ball1.dY, ball1.dX) - alfa,
                            mod = Math.Sqrt(dX * dX + dY * dY), modBall = Math.Sqrt(ball1.dX * ball1.dX + ball1.dY * ball1.dY); // angle,angleBall - сразу ищем угол в системе координат АВ, mod,modBall - нашли модули
                        double newDX1 = mod * Math.Cos(angle), newDY = mod * Math.Sin(angle),
                            newDX = modBall * Math.Cos(angleBall), newDY1 = modBall * Math.Sin(angleBall);  
// рассчитали новые величины (Vx, Vy на скрине) в системе координат АВ. Тут смысл в том, что Х составляющие меняем между шарами, У составляющие оставляем прежними. Т.к. Х - направление силы между шарами (см. расчеты). А У в данном случае - ортогональная сила, на нее ни что не действует, она остается прежней.
 
 
                        angle = Math.Atan2(newDY, newDX) + alfa;
                        angleBall = Math.Atan2(newDY1, newDX1) + alfa;
                        mod = Math.Sqrt(newDX * newDX + newDY * newDY);
                        modBall = Math.Sqrt(newDX1 * newDX1 + newDY1 * newDY1); 
// рассчитали новый угол и модуль векторов 
                        dX = mod * Math.Cos(angle);
                        dY = mod * Math.Sin(angle);
                        ball1.dX = modBall * Math.Cos(angleBall);
                        ball1.dY = modBall * Math.Sin(angleBall);
// рассчитали координаты векторов. Для справки  Для справки: угол, модуль и составляющие Х,У - взаимозависимы и взаимовычисляемы. Физика, 7 класс.
Миниатюры
Шарики двигаются внутри pictereBox-a и отталкиваются от стенок  
0
155 / 155 / 30
Регистрация: 19.10.2009
Сообщений: 319
11.07.2011, 11:12
Цитата Сообщение от RiG1 Посмотреть сообщение
Честно говоря не понял
Ну я имею в виду, раз
сделать чтобы шары реалистично отталкивались. Пока тупо отправляются в разные стороны при соударении.
то для правильного моделирования нужно выполнить сложение исходного вектора скорости с новым, который получается при соударении. Если брать их массу равной, то имульсы будут определять скорости. При расчёте новых скоростей, насколько я помню, учитывается закон сохранения импульса и закон сохранения энергии. Энергия в данном случае пропорциональна квадрату длины вектора. Я б даже при перемещении стал б выполнять сложение исходных координат с вектором скорости (опять ж, если принять, что интервалы времени фиксированы). В общем, лучше всего именно как-то так описать класс вектора, и на бумажке решить несколько несложных уравнений ньютоновской механики, и тогда реалистичность будет.
0
 Аватар для Питекантроп
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
12.07.2011, 14:34
Лучший ответ Сообщение было отмечено как решение

Решение

Если будет интересно - можете посмотреть проект. Я исправил некоторые баги и добавил физики.
Еще когда-то давно хотел замутить такую штуку, а тут RiG1 мне напомнил =))

Barmaglo, кстати, тут есть и ответ на ваш вопрос. Слияние шариков тоже добавлено.
Вложения
Тип файла: zip WindowsFormsApplication7.zip (72.7 Кб, 58360 просмотров)
7
 Аватар для RiG1
28 / 28 / 4
Регистрация: 12.03.2011
Сообщений: 474
12.07.2011, 20:15  [ТС]
Питекантроп, браво!) яб о таком и не подумал бы даже)
0
7 / 7 / 1
Регистрация: 29.05.2011
Сообщений: 45
15.11.2011, 01:57
А за программирование магнетизма (или гравитации) сделать в таком примере как? Взять грубо говоря два радиуса, где один - внутрненний (сам шар), а второй - внешний (предел действия самой силы) и если по внешнему радиусу идёт столкновение, то начинается непосредственное сближение, но как сделать именно реалистичное сближение? Или есть более удобный способ?
0
0 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 4
24.03.2012, 19:30
проект скачал шарики что надо. НО проблема. при попытке воспроизвести у себя путем набора кода или копировании, ошибок в компиляции не возникает но шарики почему то не отображаются. Может подскажите в чем причина?
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
24.03.2012, 20:18
Rooke, там рисование идет по событию Paint, инициализируйте его для вашей панели, ну или на чем вы рисуете
0
0 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 4
24.03.2012, 21:34
да действительно. у самих компонентов надо было просто выставить обработчики. спасибо большое. туплю просто чета.
0
ReZart
04.07.2013, 18:10
А можно переделать эту программу для С++?
Если да,то не могли бы посоветовать в каком именно компиляторе и хотя бы общий смысл кода
0 / 0 / 0
Регистрация: 18.01.2023
Сообщений: 3
18.01.2023, 11:52
Добрый день, хочу скачать этот файл, но он не скачивается. Могли бы вы отправить его снова если у вас получится его скачать или он остался у вас с 2011 года?
0
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765
18.01.2023, 12:01
Цитата Сообщение от Vladislav Sheva Посмотреть сообщение
но он не скачивается
Скачивается и корректно запускается в VS2022. Попробуйте из другого браузера или через другого провайдера.
0
0 / 0 / 0
Регистрация: 18.01.2023
Сообщений: 3
18.01.2023, 12:03
можно ссылочку на google disk??
0
0 / 0 / 0
Регистрация: 18.01.2023
Сообщений: 3
18.01.2023, 12:08
вот как это выглядит, попробовал с телефона через мобильную сеть, не грузит.
Миниатюры
Шарики двигаются внутри pictereBox-a и отталкиваются от стенок   Шарики двигаются внутри pictereBox-a и отталкиваются от стенок  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2023, 12:08
Помогаю со студенческими работами здесь

Шарики отскакивают от стенок
Сделал, чтобы 1 шарик отскакивал от стенок. А можете сделать, чтобы так себя вели 2 шарика и отталкивались друг от друга?

Шарики отскакивают от стенок
подскажите: как сделать что бы шары отталкивались от стенок?

Шарики отбиваются от стенок и друг от друга ...
реализовал шарик который отбивается от стенок. вот то что у меня получилось: #include &lt;vcl.h&gt; #pragma hdrstop #include...

Изобразить движение шарика внутри коробки с отражением от стенок
Создать массив из 8-ми объектов, изображающих движение шарика внутри коробки с отражением от стенок. Форма и размер коробки, скорость...

Как можно сделать, чтобы шары отскакивали внутри круга от стенок и между собой?
Как можно сделать, что-бы шары отскакивали внутри круга от стенок и между собой?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru