Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 14.10.2014, 19:13   #1 (permalink)
oleum
Новичок
 
Регистрация: 24.02.2014
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию PascalABC: анимация

Как сделать, чтобы частицы двигались....при открытии стенки разные частицы должны смешиваться....явление диффузии. Помогите пожалуйста.
Код:
program V;
uses crt,graphABC;
var
gas,gas2:array[0..19,0..1] of integer;
xh,xh2,yh:array[0..19] of integer;

i,j:integer;
begin
clrscr;
randomize;

    begin
    gas[i,j]:=random(50)+50;
    gas2[i,j]:=random(50)+150;
    gas[i,j+1]:=random(100)+50;
    xh[i]:=random(3)+1;
    xh2[i]:=random(3)+1;
    yh[i]:=random(3)-1;
    end;
for i:=0 to 19 do
begin
 setbrushcolor(clyellow);
circle(gas[i,j],gas[i,j+1],1);
 setbrushcolor(clred);
circle(gas2[i,j],gas[i,j+1],1);
end;
 setbrushcolor(clgreen);
line(45,47,205,47);
line(205,47,205,153);
line(205,153,45,153);
line(45,153,45,47);
line(125,48,125,152);
readkey;
 setbrushcolor(clblack);
line(125,48,125,152);
repeat
for i:=0 to 19 do
begin
 setbrushcolor(clyellow);
circle(gas[i,j],gas[i,j+1],1);
 setbrushcolor(clred);
circle(gas2[i,j],gas[i,j+1],1);
end;
delay(12000);
for i:=0 to 19 do
begin
 setbrushcolor(clblack);
circle(gas[i,j],gas[i,j+1],1);
circle(gas2[i,j],gas[i,j+1],1);
if (gas[i,j]>200) or (gas[i,j]<50) then xh[i]:=xh[i]*(-1);
if (gas[i,j+1]>150) or (gas[i,j+1]<50) then yh[i]:=yh[i]*(-1);
if (gas2[i,j]>200) or (gas2[i,j]<50) then xh2[i]:=xh2[i]*(-1);
gas[i,j]:=gas[i,j]+xh[i];
gas[i,j+1]:=gas[i,j+1]+yh[i];
gas2[i,j]:=gas2[i,j]-xh2[i];

    delay (600);
  
 

end;
until keypressed;

end.
oleum вне форума   Ответить с цитированием

Старый 14.10.2014, 19:13
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Мой вам совет - прочитайте похожие обсуждения

Две задачи на PascalABC
Анимация
Алгоритмы, анимация
Анимация картинки

Старый 15.10.2014, 04:34   #2 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

Первая же ошибка, что видна - это здесь:

begin
gas[i,j]:=random(50)+50;
gas2[i,j]:=random(50)+150;
gas[i,j+1]:=random(100)+50;
xh[i]:=random(3)+1;
xh2[i]:=random(3)+1;
yh[i]:=random(3)-1;
end;

Переменные i,j неопределены, т.е. им не присвоены значения
Debianer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 18:20.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.