Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
#1

вывод на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер - C++

20.06.2009, 00:18. Просмотров 1054. Ответов 0
Метки нет (Все метки)

Please, help me!!!

Вот текст программы, которая выводит на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер только квадратов.

Проблема в том, что необходимо исправить код, чтоб фигуры не исчезали за экран (т.е. 640х460) и были компактным набором, т.е. двигались неменяя своего положения относительно друг друга и стукаясь об стенку экрана меняли свое нпправление движения.

Код
[CPP]#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();
}[/CPP]
Довольно маленькая прога и довольно простая, но у меня просто не хватает уже фантации, какие б еще циклы написать для решения этой задачи. Очень Вас прошу помочь мне, пожалуйста!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2009, 00:18     вывод на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер
Посмотрите здесь:

Вывод на экран всех слов, которые находятся между первой и второй запятыми C++
C++ Вывод на экран элементов массивов, которые являются простыми числами
Чтение текста из файла и вывод на экран только тех предложений, которые не содержат запятых C++
Вывод на экран значений корней и квадратов каждого из элементов массива C++
C++ Найти и вывести на экран все элементы, которые которые повторяются более N/2 раз
C++ Extern: Есть ли на данный момент набор инструментов, которые позволили бы использовать другие языки
C++ Рекурсивная функция: нахождение числа квадратов, на которые можно разбить прямоугольник
C++ Вывод слов на экран, которые появляются в обоих файлах в отсортированном порядке
C++ Найти сумму квадратов последовательности, которые не превосходят двух
При выводе на экран переменной string выводится набор левых символов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 04:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru