Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
49 / 15 / 2
Регистрация: 20.02.2011
Сообщений: 152
1

Изменить метод move

28.03.2012, 08:29. Просмотров 994. Ответов 3
Метки нет (Все метки)

привет всем!
вот этод работает,
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
100
101
102
103
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
 
class TShape {
protected:
  int color;
public:
  TShape(){ color=14;}
  TShape(int color){ this->color=color;};
  ~TShape(){};
  virtual void show()=0;
  virtual void hide()=0;
  virtual void move(int dx,int dy)=0;
  virtual void moveTo(int x,int y)=0;
  int getColor(){return color;}
};
 
class MyRectangle : public TShape{
public:
 int x1,y1,x2,y2;
 MyRectangle::MyRectangle():TShape(){x1=500,y1=300,x2=600,y2=400;}
 MyRectangle::MyRectangle(int x1,int y1,int x2,int y2,int icolor):TShape(icolor)
  {
   this->x1=x1;
   this->y1=y1;
   this->x2=x2;
   this->y2=y2;
  }
 void setCol(int col);
 virtual void hide();
 virtual void show();
 virtual void move(int dx,int dy);
 virtual void moveTo(int x,int y);
 int getX1();
 int getY1();
 int getX2();
 int getY2();
};
 
 void MyRectangle::hide()
 {
  setcolor(16);
  rectangle(x1,y1,x2,y2);
 }
 void MyRectangle::show()
 {
   setfillstyle (SOLID_FILL,color );
   setcolor(color);
   rectangle(x1,y1,x2,y2);
 }
 void MyRectangle::move(int dx,int dy)
 {
  hide();
  x1+= dx ;
  y1+= dy ;
  x2+= dx ;
  y2+= dy ;
  show();
 }
void MyRectangle::moveTo(int x,int y)
{
  hide();
  x1=x;y1=y;
  x2=x+x2-x1;
  y2=y+y2-y1;
  show();
}
void MyRectangle::setCol(int col){color=col;}
int MyRectangle::getX1(){return x1;}
int MyRectangle::getX2(){return x2;}
int MyRectangle::getY1(){return y1;}
int MyRectangle::getY2(){return y2;}
 
 
int main()
{
    int driver = DETECT, gmode;
    initgraph(&driver, &gmode, "c:\\bc\\bgi");
    if (grOk != graphresult()) return(1);
    int maxx=getmaxx();
    int maxy=getmaxy();
    int dx = 3, dy = 3;
    int dx1= 3, dy1 = 3;
    MyRectangle R(500,300,600,400,13);
    line (0, 0, maxx, 0);
    line (0, 0, 0,maxy);
    line (maxx, maxy, 0,maxy);
    line (maxx, maxy, maxx, 0);
 
    while(!kbhit())
    {
     delay(50);
     if (R.getX1() <= 0 || R.getX2() >= maxx)  dx = -dx;
     if (R.getY1() <= 0 || R.getY2() >= maxy)  dy = -dy;
     R.move(dx,dy);
    }
    cleardevice();
    closegraph();
    return 0;
}
а если изменить метод move(dx,dy),чтобы внутри проверять столкновение со стенкой, то зацикливается и не работает
што здесь не так,я хотел бы внутри метода move(dx,dy) организовать столкновение
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
 void MyRectangle::move(int dx,int dy)
 {
   maxx=500;maxy=500;
   if (getX1() <= 0 || getX2() >= maxx)  dx = -dx;
   if (getY1() <= 0 || getY2() >= 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 maxx=getmaxx();
    int maxy=getmaxy();
    int dx = 3, dy = 3;
    int dx1= 3, dy1 = 3;
    MyRectangle R(500,300,600,400,13);
    line (0, 0, maxx, 0);
    line (0, 0, 0,maxy);
    line (maxx, maxy, 0,maxy);
    line (maxx, maxy, maxx, 0);
 
    while(!kbhit())
    {
     delay(50);
     R.move(dx,dy);
    }
    cleardevice();
    closegraph();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2012, 08:29
Ответы с готовыми решениями:

How can I resize a picture when I move a move a mouse on it, and size it back when I move mouse out?
How can I resize a picture when I move a move a mouse on it, and size it back when I move mouse...

Создать метод Move
есть иерархия классов ,Создать метод Move в созданной иерархии классов, который на вход будет...

Используя метод Move изобразите движение автомобиля
используя метод Move изобразите движение автомобиля(используя картинку)движение управляется кнопкой...

Используя метод Move изобразите движение автомобиля
Используя метод Move изобразите движение автомобиля (использовать картинку *.bmp или *.jpg файла)....

3
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
28.03.2012, 08:47 2
C++
1
void MyRectangle::move(int &dx,int &dy)
1
49 / 15 / 2
Регистрация: 20.02.2011
Сообщений: 152
28.03.2012, 09:07  [ТС] 3
о я тупой
спасибо romex огромное
0
49 / 15 / 2
Регистрация: 20.02.2011
Сообщений: 152
04.04.2012, 08:02  [ТС] 4
снова нуждаюсь в помощи
еще имеется класс MyСircle наследуется от TShape как и класс MyRectangle
пытаюсь создать третий класс MyRectCirlce наследовать от MyСircle и MyRectangle
(MyСircle и MyRectangle наследуются от TShape)

C++
1
2
3
4
5
6
7
8
9
10
11
12
class MyRectCirlce:public MyCircle, public MyRectangle
{
 public:
  MyRectCirlce():MyCircle(),MyRectangle(),TShape
  {}
  MyRectCirlce(int x,int y,int r,int col1,int x1,int y1,int x2,int y2,int col2):MyCircle(x,y,r,col1),MyRectangle(x1,y1,x2,y2,col2)
  {}
  virtual void hide();
  virtual void move(int &dx,int &dy);
  virtual void show();
  virtual void moveTo(int x,int y);
};
потом не получаеца создать обьект класса MyRectCirlce()
TShape *A=new MyRectCirlce();
выдает ошибку что MyRectCirlce * не может преобразован в TShape
ведь так не должно быть! все таки мы наследовали от MyCircle,a MyCircle наследуется от TShape

Добавлено через 11 часов 30 минут
что не так здесь?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2012, 08:02

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

Используя метод Move изобразите движение автомобиля (использовать картинку *.bmp или *.jpg файла).
Используя метод Move изобразите движение автомобиля (использовать картинку *.bmp или *.jpg файла)....

Как изменить метод класса
Начал разглядывать шарп. Дошел до методов и классов. Если правильно понимаю, то в...

Как изменить метод с submit на button?
Доброй ночи, есть консоль, RCON управление сервером. Как заменить отправку команды (метод)...

Как правильно изменить метод наследника?
Здравствуйте. Как правильно изменить метода наследника, чтобы при ее вызове происходило все то, что...


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

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

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