Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.10.2021
Сообщений: 38

Слияние файлов

05.11.2022, 10:49. Показов 765. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть 4 файла с отсортированными сериями. Мне нужно первые числа из кажого файла сравнивать между собой и наименьший записать в 5 файл. Затем нужно поставить указатель в том файле где нашли наименьший и взять следуещее число и сравнивать с прошлыми числами из других фалов и также сравнивать и наименьший записать в 5 файл. И так пока все числа из всех файлов не будут записаны по данноому аллгоритму в 5 файл.
Например имеем 4 файла:

{89,40,62,75,51,68,18,69,90}
{12,99,88,77,94,21}
{50,68,4,85,25,29,5}
{54,80,2,14}
мы сравниваем первые числа из всех файлов. Тобишь: 89, 12, 50, 54. Меньший это 12. Его и вписываем в 5 файл. Затем указатель смещается на следующее число в том файле где стоял прошлый наименьший элемент. То есть бы берем сл.числа: 89, 99,50,54. Меньший это 50. Его и вписываем в 5 файл. Указатель теперь в 3 файле. След.цифры которые мы будем сравнивать это: 89, 99, 68,54. И так далее. Я тут что пробовоал начертить и пока получается выводить только первые числа файлов и найти минимальный элемент среди этих чисел. Ну а дальше я в недоумение. Нужно как то обозначить метку что бы знать из какого файла взять слудующее число. Я думал сделать это при помощи сегмента кода где я нахожу минимальное число. Я запоминаю на каком месте находится это минимальное число. Это и будет номером нашего файла. Помогите пожалуйста
Вот мой код:
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
 static void Main(string[] args)
        {
            double[] nums2 = new double [] { 2,3,17,7,8,9,1,4,6,9,2,3,1,18 };
            RecordFile(nums2); //это метод при помощи которого я вписываю изначальные числа по файлам, не обращайте внимания
 
            // в массив запишем какие файлы считывать
            string[] nameFiles = { "a.txt", "b.txt", "c.txt", "d.txt" };
            string[] fiveArray = new string[nameFiles.Length];
            int[] num = new int[4];//создаем массив с размерностью количеств наших файлов
 
            for (int i = 0; i < nameFiles.Length; i++)
            {
                string t = File.ReadAllText(nameFiles[i]);
                int[] files = t.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(x => int.Parse(x)).ToArray();
                //тут в каждом файле находим первые элементы всех файлов и добовляем в массив
                for (int j = 0; j < files.Length; j++)
                {
                    num[i] = files[j];
                    break;
                }
 
 
               
                fiveArray[i] = files.Min().ToString();
               
            }
 
            //File.WriteAllText("e.txt", fiveArray.Min()); 
                                                           
            int min = num[0], minIndex = 0;
        
            for (int r = 0; r < num.Length; r++)
            {
                if (min > num[r])
                {
                    min = num[r];
                    minIndex = r;
                }
            }
            Console.Write(min + "место=" + minIndex);
 
            Console.ReadLine();
 
        }
 
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2022, 10:49
Ответы с готовыми решениями:

Слияние двух отсортированных по убыванию значений элементов файлов F1 и F2
Разработать программу слияния двух отсортированных по убыванию значений элементов файлов F1 и F2. Результатом слияния должен быть файл F3,...

Слияние строк
привет есть строка которую нельзя изменять. string def = &quot;abcca&quot;; нужно поочереди заменять буквы в исходнике. Вопрос как мне сделать...

Слияние массивов
Добрый день. Решил задачу, в Visual Studio все прекрасно работает, но когда пытаюсь залить на сайт выдает ошибку..... Подскажите...

17
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
05.11.2022, 12:13
Nolic12, Можно попробовать загрузить все данные с файлов, обработать их и записать вывод в результирующий файл.

Пример ниже загружает каждый файл, вытаскивает из него только числа и помещает эти числа в очередь (Queue).
Затем все такие очереди помещаются в один массив.
Потом ищем минимальное число на первых позициях для каждой очереди. Добавляем это число в результат и удаляем из той очереди, где оно было. Делаем это всё до тех пор, пока все очереди не окажутся пустыми.

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.Text.RegularExpressions;
 
namespace CyberForum
{
    public class Program
    {
        static void Main()
        {
            string pathRoot = "D:\\";
            string[] fileNames = { "file_1.txt", "file_2.txt", "file_3.txt", "file_4.txt" };
 
            List<Queue<int>> filesData = new List<Queue<int>>();
 
            for (int i = 0; i < fileNames.Length; i++)
            {
                string fileText = File.ReadAllText(Path.Combine(pathRoot, fileNames[i]));
                int[] numbers = Regex.Split(fileText, @"\D+").Select(int.Parse).ToArray();
                Queue<int> queue = new Queue<int>(numbers);
                filesData.Add(queue);
            }
 
            List<int> result = new List<int>();
 
            while (filesData.Count > 0)
            {
                int min = filesData[0].Peek();
                int minIndex = 0;
 
                for (int i = 1; i < filesData.Count; i++)
                {
                    if (filesData[i].Peek() < min)
                    {
                        min = filesData[i].Peek();
                        minIndex = i;
                    }
                }
 
                result.Add(filesData[minIndex].Dequeue());
 
                if (filesData[minIndex].Count == 0)
                    filesData.RemoveAt(minIndex);
            }
 
 
            Console.WriteLine(String.Join(", ", result));
            File.WriteAllText(Path.Combine(pathRoot, "result.txt"), string.Join(", ", result));
        }
 
    }
}
Текст в файле result.txt12, 50, 54, 68, 4, 80, 2, 14, 85, 25, 29, 5, 89, 40, 62, 75, 51, 68, 18, 69, 90, 99, 88, 77, 94, 21
1
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
05.11.2022, 12:48
А это некая визуализация происходящего. Где берётся минимальный элемент с начала очереди и мигает, после чего добавляется в результат и удаляется из очереди.

0
0 / 0 / 0
Регистрация: 21.10.2021
Сообщений: 38
06.11.2022, 14:33  [ТС]
samana, немножко не то. в смысле что мне нужно что бы когда какой то файл заканчивался то его последний элемент оставался и сравнивался со всеми остольными пока все файлы не дойдут до конца.

Добавлено через 31 минуту
samana, можно ли как то создать условие что если какой то файл дошел до конца то он не должен удалять число, а оставлять для последующего сравнения?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.11.2022, 19:00
Цитата Сообщение от Nolic12 Посмотреть сообщение
мне нужно что бы когда какой то файл заканчивался то его последний элемент оставался и сравнивался со всеми остольными пока все файлы не дойдут до конца.
Странное требование.
Судя по описанию, вы реализуете внешнюю сортировку, а такое условие пустит ее под откос.
Например, если последний элемент в файле — на данный момент наименьший, то такой алгоритм уйдет в бесконечный цикл и будет писать одно и то же значение в выходной файл пока не закончится место на диске.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3414 / 2735 / 575
Регистрация: 04.09.2018
Сообщений: 8,583
Записей в блоге: 3
06.11.2022, 19:25
Цитата Сообщение от kolorotur Посмотреть сообщение
то такой алгоритм уйдет в бесконечный цикл
Это, смотря как организовать. Если представить содержимое 4-х файлов в виде одномерных массивов, то алгоритм примерно следующий:
1. просматриваем все [0]-е элементы этих массивов и выбираем наименьшее.
2. в том массиве, где найдено наименьшее - инкрементируем индекс, при условии, что не достигли конца этого массива.
3. запоминаем в каком массиве найден минимальный элемент. При следующем просмотре сравниваем уже с [i+1] элементом этого массива.
4. повторяем с п.1. ...
И так до того момента, пока все индексы массивов не смогут инкрементироваться, т.к. достигли их длин. Те массивы, что "остановились" раньше выбьют сами себя, т.к. только в одном из них окажется минимальное значение. Или не окажется, по сравнению, например, с самым длинным...
Т.е. пока никакого бесконечного цикла не прослеживается...

Добавлено через 1 минуту
Для удобства, можно представить эти 4 массива в виде одного int[][].
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.11.2022, 21:33
Цитата Сообщение от wizard41 Посмотреть сообщение
Т.е. пока никакого бесконечного цикла не прослеживается
Ну потому что у вас прямое противоречие условию:
Цитата Сообщение от wizard41 Посмотреть сообщение
Те массивы, что "остановились" раньше выбьют сами себя
Цитата Сообщение от Nolic12 Посмотреть сообщение
условие что если какой то файл дошел до конца то он не должен удалять число, а оставлять для последующего сравнения
Как же он выбьет сам себя, если последний элемент по условию должен продолжать участвовать в сравнении?
А что если этот последний элемент — минимальный из 4-х?

По-хорошему он должен записываться на выход, а массив/файл исключаться из дальнейших сравнений как пустой/завершенный — как это делается во внешней сортировке и как вы предложили.
Но автору, похоже, не так надо.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3414 / 2735 / 575
Регистрация: 04.09.2018
Сообщений: 8,583
Записей в блоге: 3
06.11.2022, 21:51
Цитата Сообщение от kolorotur Посмотреть сообщение
Как же он выбьет сам себя, если последний элемент по условию должен продолжать участвовать в сравнении?
kolorotur, ну про то и речь, т.е. один или несколько массивов из цепочки "дойдут" до конца и остановятся: таким образом их последние элементы все еще участвуют в сравнении. И их не нужно "удалять" никуда, пока не закончится массив максимальной длины.
Если в процессе поиска минимального эл-та такой окажется в массиве более коротком, чем другой, то он там и остается для дальнейших сравнений.
Автор, действительно, не до конца понимает сути необходимого алгоритма, и всех, в добавок, путает какими-то "удалениями", хотя это вовсе не требуется.

Добавлено через 3 минуты
Цитата Сообщение от kolorotur Посмотреть сообщение
А что если этот последний элемент — минимальный из 4-х?
Пока он является минимальным - инкрементируются другие массивы и сравниваются с этим.

Добавлено через 42 секунды
А этот нет, т.к. индекс уже стоит на его последнем элементе.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.11.2022, 22:05
Цитата Сообщение от wizard41 Посмотреть сообщение
инкрементируются другие массивы и сравниваются с этим
Зачем?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3414 / 2735 / 575
Регистрация: 04.09.2018
Сообщений: 8,583
Записей в блоге: 3
06.11.2022, 22:22
Цитата Сообщение от kolorotur Посмотреть сообщение
Зачем?
Из этих 4-х массивов по индексу 'j' в каком-то будет минимальное значение. Верно? Ну, согласно условию задания.
Это значение мы берем и пишем в некий 5-й массив, затем это число (элемент) уже выбывает из сравнения. Следовательно, индекс этого массива увеличивается, дабы сравнивать уже число i+1.
Далее, обнаружилось, что минимальный элемент оказался в массиве jn[0], теперь индекс минимального значения по 'j' смещается к n-ному массиву. Его число так же выбывает и уже индекс следующего поиска в этом массиве так же увеличивается на единицу. И так до тех пор, пока индекс в самом длинном массиве не достигнет конца.

Добавлено через 10 минут
Образно:
возьмем исходные данные из файлов автора и вольем их в зубчатый.
C#
1
2
3
4
5
6
7
8
9
10
11
            int[][] source = new int[ 4 ][]
            {
                new int[] { 89,40,62,75,51,68,18,69,90 },
                new int[] { 12,99,88,77,94,21 },
                new int[] { 50,68,4,85,25,29,5 },
                new int[] { 54,80,2,14 }
            };
 
            int maxlenght = source[ 0 ].Length;
            for ( int i = 1; i < source.Length; i++ )
                if ( maxlenght < source[ i ].Length ) maxlenght = source[ i ].Length;
Введем некоторую переменную:
C#
1
(int i, int j) minidx = (0, 0);
которая будет хранить индексы текущего минимального эл-та по i,j.
Увеличивая j мы каждый раз будем проверять, не достиг ли source[i] конца своей длины... Если нет, то j++
Далее, следующие проверки...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.11.2022, 22:42
wizard41, да я знаю как работает внешняя сортировка.
Мне непонятно желание автора продолжать использовать последний элемент каждого массива в сравнении с элементами других массивов и ваше с этим согласие.
Какой в этом смысл? Массив закончился - все, его можно игнорировать.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3414 / 2735 / 575
Регистрация: 04.09.2018
Сообщений: 8,583
Записей в блоге: 3
06.11.2022, 22:49
Цитата Сообщение от kolorotur Посмотреть сообщение
Массив закончился - все, его можно игнорировать.
А теперь цитирую вас же: а если именно в нем минимальный элемент?

Добавлено через 1 минуту
Цитата Сообщение от wizard41 Посмотреть сообщение
а если именно в нем минимальный элемент?
P.S. на момент текущей итерации другого массива, который еще не закончился...

Добавлено через 5 минут
Цитата Сообщение от kolorotur Посмотреть сообщение
Мне непонятно желание автора
Думаю, желание автора делать что-то с этим -> стремится к нулю. Того требует задание, и от автора требуют его решения ))
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.11.2022, 23:14
Цитата Сообщение от wizard41 Посмотреть сообщение
а если именно в нем минимальный элемент?
То он передается на вывод как минимальный на этой итерации и данный массив исключается из дальнейших итераций как полностью обработанный.
Зачем продолжать этот элемент сравнивать с элементами других массивов на дальнейших итерациях, если он уже обработан и выведен?

Добавлено через 2 минуты
wizard41, на всякий случай, а то может между нами непонимание из-за противоречий в условии и в приведенных для примера данных:
Цитата Сообщение от Nolic12 Посмотреть сообщение
У меня есть 4 файла с отсортированными сериями.
То, что следом идет пример с 4-мя не-отсортированными массивами — это отдельная песня.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3414 / 2735 / 575
Регистрация: 04.09.2018
Сообщений: 8,583
Записей в блоге: 3
06.11.2022, 23:21
Цитата Сообщение от kolorotur Посмотреть сообщение
и данный массив исключается
А, ну это да, конечно.
Я немного отошел от предмета дискуссии: первоначально я, собственно, подверг сомнению ваше высказывание про бесконечный цикл. Который парировал ограниченностью длины самого длинного массива, по достижению которого, все дальнейшие обработки вполне себе прекратятся.

Добавлено через 2 минуты
Цитата Сообщение от kolorotur Посмотреть сообщение
с 4-мя не-отсортированными массивами
да, это заметно. Я не стал это говорить, ибо на ход задачи этот факт не особо влияет. Мы ведь сравниваем элементы по "вертикали".
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.11.2022, 23:32
Цитата Сообщение от wizard41 Посмотреть сообщение
я, собственно, подверг сомнению ваше высказывание про бесконечный цикл.
Бесконечный цикл там получался именно из-за того, что автор хотел продолжать использовать последний элемент массива для сравнения с "текущими" элементами остальных массивов.
Если этот последний элемент — минимальный из текущих, то при такой постановке задачи индексы остальных массивов не будут увеличиваться.
Ну например:
a = { 1, 1 }
b = { 2, 3, 4 }
c = { 5, 6, 7 }

1. Сравниваются a[0], b[0] и c[0].
2. a[0] — минимальный и передается на вывод
3. Индекс a увеличивается с 0 на 1.
4. Сравниваются a[1], b[0] и c[0].
5. a[1] — минимальный и передается на вывод
6. a[1] — последний, но все равно остается в массиве для дальнейшего сравнения с остальными.
7. Сравниваются a[1], b[0] и c[0].
8. a[1] — минимальный и передается на вывод
9. a[1] — последний, но все равно остается в массиве для дальнейшего сравнения с остальными.
10. Сравниваются a[1], b[0] и c[0].
11. a[1] — минимальный и передается на вывод
12. a[1] — последний, но все равно остается в массиве для дальнейшего сравнения с остальными.
13. И так далее.

Вот нормальная реализация такой сортировки:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
IEnumerable<T> ExternalSort<T>(IEnumerable<IEnumerable<T>> input, IComparer<T>? comparer = null)
{
    comparer ??= Comparer<T>.Default;
    var iterators = new HashSet<IEnumerator<T>>();
    foreach (var sequence in input)
    {
        var iterator = sequence.GetEnumerator();
        if (iterator.MoveNext())
            iterators.Add(iterator);
    }
 
    while (iterators.Any())
    {
        var min = iterators.MinBy(i => i.Current, comparer);
        yield return min.Current;
 
        if (!min.MoveNext())
            iterators.Remove(min);
    }
}
Использование:
C#
1
2
3
4
5
6
7
8
9
var files = new[]
{
    File.ReadLines("a.txt"),
    File.ReadLines("b.txt"),
    File.ReadLines("c.txt"),
    File.ReadLines("d.txt"),
};
 
File.WriteAllLines("e.txt", ExternalSort(files));
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3414 / 2735 / 575
Регистрация: 04.09.2018
Сообщений: 8,583
Записей в блоге: 3
07.11.2022, 00:00
Цитата Сообщение от kolorotur Посмотреть сообщение
Вот нормальная реализация такой сортировки:
Представляю ТС'а, который будет объяснять это все. Сам не понимая ничего
Ну ладно.

Добавлено через 9 минут
Цитата Сообщение от kolorotur Посмотреть сообщение
Бесконечный цикл там получался именно из-за того, что автор хотел продолжать использовать последний элемент массива для сравнения с "текущими" элементами остальных массивов.
kolorotur, все равно не улавливаю связи между бесконечным циклом и этим высказыванием. Кто ж все-таки мешает завершить итерации по концу самого длинного массива (ну, который, пусть будет считан из того же файла)...
Дискуссия пока остается открытой )
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
07.11.2022, 10:03
Цитата Сообщение от wizard41 Посмотреть сообщение
Кто ж все-таки мешает завершить итерации по концу самого длинного массива
Да никто не мешает — вопрос не в реализуемости, а в надобности такой реализации.
Попробуйте написать код, реализующий такую сортировку и учитывающий условие автора — костыль же получится, придется дополнительно отслеживать "вот этот массив закончился, но мы все равно его используем, но чтобы не уйти в бесконечку, держим флаги" или что-то вроде этого. Лишние телодвижения.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3414 / 2735 / 575
Регистрация: 04.09.2018
Сообщений: 8,583
Записей в блоге: 3
07.11.2022, 15:10
Цитата Сообщение от kolorotur Посмотреть сообщение
костыль же получится
ну по большому счету да. Согласен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2022, 15:10
Помогаю со студенческими работами здесь

Слияние 2 массивов
Слияние 2 массивов, чтобы они без сортировки шли по порядку (либо большее к меньшему или меньшее к большему) P.S понятия не имею как это...

Слияние массивов C#
Здравствуйте,уважаемые форумчане. Помогите,пожалуйста, с решением задачки,а то даже не знаю с какой стороны к ней подступиться. Слияние...

Слияние Word и Excel
Добрый день. Как связать комбобоксы? То есть есть 2 комбобокса, один из них заполнен списком руководителей, другой отделами. Как сделать...

Слияние двух массивов
Пользователем вводится два отсортированных в порядке возрастания одномерных массива. Выполнить их слияния в один массив, элементы которого...

Слияние двух массивов
Начинаю изучать с# столкнулся в домашнем задании с этим....Необходимо совместить 2 массива. Как теперь сделать так, что бы происходило...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru