Olechka35 | Дата: Вторник, 28.12.2010, 03:43 | Сообщение # 16 |
Новичок
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Спасибо! Я немножко поменяла алгоритм м все получилось, не мерцает!
|
|
| |
Seqular | Дата: Вторник, 28.12.2010, 09:01 | Сообщение # 17 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Приведите Ваше решение! Вдруг кому-нибудь оно пригодится?
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Olechka35 | Дата: Вторник, 28.12.2010, 15:50 | Сообщение # 18 |
Новичок
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Code program shar2; uses crt,graph; const pole1x=30; pole1y=30; pole2x=600; pole2y=430; radiuslusa=20; radiusshar=10; alpha=40; zaderjkastenka=1.5; zaderjkashag=5; var grDriver : integer; grMode : integer; x1,y1,x2,y2:real; v0, alfa:real; x11,y11,x21,y21:integer; dt:real; zaderjka: integer; inlusa: boolean; begin grDriver:= Detect; grMode:= 12; InitGraph( grDriver, grMode, 'c:\tp\bgi' ); setcolor(green); ellipse(pole1x, pole1y, 0, 270, radiuslusa, radiuslusa); ellipse(pole1x, pole2y, 90, 0, radiuslusa, radiuslusa); ellipse(pole2x, pole1y, 270, 180, radiuslusa, radiuslusa); ellipse(pole2x, pole2y, 180, 90, radiuslusa, radiuslusa); line(pole1x+radiuslusa, pole1y, pole2x-radiuslusa, pole1y); line(pole1x+radiuslusa, pole2y, pole2x-radiuslusa, pole2y); line(pole1x, pole1y+radiuslusa, pole1x, pole2y-radiuslusa); line(pole2x, pole1y+radiuslusa, pole2x, pole2y-radiuslusa); x1:=300; y1:=200; dt:=1; v0:=1; alfa:=alpha; zaderjka:=500; while (not keypressed) and (inlusa=false) and (zaderjka<10000) do begin x2:=x1+v0*cos(alfa*pi/180)*dt; y2:=y1+v0*sin(alfa*pi/180)*dt; x21:=round(x2); x11:=round(x1); y21:=round(y2); y11:=round(y1); setcolor(0); circle(x11,y11, radiusshar); setcolor(4); circle(x21,y21, radiusshar); setcolor(green); line(pole1x+radiuslusa, pole1y, pole2x-radiuslusa, pole1y); line(pole1x+radiuslusa, pole2y, pole2x-radiuslusa, pole2y); line(pole1x, pole1y+radiuslusa, pole1x, pole2y-radiuslusa); line(pole2x, pole1y+radiuslusa, pole2x, pole2y-radiuslusa);
if ((x2<=pole1x+radiuslusa-radiusshar) and (y2<=pole1y+radiuslusa-radiusshar)) then begin inlusa:=true; setcolor(0); circle(x21,y21, radiusshar); setcolor(4); circle(pole1x,pole1y, radiusshar); end;
if ((x2>=pole2x-radiuslusa+radiusshar) and (y2<=pole1y+radiuslusa-radiusshar)) then begin inlusa:=true; setcolor(0); circle(x21,y21, radiusshar); setcolor(4); circle(pole2x,pole1y, radiusshar); end;
if ((x2<=pole1x+radiuslusa-radiusshar) and (y2>=pole2y-radiuslusa+radiusshar)) then begin inlusa:=true; setcolor(0); circle(x21,y21, radiusshar); setcolor(4); circle(pole1x,pole2y, radiusshar); end;
if ((x2>=pole2x-radiuslusa+radiusshar) and (y2>=pole2y-radiuslusa+radiusshar)) then begin inlusa:=true; setcolor(0); circle(x21,y21, radiusshar); setcolor(4); circle(pole2x,pole2y, radiusshar); end;
if ((y2<pole1y+radiusshar+1) or (y2>pole2y-radiusshar-1)) then begin alfa:=360-alfa; zaderjka:=round(zaderjka*zaderjkastenka); end; if ((x2<pole1x+radiusshar+1) or (x2>pole2x-radiusshar-1)) then begin alfa:=360-alfa; v0:=-v0; zaderjka:=round(zaderjka*zaderjkastenka); end;
x1:=x2; y1:=y2; delay(zaderjka); zaderjka:=zaderjka+zaderjkashag; end; readln; end. Кривенько, конечно, но может и правда пригодится кому-то.
|
|
| |
Valentin1981 | Дата: Пятница, 23.03.2012, 08:08 | Сообщение # 19 |
Новичок
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Как можно верить в такие сказки? Всё у нас нахаляву, и это тоже. Если во всё верить, так ничего и не увидим.Прав Д. Соло "Разруха начинается с воровства, а воровство начинается с халявы". Вот и закон. Всё на этом построено. Нужно рациональное мышление
|
|
| |
Seqular | Дата: Пятница, 23.03.2012, 08:15 | Сообщение # 20 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Valentin1981, Это к чему?
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |