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

Исчезновение круга при соприкосновении с другим

18.04.2016, 08:23. Показов 1347. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уже вторую неделю думаю но только криво получается. По идеи должно получится как в agar.io
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2016, 08:23
Ответы с готовыми решениями:

Действие происходящее при соприкосновении с другим элементом
Программирование C# WinForms Есть pictureBox. Оно меняет локацию и ложится на другое изображение Необходимо чтобы когда оно ляжет на...

Появление/исчезновение элементов и исчезновение при клике на другой
Привет. Есть такое меню (картинка ниже). Нужно чтобы при клике на ссылку, появлялись текст и картинка. Вообщем, я хотел сделать через...

Уничтожение объектов при соприкосновении
Может кто поможет. Начал делать простую игру. Пули летят и при попадании в движущийся объект уничтожают его и исчезают сами. Но возникла...

16
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
18.04.2016, 10:43
При пересечении 2 картинок ничего не происходит
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
18.04.2016, 10:46
проблема найти точки пересечения окружностей решая уравнение?
0
44 / 44 / 66
Регистрация: 22.07.2015
Сообщений: 191
18.04.2016, 15:40
https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases} & \(x-x_1)^2+(y-y_1)^2=r_1^2 \\  & \(x-x_2)^2+(y-y_2)^2=r_2^2\end{cases}
Решаешь относительно x и y, если решения есть, то круги касаются
1
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
18.04.2016, 17:32
a1d4r, или так:
https://www.cyberforum.ru/cgi-bin/latex.cgi?{r}_{1}+{r}_{2}=\sqrt{({x}_{1}-{x}_{2})+({y}_{1}-{y}_{2})}

Не по теме:

Но есть сомнения, что проблема именно в этом.

1
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
18.04.2016, 21:31
capricornus CF, квадраты забыл под корнем
1
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 6
19.04.2016, 03:14  [ТС]
a1d4r, а можно через if в Pascal поставить эту формулу?
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
19.04.2016, 05:04
Цитата Сообщение от RoKenRol1000 Посмотреть сообщение
а можно через if в Pascal поставить эту формулу?
Конечно можно…
Собственно, знак „=“ там именно для этого!
0
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 6
19.04.2016, 06:05  [ТС]
У меня нет программу составить не получается все ровно. Отправьте пожалуйста.
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
19.04.2016, 09:24
Приведите ваш код, будем разбираться.
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
19.04.2016, 10:25
как пример - управляя белым кругом "кушаем" остальные и растем
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
uses GraphAbc;
const n=20;
type 
  rs=record
    x,y,dx,dy,r:integer;
    C:System.Drawing.Color;
    e:boolean;
  end;
var
  quit:boolean;
  sp:array[0..n] of rs;
  i:integer;
  B:System.Drawing.Color;
procedure dxdy(var dx,dy:integer;var c:System.Drawing.Color;b:System.Drawing.Color);
var
  tx,ty:integer;
begin
repeat
  tx:=random(3)-1;
  ty:=random(3)-1;
until ((tx<>0) or (ty<>0)) and (tx<>dx) and (ty<>dy);
dx:=tx;dy:=ty;
if c<>clWhite then repeat c:=clRandom; until (c<>b) and (c<>clwhite);
end;
procedure KeyUp(key:integer);
var
  tx,ty:integer;
begin
  tx:=0;
  ty:=0;
  case Key of
    VK_Up:ty:=-1;
    VK_Down:ty:=1;
    VK_Left:tx:=-1;
    VK_Right:tx:=1;
    VK_Escape:quit:=true;
    else exit;
  end;
  sp[0].dx:=tx;
  sp[0].dy:=ty;
end;  
begin
  quit:=false;
  OnKeyUp:=KeyUp;
  randomize;
  SetWindowHeight(480);
  SetWindowWidth(640);
  SetWindowIsFixedSize(true);
  b:=clGreen;
  SetBrushColor(b);
  SetPenColor(b);
  FillRectangle(0,0,WindowWidth,WindowHeight);
  for i:=0 to n do begin 
      sp[i].x:=random(WindowWidth-20)+10;
      sp[i].y:=random(WindowHeight-20)+10;
      sp[i].r:=random(10)+5;
      dxdy(sp[i].dx,sp[i].dy,sp[i].C,B);
      sp[i].e:=true;
  end;
  sp[0].C:=clWhite;
  sp[0].r:=10;
  repeat
    LockDrawing;
    for i:=0 to n do  if sp[i].e then begin 
      SetBrushColor(B);
      circle(sp[i].x,sp[i].y,sp[i].r);
      SetBrushColor(sp[i].C);
    if (sp[i].x+sp[i].dx>Window.Width-sp[i].r) or (sp[i].x+sp[i].dx<sp[i].r) 
    or (sp[i].y+sp[i].dy>WindowHeight-sp[i].r) or (sp[i].y+sp[i].dy<sp[i].r) then dxdy(sp[i].dx,sp[i].dy,sp[i].c,b)
    else begin  
      sp[i].x:=sp[i].x+sp[i].dx;
      sp[i].y:=sp[i].y+sp[i].dy;
      if (i>0) and (sqrt(sqr(sp[i].x-sp[0].x)+sqr(sp[i].y-sp[0].y))<=sp[i].r+sp[0].r) then begin
        sp[i].e:=false;sp[0].r:=sp[0].r+1; 
      end
        else
      Circle(sp[i].x,sp[i].y,sp[i].r);
    end;
  end;  
    UnlockDrawing;
  until quit;
  Window.close;
end.
1
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 6
19.04.2016, 11:42  [ТС]
Joy, твой код к меня не работает . А программу я могу только сфотографировать

Добавлено через 25 секунд
*у меня
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
19.04.2016, 11:54
Код работает (несколько оригинально, как с автопилотом). RoKenRol1000,
Цитата Сообщение от RoKenRol1000 Посмотреть сообщение
А программу я могу только сфотографировать
это печально и не понятно. А как программу с форума вы проверили? Фотографировали?
0
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 6
19.04.2016, 12:28  [ТС]
Нет. Я просто на планшете пишу,так как интернет у компьютера отключился . И через компьютер в планшет я не могу файлы передовать, а через планшет в компьютер могу.

Добавлено через 17 минут
Я придумал как программу скинуть

Добавлено через 9 минут
Вот она
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
program agario;
 
uses GraphABC;
var
  x, y, r, xb, yb, rb, x1, x2, x3, x4, x5, y1, y2, y3, y4, y5: integer;
  z: char;c, a: color;
 
procedure GameMenu();
begin
  SetWindowWidth(1000);
  SetWindowHeight(500);
  ClearWindow(clBlue);
  Rectangle(400, 10, 600, 400);
  FloodFill(450, 20, clWhite);
  SetPenWidth(1);
  TextOut(420, 20, 'Добро пожаловать!');
  SetPenWidth(3);
  TextOut(410, 190, 'Для начала введите start: ');
  SetPenWidth(1);
end;
 
procedure move(x, y, r: integer);
begin
  SetPenWidth(1);
  Brush.Color := c;
  Circle(x, y, r);
end;
 
procedure KeyDown(key: integer);
begin
  case key of
    VK_W, VK_Up:
      begin
        LockDrawing;
        SetPenColor(clWhite); SetPenWidth(3); Brush.Color := clWhite; Circle(x, y, r); SetPenColor(clBlack);y := y - 10; move(x, y, r);
        Redraw;  end;
    VK_D, VK_Right:
      begin
        LockDrawing;
        SetPenColor(clWhite); SetPenWidth(3); Brush.Color := clWhite; Circle(x, y, r); SetPenColor(clBlack);x := x + 10; move(x, y, r);
        REdraw; end;
    VK_S, VK_Down:
      begin
        LockDrawing; 
        SetPenColor(clWhite); SetPenWidth(3); Brush.Color := clWhite; Circle(x, y, r); SetPenColor(clBlack);y := y + 10; move(x, y, r);
        Redraw; end;
    VK_A, VK_Left:
      begin
        LockDrawing; 
        SetPenColor(clWhite); SetPenWidth(3); Brush.Color := clWhite; Circle(x, y, r); SetPenColor(clBlack);x := x - 10; move(x, y, r);
        REdraw; end;
  end;
end;
 
procedure Game(x1, x2, x3, x4, x5, y1, y2, y3, y4, y5: integer);
begin
  Brush.Color := clRandom;
  Circle(x1, y1, 5);
  Brush.Color := clRandom;
  Circle(x2, y2, 5);
  Brush.Color := clRandom;
  Circle(x3, y3, 5);
  Brush.Color := clRandom;
  Circle(x4, y4, 5);
  Brush.Color := clRandom;
  Circle(x5, y5, 5);
  if (r+5=Sqrt((x-x1)+(y-y1))) then
  ClearWindow;
end;
 
begin
  randomize;
  x1 := random(999) + 1;y1 := random(499) + 1;
  x2 := random(999) + 1;y2 := random(499) + 1;
  x3 := random(999) + 1;y3 := random(499) + 1;
  x4 := random(999) + 1;y4 := random(499) + 1;
  x5 := random(999) + 1;y5 := random(499) + 1;
  c := clrandom;
  r := 10;
  x := random(999) + 1;
  y := random(499) + 1;
  GameMenu;
  Readln(z);
  if z = 'S' then
  begin
    window.Clear;
    Game(x1, x2, x3, x4, x5, y1, y2, y3, y4, y5);
    Brush.Color := c;
    Circle(x, y, r);
    OnKeyDown := KeyDown;
  end
  else
  if z = 's' then
  begin
    window.Clear;
    Game(x1, x2, x3, x4, x5, y1, y2, y3, y4, y5);
    Brush.Color := c;
    Circle(x, y, r);
    OnKeyDown := KeyDown;
  end
else
  
end.
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
19.04.2016, 17:46
RoKenRol1000, во-первых - в игровом цикле(его тоже по сути нет) отсутствует проверка на пересечение кругов;
во-вторых - не правильная формула расчета расстояния
Цитата Сообщение от RoKenRol1000 Посмотреть сообщение
if (r+5=Sqrt((x-x1)+(y-y1))) then
ClearWindow;
должно быть так
sqrt(SQR(x-x1)+SQR(y-y1))
0
0 / 0 / 0
Регистрация: 18.04.2016
Сообщений: 6
20.04.2016, 15:56  [ТС]
Все ровно ничего не изменилось.

Добавлено через 4 часа 6 минут
Ну помогите же вы,пожалуйста. Моих знаний не хватает для этого,помогите прошу.
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
22.04.2016, 07:17
как помочь? рабочий пример тебе выложили, вразумительное задание от тебя так и не получили. про твой код я писал где ляпы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2016, 07:17
Помогаю со студенческими работами здесь

Увеличение скорости объектов при их соприкосновении
Здравствуйте. помогите пожалуйста доделать пункты: 1) Добавить возможность выбора скорости ракетки при выборе в запущенной программе из...

Уничтожение при соприкосновении с коллайдером (Unity 2d)
Как сделать, чтобы при соприкосновении с коллайдерами объект уничтожался?

Останавливать программу при соприкосновении двух Image
Как сделать так что бы Image когда дотронится с другой Image программа останавливалось (Flappy bird) птичка с трубой.

Остановка Таймера при соприкосновении объектов на форме
Всем привет! ребят столкнулся с такой проблемой Имеется 2 лейбла 4 и 5. 4 Это грубо говоря стена, а 5 это объект движующийся по форме....

Анимация (в пикчербоксе летают два шарика и при соприкосновении отталкиваются)
Пытаюсь сделать анимацию, где в пикчербоксе летают два шарика и при соприкосновении отталктваются ' переменные Dim x As Integer...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
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 позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки 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 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru