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

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

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

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

20.06.2009, 00:18. Просмотров 1063. Ответов 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++
Введите с клавиатуры пять целочисленных элементов массива X. Выведите на экран значения корней и квадратов каждого из элементов массива.

Вывод на экран элементов массивов, которые являются простыми числами - C++
Здравствуйте! Пишу сюда в последней надежде на помощь! Нужно сдать две лабы последние, а как их делать, совсем не знай... Пробовал по...

Вывод слов на экран, которые появляются в обоих файлах в отсортированном порядке - C++
Написать программу на С++, которая считывает два имени файла с клавиатуры и выводит на экран слова, которые появляются в обоих файлах в...

Вывод на экран всех слов, которые находятся между первой и второй запятыми - C++
... задачи в Turbo C: 1.Создать программу, которая находит элементы в двумерном массиве, какие больше среднего арифметического элементов...

Чтение текста из файла и вывод на экран только тех предложений, которые не содержат запятых - C++
нужна программа, которая считывает текст из файла и выводит на экран только предложения не содержащие запятых

Переделать функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки и воспроизводила ее - C++
Переделать головную функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки...

Найти и вывести на экран все элементы, которые которые повторяются более N/2 раз - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int _tmain() { ifstream f (&quot;d:\\base1.txt&quot;); ...

Дано н прямоугольных треугольников с а и б катетами, причем а + б = 9. Составить программу, которая вычисляет суммарную площадь этих треугольников - C++
Дано н прямоугольных треугольников с а и б катетами, причем а + б = 9. Составить программу, которая вычисляет суммарную площадь этих...

Extern: Есть ли на данный момент набор инструментов, которые позволили бы использовать другие языки - C++
Всем доброго времени суток. Часто встречаю использование оператора (если это, конечно, вообще оператор) extern в виде конструкции extern...

Найти сумму квадратов последовательности, которые не превосходят двух - C++
Задание: найти сумму квадратов тех чисел a1, ... , a100, которые не превосходят двух, с помощью рекурсии. Помогите дописать код, чтобы...

Рекурсивная функция: нахождение числа квадратов, на которые можно разбить прямоугольник - C++
Всем привет, как сделать это с рекурсией? Программа находит число квадратов, на которые можно разбить прямоугольник ...

При выводе на экран переменной string выводится набор левых символов - C++
int main() { int s; string b; printf(&quot;DEC: &quot;); scanf(&quot;%i&quot;, &amp;s); for (int i = 31; i &gt;= 0; i--) { s += (char)(((b &gt;&gt;...


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

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

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