0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
1

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

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

Please, help me!!!

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

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#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();
}
Довольно маленькая прога и довольно простая, но у меня просто не хватает уже фантации, какие б еще циклы написать для решения этой задачи. Очень Вас прошу помочь мне, пожалуйста!!!
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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

Поиск и вывод на экран всех треугольников Герона, у которых площадь равна периметру
Дано натуральное число N. Составить процедуру для поиска и вывода на экран всех треугольников...

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

Нарисовать 2 треугольника которые двигаются
#include &lt;stdio.h&gt; #include &lt;graphics.h&gt; void Draw(int x,int y,int color) { setfillstyle(1,3);...

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

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


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

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

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