Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Броуновское движение


Автор: radikayupov1710 2.2.2009, 19:06
Помогите пожалуйста разобраться с программой. Нужны 100 точек бегающих по экрану. У меня всего бегает только одна точка.
Вот код:
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
void main()
{
clrscr();
int gdriver=DETECT, gmode, errorcode;
initgraph(& gdriver, & gmode,"...");
errorcode=graphresult();
if (errorcode!= grOk)
{
printf("Graphicserror:%s\n", grapherrormsg(errorcode));
printf("Press any key to break:");
getch();
exit(1);
}
int x=50, y, dx=1, dy=1, x1, x2, y1, y2;
x1=getmaxx()/2-300;
y1=getmaxy()/2-239;
x2=getmaxx()/2+300;
y2=getmaxy()/2+239;
x=getmaxx()/2;
y=getmaxy()/2;
randomize;
do
{
for(;;)
{
if(kbhit())
{
switch (getch())
{
case 119:
if(getch()==115)
exit(0);
break;
case 115:
if(getch()==119)
exit(0);
break;
}
}
if(dx>0)
{
if(x+dx>=x2)
dx=dx*(-1);
}
else
if(x+dx<=x1)
dx=dx*(-1);
if(dy>0)
{
if(y+dy>=y2)
dy=dy*(-1);
}
else
if(y+dy<=y1)
dy=dy*(-1);
setcolor(BLACK);
rectangle(x1, y1, x2, y2);
x+=dx;
y+=dy;
putpixel(x, y, WHITE);
delay(5);
putpixel(x, y, BLACK);
delay(5);
}
}
while(!kbhit());
closegraph();

}

Автор: fiss 2.2.2009, 20:10
Оужс. Запихай код в тэг code. Читать неудобно.
Мб я не прав, но думаю что каждую точку надо засовывать в поток (thread), чтобы она не зависела от других.

Автор: pan2004 2.2.2009, 20:58
fiss, я очень сильно сомневаюсь, что в Borland C++ 3.1(читай Ms DOS) были потоки. Судя по используемым хидерам и функциям, программа оттуда. Не говоря уже что 100 потоков много даже для современного компа.
А ничего сложного я не вижу - точки надо пробегать в цикле, и менять их координаты, соответственно перерисовывая. Изза того, что движется только одна точка, могу сказать что этого цикла либо нет, либо он неправильно оформлен(программу не смотрел, так как без [code])

Автор: Peter 18.2.2009, 14:52
Цитата(radikayupov1710 @  2.2.2009,  19:06 Найти цитируемый пост)
Помогите пожалуйста разобраться с программой. Нужны 100 точек бегающих по экрану. У меня всего бегает только одна точка.
Я не вижу даже числа 100 в программе. Там цикл на перерисовку всего лишь одной точки. Откуда сотне взяться?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)