Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 14.05.2017
Сообщений: 5

Движение шариков

14.05.2017, 23:35. Показов 2230. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, добрые люди Движение качающихся N шариков на нитях разной длины (присутствует столкновение шаров). Исходные параметры: количество нитей, их длина и размер шариков. (N<10)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.05.2017, 23:35
Ответы с готовыми решениями:

Анимация разноцветных шариков
Здравствуйте. Помогите пожалуйста сделать анимацию двух разноцветных шариков в котором они идут против друг друга. Сталкиваясь они меняются...

Как сделать рисование светящихся шариков?
Есть код на GraphABC: uses GraphABC, BaseInterpolations; const n = 10; R = 3; deltaP = 40; s=6; type Particle =...

Задача про линию шариков (удаление со сдвигом 3х и более одинаковых подряд идущих)
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная цепочка из трех и более шариков...

3
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
15.05.2017, 11:24
Есть вариант на tp
Переводите на pabc.net
Движение качающихся n шариков на нитях разной длины
0
0 / 0 / 0
Регистрация: 14.05.2017
Сообщений: 5
15.05.2017, 12:45  [ТС]
Не могли бы вы помочь мне с этим?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.05.2017, 19:00
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Pascal
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
uses GraphABC;
type tSharik=record {объявим тип запись - шарик, с полями}
             radius: integer;{радиус шара}
             cvet: Color;{цвет}
             dlina: integer;{длина шнура}
             koord_x: integer;{координата х точки подвеса}
             ugol: real;{угол от вертикальной оси}
             naprav: integer;{}
             x,y: integer;{текущие координаты центра шарика}
            end;
const Skorost=5;{константа, регулирующая скорость колебаний, можно поменять,
                 или вообще задавать самому}
var n:integer;{кол. шариков}
    shariki:array of tSharik;{массив шариков}
 
//процедура рисования шарика с нитью,
procedure Narisovat(sharik:tSharik);
var c:Color;
begin
c:=sharik.cvet;
setpencolor(clBlue);//цвет нити
line(sharik.koord_x, 0, sharik.x, sharik.y);//нить - линия
setpencolor(c);//цвет шарика
setbrushcolor(c);
circle(sharik.x, sharik.y,sharik.radius);//закрашенный круг
end;
 
//процедура смещения - колебания шарика
procedure Dvigat(var sharik:tSharik);
var rasst: real;
       j: integer;
begin
with sharik do//пока 1 шарик
 begin
  ugol:= ugol+naprav*skorost/dlina;//вычисляем угол
  //вычисляем текущие координаты центра
  x:= round( koord_x + (dlina+radius) * sin(ugol) );
  y:= round( (dlina+radius) * cos(ugol) );
  //определяем положение шарика по вертикали
  if y<=radius then naprav:=-naprav;//если коснулись верхней границы экрана(она одна для всех
                                     //шариков), меняем направление на обратное
  for j:=0 to n-1 do//перебираем все шарики
   begin
   //определяем расстояние шарика до всех других, переменные типа integer приводим к типу Longint,
   //  иначе квадраты координат выйдут за объявленный тип
    rasst:=sqrt(sqr(longint(shariki[j].x)-longint(x))+sqr(longint(shariki[j].y)-longint(y)) );
    if (rasst<= radius+shariki[j].radius) and (rasst>radius/2) then//если коснулись
     begin
      if x<shariki[j].x then naprav:=-1 else naprav:=+1;//шарик слева, направление -1, справа +1
      shariki[j].naprav:= -naprav;//меняем направление после соприкосновения
     end;
   end;
 end;
end;
 
 
var i:integer;
begin
write('Количество шариков n=');
readln(n);
setlength(shariki,n);
randomize;{генератор случайных чисел}
for i:=0 to n-1 do{по количеству шаров}
 begin
  with shariki[i] do//задаем параметры очередного шарика
   begin
    radius:= 10+random(25);//радиус
    dlina:= 50+random(150);//длина нити
    koord_x:=(windowwidth div (n+1)) * i;//точка крепления нити у верхней шраницы экрана
    cvet:= clrandom;//цвет
    ugol:=0;//начальный угол с вертикальной осью
    naprav:=1;//напрвление вправо
   end;
 end;
lockdrawing; 
repeat//собственно цикл рисования колеблющихся шариков
clearwindow;
for i:=0 to n-1 do//все шарики
Narisovat(shariki[i]);{рисуем цветом фона - стираем}
sleep(100);
for i:=0 to n-1 do
Dvigat(shariki[i]);{меняем положение}
redraw;
until false;{нажатие любой клавиши - выход из программы}
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2017, 19:00
Помогаю со студенческими работами здесь

Движение качающихся n шариков на нитях разной длины
Движение качающихся n шариков на нитях разной длины. (n&lt;10) Может было у кого нибудь что то подобное?:friends:

Несколько шариков, летающих одновременно
Написал код для одного шарика uses crt,graph; {const x=630;y=470;} var q,i,j,gd,gm,r,xo,yo,m,k,n,x1o,y1o,k2:integer; ...

N-ное количество шариков должно летать по экрану
В школе задали сделать программу с шариками, и чтобы с клавы вводилось колво этих шаров. Сказали чтобы они отталкивались друг от друга и от...

Напишите программу, которая по данной ситуации определяет, сколько шариков будет сейчас "уничтожено"
Всем доброго времени суток! В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная...

движение шариков
ПО окружности движутся шарики, каждый шарик имеет свою скорость, шарики имеют черный цвет, однако если шарики пересекаются, то становятся...


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

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