• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа "Пчелиный рой" в Паскале

  • Автор темы Автор темы gazon
  • Дата начала Дата начала

gazon

Новые
Регистрация
21 Ноя 2011
Сообщения
56
Реакции
0
Баллы
0
Программа "Пчелиный рой" в Паскале

Люди помогите нужна программа "пчелинный рой" в паскале


Более конкретно опишите, что вам нужно. Может быть, вы имели в виду реализацию исполнителя Live (Жизнь)? Из названия "пчелинный рой" абсолютно ничего не понятно. Ваш модератор.
 
) Модифицировать программу "пчелиный рой":. Замедлить перемещение роя и запрограммировать изменение направления перемещения при достижении края экрана.
 
Осмелюсь предположить gazon'y надо, чтобы некое облако из хаотичных точек перемещалось по экрану. Хотя могу и ошибаться...
 
Да, мне именно это и надо, ну кто-нибудь поможет?
 
Помочь-то можно, но только советом:
1) сгенерируйте массив случайных координат для точек таким образом, чтобы они были в пределах одной области
2) в цикле для всех сгененрированных точек: стирайте точку на старом месте (выводите цветом фона), задавайте случайное приращение для каждой координаты, вычисляйте новые координаты и выводите точку на новом месте.
3) Для каждой координаты отслеживайте наибольшее значение, при достижении предела приращение меняйте на отрицательное, чтобы за пределы экрана не выходить.
3) зациклите процесс до наступления какого-либо события, к примеру, до нажатия кнопки Esc (код 27).
Дерзайте :))
 
Спасибо, попробую
 
Пожалуйста помогите с самим кодом, пытаюсь ничего не выходит. И в Турбо и в АБС пробовал - тщетно
 
Помогите с графикой

Program sempch;
uses graph,crt;
var j,gd,gm,i,b,l,c:integer;
x,y,k:array [1..1000] of integer;
Begin
randomize;
gd:=detect;
initgraph(gd,gm,'d:\tp7\units\');
setcolor(90);
b:=10;
l:=2;
c:=6;
FOR J:=1 to 50 DO
BEGIN
for i:=1 to 50 do
begin
x:=random(100)+10;
y:=random(100)+10;
end;
for i:=1 to 50 do
begin
putpixel(x,y,c);
end;
for i:=1 to 500 do
begin
c:=0;
putpixel(x,y,c);
end;
for i:=1 to 50 do
begin
k:=random(50);
putpixel(x+k,y+k,6);
end;
END;
readln;
End.
 
Модифицировать программу пчелиный рой, запрогроммировать перемещение роя, и изменение направления при лостижении края экрана
 
Пааамммммааааагиииииитттттееееее,пожалуйста
 
Пааамммммааааагиииииитттттееееее,пожалуйста
Не, ну до чего настырный товарищ! :D
Ладно, вот Вам Ваш рой. Программа прерывается нажатием любой клавиши.
Код:
uses graph,crt;
var
 j,gd,gm,i,c,R,T,dLx,dLy,MaxX,MaxY,Lx,Ly,r0,t0:integer;
 x,y,k:array [1..1000] of integer;
 b:boolean;
Begin
 randomize;
 gd:=detect;
 initgraph(gd,gm,'d:\tp7\units\');
 c:=6;
 r0:=12;
 MaxX:=GetMaxX;
 MaxY:=GetMaxY;
 for i:=1 to 1000 do
  begin
   R:=Random(50);
   T:=Random(360);
   x[i]:=50+Round(7*Sqrt(R)*Cos(Pi*T/180));
   y[i]:=50+Round(7*Sqrt(R)*Sin(Pi*T/180));
   putpixel(x[i],y[i],c);
  end;
 Lx:=10;
 Ly:=Round(SQRT(sqr(r0)-sqr(Lx)));
 REPEAT
  Repeat
   b:=false;
   i:=0;
   repeat
    Inc(i);
    dLx:=Round(0.4*Abs(Lx))-Random(Round(0.4*Abs(Lx)));
    dLy:=Round(0.4*Abs(Lx))-Random(Round(0.4*Abs(Lx)));
    putpixel(x[i],y[i],0);
    x[i]:=x[i]+Lx+dLx;
    y[i]:=y[i]+Ly+dLy;
    If (x[i]<0) or (x[i]>MaxX) or (y[i]<0) or (y[i]>MaxY) then
     begin
      b:=true;
      x[i]:=x[i]-Lx-dLx;
      y[i]:=y[i]-Ly-dLy;
      putpixel(x[i],y[i],c);
     end else
    putpixel(x[i],y[i],c);
    delay(1);
   until b or (i=1000);
  Until b or KeyPressed;
  If KeyPressed then
    begin
    CloseGraph;
    Halt(0);
   end;
  t0:=Random(360);
  Lx:=Round(r0*Cos(t0*Pi/180));
  Ly:=Round(r0*Sin(t0*Pi/180));
 UNTIL 0=1;
End.
 
Спасибо огромное, огроменное
 
не могли бы вы пояснить некоторые моменты
x:=50+Round(7*Sqrt(R)*Cos(Pi*T/180));
y:=50+Round(7*Sqrt(R)*Sin(Pi*T/180)); я так понял что это "делание" роя круглым?
А что это:
Lx:=10;
Ly:=Round(SQRT(sqr(r0)-sqr(Lx)));
------------------------------------
Inc(i);
dLx:=Round(0.4*Abs(Lx))-Random(Round(0.4*Abs(Lx)));
dLy:=Round(0.4*Abs(Lx))-Random(Round(0.4*Abs(Lx)));
putpixel(x,y,0);
x:=x+Lx+dLx;
y:=y+Ly+dLy;
 
Не, а дальше что там, я еще новичок, не могу разобраться.
 
не могли бы вы пояснить некоторые моменты
x:=50+Round(7*Sqrt(R)*Cos(Pi*T/180));
y:=50+Round(7*Sqrt(R)*Sin(Pi*T/180));
я так понял что это "делание" роя круглым?
Мало того, что круглым, но еще и с равномерным заполнением круга. Так, если вместо Round(7*Sqrt(R)*Cos(Pi*T/180)) мы напишем Round(R*Cos(Pi*T/180)), то "концентрация" пчел начнет возрастать от периферии к центру.
А что это:
Lx:=10;
Ly:=Round(SQRT(sqr(r0)-sqr(Lx)));
Это компоненты начального вектора перемещения роя за один "скачок": 10 точек вдоль оси X и 7 точек вдоль оси Y. В дальнейшем "скорость" движения роя, определяемая абсолютной величиной скачка (r0=12), сохраняется, случайная выборка варьирует лишь соотношение между X и Y компонентами вектора.
Inc(i);
dLx:=Round(0.4*Abs(Lx))-Random(Round(0.4*Abs(Lx)));
dLy:=Round(0.4*Abs(Lx))-Random(Round(0.4*Abs(Lx)));
putpixel(x,y,0);
x:=x+Lx+dLx;
y:=y+Ly+dLy;

Это случайные вариации (в пределах 40%) тех самых X и Y компонент вектора перемещения для каждой отдельной пчелы вокруг средних значений этих компонент Lx и Ly. Без этих вариаций движение роя представляло бы собой просто перемещение статического распределения точек, а так рой при движении внутри себя переливается. А чего, по-моему красиво получилось.
 
Рахмет большой
 
Назад
Сверху