Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
1

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

20.06.2009, 00:18. Просмотров 1287. Ответов 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]
Довольно маленькая прога и довольно простая, но у меня просто не хватает уже фантации, какие б еще циклы написать для решения этой задачи. Очень Вас прошу помочь мне, пожалуйста!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2009, 00:18
Ответы с готовыми решениями:

Вывод на экране двух слов ГОРИЛЛА , которые по вертикальному горизонтали двигаются друг против друга-один слева напра
вывод на экране двух слов ГОРИЛЛА , которые по вертикальному горизонтали двигаются друг против...

Вывести на экран те элементы массива, которые больше произвольно выведенного вами числа
2) Заполнить массив случайными положительными числами из произвольного диапазона. Вывести созданный...

Задать произвольно 5 натуральных чисел. Вывести на экран только те из них, которые являются простыми числами. Диапазон н
Задать произвольно 5 натуральных чисел. Вывести на экран только те из них, которые являются...

Набор ромбов вращаются против часовой стрелки и меняют цвета
Помогите сделать... 11. Набор ромбов разного цвета, соединенные одним углом в центре формы,...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2009, 00:18

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

Написать две программы, которые выводят на экран заданный набор символов
Написать две программы, которые выводят на экран заданный набор символов. Одна программа должна...

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

Сломались плитки: нельзя их добавлять, удалять, менять их размер, они даже не двигаются

Вывод на экран таблицы квадратов целых чисел
Выведите на экран таблицу квадратов целых чисел от 0 до 999. Таблица должна состоять из 100 строк...

Вывод на экран таблицы квадратов целых чисел
Выведите на экран таблицу квадратов целых чисел от 0 до 999. Таблица должна состоять из 100 строк...

Генерация разноцветных эллипсов, которые двигаются по экрану (MFC)
помогите мне кто силен с данной библиотекой MFC написать программу которая генерирует на экране...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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