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

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

Войти
Регистрация
Восстановить пароль
 
videolord
48 / 14 / 1
Регистрация: 20.02.2011
Сообщений: 152
#1

проблемы с ООП - C++

27.01.2012, 18:04. Просмотров 478. Ответов 2
Метки нет (Все метки)

привет всем! надо было написать рандомно движущийся прямоугольник на Borland C 3.1
1-пример написал без ООП, и все нормально работает, а вот 2-пример с ООП почемуто не двигается,в чем дело ?
пример 1
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
int main()
{
    int driver = DETECT, gmode;
    initgraph(&driver, &gmode, "c:\\bc\\bgi");
    if (grOk != graphresult()) return(1);
 
 
    int x1=450, y1=250, x2=600, y2=400;
    nt dx = 5, dy = 5;
     int maxx = getmaxx(), maxy = getmaxy();
 
    line (0, 0, maxx, 0);
    line (0, 0, 0,maxy);
    line (maxx, maxy, 0,maxy);
    line (maxx, maxy, maxx, 0);
 
    while( !kbhit() )
    {
    delay(15);
 
    if (x1 <= 0 || x2 >= maxx)  dx = -dx;
    if (y1 <= 0 || y2 >= maxy)  dy = -dy;
    setfillstyle (SOLID_FILL, BLACK);
    bar (1,1,maxx-1,maxy-1);
    x1+= dx ;
    y1+= dy ;
    x2+= dx ;
    y2+= dy ;
    setfillstyle (SOLID_FILL, WHITE);
    rectangle(x1,y1,x2,y2);
 
    } 
 
    cleardevice();
    closegraph();
    return 0;
}
пример 2
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
 
 
 class MyRectangle{
 public:
  int x1,y1,x2,y2,col;
  MyRectangle();
  MyRectangle(int x1,int y1,int x2,int y2,int col);
  void setCol(int col);
  void hide();
  void show();
  void move(int dx,int dy);
 };
 
 int maxx=600;
 int maxy=500;
 
  MyRectangle::MyRectangle(){x1=450, y1=250, x2=600, y2=400;col=12;}
  MyRectangle::MyRectangle(int x1,int y1,int x2,int y2,int col){
   this->x1=x1;
   this->y1=y1;
   this->x2=x2;
   this->y2=y2;
   this->col=col;
  }
 
 void MyRectangle::setCol(int col){this->col=col;}
 
 void MyRectangle::hide()
 {
  setfillstyle (SOLID_FILL, BLACK);
  bar (1,1,maxx-1,maxy-1);
 }
 void MyRectangle::show()
 {
   setfillstyle (SOLID_FILL,WHITE );
   rectangle(x1,y1,x2,y2);
 }
 void MyRectangle::move(int dx,int dy)
 {
  if (x1 <= 0 || x2 >= maxx)  dx = -dx;
  if (y1 <= 0 || y2 >= maxy)  dy = -dy;
 
   hide();
   x1+= dx ;
   y1+= dy ;
   x2+= dx ;
   y2+= dy ;
 
   show();
 }
 
int main()
{
    int driver = DETECT, gmode;
    initgraph(&driver, &gmode, "c:\\bc\\bgi");
    if (grOk != graphresult()) return(1);
    int x1=450, y1=250, x2=600, y2=400;
    MyRectangle MyRect(x1,y1,x2,y2,12);
    int dx = 5, dy = 5;
    line (0, 0, maxx, 0);
    line (0, 0, 0,maxy);
    line (maxx, maxy, 0,maxy);
    line (maxx, maxy, maxx, 0);
 
  
    while( !kbhit() )
    {
     delay(15);
     MyRect.move(dx,dy);
    }
 
    cleardevice();
    closegraph();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2012, 18:04     проблемы с ООП
Посмотрите здесь:

проблемы с ООП(базовый) - C++
Есть структура &quot;Бибилиотека&quot;. Там есть некоторые функций. Так вот. class Library { public: int GetId() int...

Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ") - C++
Лафоре &quot;ООП в Си ++ &quot; - проблемы с упражнением 12, глава 7 Условие: Напишите программу, которая будет принимать от пользователя две...

ООП. Полиморфизм - C++
Мальчики, учусь на МехМате. Для сдачи зачёта по ООП необходимо написать последнюю программу: Задание: полиморфизм Указание: во всех...

ООП С++ rectangle - C++
Всем привет.Возникла проблема с написанием метода,не смог найти алгоритм решения.Надеюсь на помощь) Сам метод: Метод определения...

ООП С++ прямоугольник - C++
Всем привет, помогите пожалуйста написать два конструктора, а то нигде не могу найти инфу как сделать конструктор с уже имеющейся...

Курсовая по ООП - C++
Одна тема - одно задание. Потрудитесь!

Массивы в ООП - C++
Ботанический сад и цветы. Цветы цветут при соблюдении ряда условий: время года, температура и влажность. Класс обработчик реализует поиск...

Переход в ООП - C++
Движение составного графического объекта, управляемого с клавиатуры с помощью стрелок. с++. ООП. С ООП еще не работал. Программу...

Агрегация ООП - C++
Здравствуйте. Помогите разобраться с одной деталью. Вот код:#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace...

ООП калькулятор - C++
Начал изучать ООП, задание сделать класс с названием Int, в котором будет спрашиваться, хотите ли вы ввести значения для i1, i2, если нет...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
27.01.2012, 22:06     проблемы с ООП #2
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
 
 
 class MyRectangle{
 public:
  int x1,y1,x2,y2,col;
  MyRectangle();
  MyRectangle(int x1,int y1,int x2,int y2,int col);
  void setCol(int col);
  void hide();
  void show();
  void move(int dx,int dy);
 };
 
 int maxx=640;
 int maxy=480;
 
  MyRectangle::MyRectangle(){x1=450, y1=250, x2=600, y2=400;col=12;}
  MyRectangle::MyRectangle(int x1,int y1,int x2,int y2,int col){
   this->x1=x1;
   this->y1=y1;
   this->x2=x2;
   this->y2=y2;
   this->col=col;
  }
 
 void MyRectangle::setCol(int col){this->col=col;}
 
 void MyRectangle::hide()
 {
  setfillstyle (SOLID_FILL, BLACK);
  bar (1,1,maxx-1,maxy-1);
 }
 void MyRectangle::show()
 {
   setfillstyle (SOLID_FILL,WHITE );
   rectangle(x1,y1,x2,y2);
 }
 void MyRectangle::move(int dx,int dy)
 {
          while( !kbhit() ){
                  delay(15);
  if (x1 <= 0 || x2 >= maxx)  dx = -dx;
  if (y1 <= 0 || y2 >= maxy)  dy = -dy;
 
   hide();
   x1+= dx ;
   y1+= dy ;
   x2+= dx ;
   y2+= dy ;
 
   show();}
 }
 
int main()
{
    int driver = DETECT, gmode;
    initgraph(&driver, &gmode, "c:\\bc\\bgi");
    if (grOk != graphresult()) return(1);
    int x1=450, y1=250, x2=600, y2=400;
    MyRectangle MyRect(x1,y1,x2,y2,12);
    int dx = 5, dy = 5;
        line (0, 0, maxx, 0);
        line (0, 0, 0,maxy);
        line (maxx, maxy, 0,maxy);
        line (maxx, maxy, maxx, 0);
 
 
//    while( !kbhit() )
 //   {
 //    delay(15);
     MyRect.move(dx,dy);
 //   }
 
    cleardevice();
    closegraph();
    return 0;
}
Добавлено через 3 минуты
videolord, перенес цикл while и задержку в функцию move.

Добавлено через 1 минуту
и работает.
videolord
48 / 14 / 1
Регистрация: 20.02.2011
Сообщений: 152
28.01.2012, 11:59  [ТС]     проблемы с ООП #3
круто! пасибо огромнейшее MrCold
Yandex
Объявления
28.01.2012, 11:59     проблемы с ООП
Ответ Создать тему
Опции темы

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