Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 15:38   #11
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

пасибки, в теории очень даже понятно, но как это правильно написать в программе?

Какой цикл нужно для этого написать?
когда всё становится на свои места, выясняется, что это кладбище...

Последний раз редактировалось Stilet; 18.06.2009 в 16:27.
HoOpe вне форума Ответить с цитированием
Старый 18.06.2009, 16:30   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

HoOpe, у тебя же движение уже есть, только дописать простоновую опорную точку.
Код:
int x=0;
int y=100;
while(!kbhit())
{

 for (j=0;j<10;j++){
   f[j]->SetCvet(random(15)+1);
   f[j]->ViVod();
  }
sleep(1);

 for (k=0;k<10;k++){
 f[k]->SetCvet(BLACK);
 f[k]->ViVod();
 f[k]->SetCoord(x,y);
 }
 x+=random(100);
  
 }
 getch();
}
I'm learning to live...

Последний раз редактировалось Stilet; 18.06.2009 в 16:32.
Stilet вне форума Ответить с цитированием
Старый 18.06.2009, 17:16   #13
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

Stilet, спасибки, я так и сделала, но почему фигурки уходят в небытие и не возвращаются?)) Как их вернуть??
Код:
#include<conio.h>
#include<iostream.h>
#include<dos.h>
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>

  class FiGura
{
protected:
  int x,y,w,h,color;
public:
  FiGura();
 ~FiGura();
  void SetCoord(int x,int y){this->x=x; this->y=y;};
  void SetRazmer(int x,int y){this->w=x; this->h=y;};
  void SetCvet(int color){this->color=color;};
  virtual void ViVod()=0;
};

  FiGura::FiGura()
{
  cout<<"figyra sozdana"<<endl;
}

  FiGura::~FiGura()
{
  closegraph();
  cout<<"figyra udalena"<<endl;
}

  void inic()
{
  int grdriver,gmode,errorcode;
  detectgraph(&grdriver,&gmode);
  initgraph(&grdriver,&gmode,"D:\\BC\\BGI ");
  errorcode=graphresult();
  if (errorcode!=grOk)
    {cout<<"osibka"<<endl;
    exit(1);}
};

  class KvaDrat:public FiGura
{
public:
  virtual void ViVod()
{setcolor(color);
  rectangle(x,y,x+w,y+w);}
};

  class TreuGol:public FiGura
{
public:
  virtual void ViVod()
{setcolor(color);
  line(x,y+w,(x+w/2),y);
  line((x+w/2),y,x+w,y+w);
  line(x+w,y+w,x,y+w);}
};

void main()
{int i,j,k,x=10,y=10;
FiGura*f[10];
TreuGol tr[4];
KvaDrat kv[4];
inic();


for (i=0;i<4;i++){
tr[i].SetCoord(random(100),random(100));
tr[i].SetRazmer(30,30);
tr[i].SetCvet(random(15)+1);
tr[i].ViVod();
f[i]=&tr[i];
kv[i].SetCoord(random(100),random(100));
kv[i].SetRazmer(random(50),random(50));
kv[i].SetCvet(random(15)+1);
kv[i].ViVod();
f[i+4]=&kv[i];
}
while(!kbhit())
{
  for (j=0;j<8;j++){
  f[j]->SetCvet(random(15)+1);
  f[j]->ViVod();
  }
sleep(1);

 for (k=0;k<8;k++){
 f[k]->SetCvet(BLACK);
 f[k]->ViVod();
 f[k]->SetCoord(x,y);
 f[k]->SetRazmer(random(50),random(50));
 }
 y+=random(100);
 x+=random(100);
}
 getch();
}
Да еще, что сделать в программке, что фигурки не пересекались? И меняли свой размер только квадраты без треугольников?
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 18.06.2009, 20:39   #14
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

Почему когда открываешь циклы по
Цитата:
for(int x=10; x<630; x+=ranbom(100))
for (int y=10; y<450; y+=random(100))
для того, чтоб они не выскакивали за экран, то фигурки странно исчезают и постоянно появляются в нижнем правом углу??
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 19.06.2009, 17:56   #15
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

Как сделать, чтоб при ударении об одну из стенок экрана фигурки меняли свое направление движения, но при этом оставались рядом др. с др., но не пересекались??
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 19.06.2009, 19:37   #16
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

Оч, оч, оче нужна ваша помощь!!! Одна прога осталась до зачета!! Одна!!! И такой игнор!! Разве сложно помочь студентке в ее просьбе?? Тут же такие умы сидят!! Такие альтруистичные!!

Please, help me!!!
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 20.06.2009, 15:32   #17
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

O_o O_o O_o
когда всё становится на свои места, выясняется, что это кладбище...

Последний раз редактировалось HoOpe; 20.06.2009 в 15:35.
HoOpe вне форума Ответить с цитированием
Старый 21.06.2009, 02:07   #18
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

Вот еще один вариант моего мучения:
Код:
#include<conio.h>
#include<iostream.h>
#include<dos.h>
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>

  class FiGura
{
protected:
  int x,y,w,h,color;
public:
  FiGura();
 ~FiGura();
  void SetCoord(int x,int y){this->x=x; this->y=y;};
  void SetRazmer(int x,int y){this->w=x; this->h=y;};
  void SetCvet(int color){this->color=color;};
  virtual void ViVod()=0;
};

  FiGura::FiGura()
{
  cout<<"figyra sozdana"<<endl;
}

  FiGura::~FiGura()
{
  closegraph();
  cout<<"figyra udalena"<<endl;
}

  void inic()
{
  int grdriver,gmode,errorcode;
  detectgraph(&grdriver,&gmode);
  initgraph(&grdriver,&gmode,"D:\\BC\\BGI ");
  errorcode=graphresult();
  if (errorcode!=grOk)
    {cout<<"osibka"<<endl;
    exit(1);}
};

  class KvaDrat:public FiGura
{
public:
  virtual void ViVod()
   {setcolor(color);
    rectangle(x,y,x+w,y+w);}
};

  class TreuGol:public FiGura
{
public:
  virtual void ViVod()
   {setcolor(color);
    line(x,y+w,(x+w/2),y);
    line((x+w/2),y,x+w,y+w);
    line(x+w,y+w,x,y+w);}
};

void main()
{int i,j,k,x=10,y=10;
FiGura*f[10];
TreuGol tr[5];  KvaDrat kv[5];
inic();

for (i=0;i<5;i++)
{
 tr[i].SetCoord(x,y);
 tr[i].SetRazmer(30,15);
 tr[i].SetCvet(random(15)+1);
 tr[i].ViVod();
 f[i]=&tr[i];
 kv[i].SetCoord(x+random(100),y+random(100));
 kv[i].SetRazmer(random(50),random(50));
 kv[i].SetCvet(random(15)+1);
 kv[i].ViVod();
 f[i+5]=&kv[i];
}
while(!kbhit())
{
 for (j=0;j<10;j++)
 {
  f[j]->SetCvet(random(15)+1);
  f[j+5]->SetRazmer(random(50),random(50));
  f[j]->ViVod();
 }
 delay(1000);
 cleardevice();
  for (k=0;k<10;k++)
  {
   f[k]->SetCoord(x,y);

 //  f[k+5]->SetCoord(x+10,y+10);
 //x+=random(10); y+=random(10);
 if (x<630) x+=100;
 if (x>630) x-=100;// else x-=random(100);
 if (y<450) y+=100;
 if (y>450) y-=100;// else y-=random(100);
 }
}
getch();
}
все--еще ненамучала циклы, чтоб при соударении со стенкой набор менял направление!!! если у кого-то где-то есть похожее, то оч прошу вылажить или кинуть ссылку!! а то я искала на этом сайте и не нашла...
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
неубиваемый вирус! все антивирусы не находят его! кто знает как его убрать? Yury111 Безопасность, Шифрование 12 05.06.2009 11:19
как сделать на своем сайте возможность устанавливать его, как стартовую страницу при загрузке броузера Chaynik Помощь студентам 2 02.03.2009 23:10
Как сделать макрос в WORD и описать его алгоритм ещё prikolist Microsoft Office Word 2 21.11.2008 13:19
Как сделать так,чтобы при выборе варианта,его текст оказывался в компоненте Edit1.tex InseR Компоненты Delphi 8 03.07.2007 11:52
Как при скрытом чужом окне сделать его дочерние окна(сообщения) видимыми ? Starwarrior Win Api 1 20.03.2007 09:51