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

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

Войти
Регистрация
Восстановить пароль
 
JuliaMa
4 / 2 / 1
Регистрация: 09.05.2013
Сообщений: 48
#1

Передвижение графических объектов на языке С++ - C++

09.05.2013, 17:55. Просмотров 682. Ответов 2
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста создать программу для решения задачи перемещения круга, вписанного в прямоугольник, по диагонали с заданным шагом и задержкой в полторы секунды...
Программа должна содержать новые классы (включая абстрактные), конструкторы и деструкторы, поддерживать наследование, полиморфизм и видимость компонент.
Буду очень благодарна за помощь.заранее спасибо огромное!)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2013, 17:55     Передвижение графических объектов на языке С++
Посмотрите здесь:

Передвижение графических объектов - C++
Перемещать треугольник по диагонали с заданным шагом и задержкой в полторы секунды

GeoTiff - примеры ее использования на языке c , желательно на русском языке - C++
Добрый вечер. Дана курсовая с использованием библиотеки GeoTiff. Подскажите где можно прочитать про нее, и найти примеры ее использования...

В программе реализовать возможность записи объектов в файл и чтения объектов из файла - C++
Добрый день, помогите, пожалуйста! У меня есть программа: #include <iostream> #include <locale.h> using namespace std; class...

Передвижение шарика - C++
Нужно заставить шар двигаться и менять направление, когда достигает стенки экрана. Пытался сделать векторное движение ничего не получилось....

Передвижение курсора - C++
Необходимо осуществить передвижение курсора с возможностью приостановки и возобновления.Как сделать например если нажать клавишу влево...

Передвижение обьекта - C++
Нужно написать программу передвижения обьекта.Программа показывает поле XXXXX XIOOX XOOOX XOOOX XOOOX XOOOX XXXXX I-обьект ...

Передвижение курсора в c++ - C++
Здравствуйте, Я начал писать небольшую программу которая должна выполнять заданный алгоритм действий. Суть в чем: 1)Ищем например...

Передвижение стрелками - C++
Как переключаться между элементами списка в консоли с помощью стрелок? И если кто знает подскажите где можно обучиться делать оконные...

Передвижение объекта - C++
Подскажите плиз Вводятся 3 числа. A, B, N. A - движение вперед, B - движение назад, N - количество дней. Задача: объект находится в...

Передвижение по строке - C++
Здравствуйте, есть такая проблемка: Вот например есть строка: char* string = "Text=Text2"; Чтобы пробежаться по символам и найти знак...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
10.05.2013, 02:42     Передвижение графических объектов на языке С++ #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Не стал реализовывать полноценный паттерн command, ограничился одной командой. Да и не шибко-то он тут нужен.
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include <iostream>
#include <iomanip>
 
/* 
 * В выпуклый четырёхугольник ABCD можно вписать окружность тогда и
 * только тогда, когда суммы его противоположных сторон равны. 
 * По условию окружность вписана в прямоугольник.
 * Прямоугольник, в котором суммы противоположных сторон равны,
 * есть квадрат.
 */
 
struct Point {
  Point() :x(0), y(0) {}
  Point(double x, double y) : x(x), y(y) {}
  double x, y;
};
 
std::ostream &operator<<(std::ostream &stream, const Point &p) {
  return stream << "Point{" <<
    std::fixed << std::setprecision(2) <<
    "x=" << p.x << "," <<
    "y=" << p.y << "}";
}
 
class Surface;
 
class Drawable {
 public:
  virtual void draw(Surface &surface) = 0;
};
 
/*
 * Этот класс должен отрисовывать примитивы
 */
class Surface {
 public:
  void draw(Drawable &object) {
    object.draw(*this);
  }
  void drawLine(const Point &a, const Point &b) {
    // тут должен быть код, отрисовывающий линию
    std::cout << "Line{a=" << a << ",b=" << b << "}" << std::endl;
  }
  void drawCircle(const Point &center, double radius) {
    // тут должен быть код, отрисовывающий оркужность
    std::cout << "Circle{center=" << center << ",radius=" << radius <<
      "}" << std::endl;    
  }
  void clear() {
    // тут должен быть код, очищающий поверхность
    std::cout << "Surface cleared." << std::endl;
  }
};
 
class Placeable {
 public:
  Placeable() : point() {}
  Placeable(double x, double y) : point(x, y) {}
  double getX() const { return point.x; }
  double getY() const { return point.y; }
  void setX(double x) { this->point.x = x; }
  void setY(double y) { this->point.y = y; }
 private:
  Point point;
};
 
class Square : public Drawable, public Placeable {
 public:
  Square(double x, double y, double side) : Placeable(x, y), side(side) {}
  double getSide() const { return side; }
  void setSide(double side) { this->side = side; }
  virtual void draw(Surface &surface) {
    surface.drawLine(Point(getX(), getY()), Point(getX() + side, getY()));
    surface.drawLine(Point(getX(), getY()), Point(getX(), getY() + side));
    surface.drawLine(Point(getX() + side, getY()), Point(getX() + side,
      getY() + side));
    surface.drawLine(Point(getX(), getY() + side), Point(getX() + side,
      getY() + side));
  }
 private:
  double side;
};
 
class Circle : public Drawable, public Placeable {
 public:
  Circle(double x, double y, double radius) : Placeable(x, y),
    radius(radius) {}
  double getRadius() const { return radius; }
  void setRadius(double radius) { this->radius = radius; }
  virtual void draw(Surface &surface) {
    surface.drawCircle(Point(getX(), getY()), radius);
  }
 private:
  double x, y, radius;
};
 
class Scene {
 public:
  Scene(size_t capacity) : capacity(capacity), size(0),
    drawables(new Drawable*[capacity]) {}
  virtual ~Scene() {
    delete [] drawables;
  }
  Drawable **add(Drawable *drawable) {
    drawables[size++] = drawable;
    return drawables + size;
  }
  Drawable *operator[](size_t position) {
    return drawables[position];
  }
  const Drawable *operator[](size_t position) const {
    return drawables[position];
  }
  size_t getSize() const {
    return size;
  }
  
  void draw(Surface &surface) {
    surface.clear();
    for (size_t i = 0; i < size; ++i) {
      surface.draw(*(drawables[i]));
    }
  }
 private:
  Scene(const Scene&);
  Scene &operator=(const Scene&);
  size_t capacity;
  size_t size;
  Drawable **drawables;
};
 
class Command {
 public:
  virtual void execute() = 0;
};
 
class ShiftPlaceableCommand : public Command {
 public:
  ShiftPlaceableCommand(Placeable &placeable, double shiftX, double shiftY)
    : placeable(placeable), shiftX(shiftX), shiftY(shiftY) {}
  virtual void execute() {
    placeable.setX(placeable.getX() + shiftX);
    placeable.setY(placeable.getY() + shiftY);
  }
 private:
  Placeable &placeable;
  double shiftX, shiftY;
};
 
Circle getInscribedCircle(const Square &square) {
  double halfSide = square.getSide() / 2.0;
  return Circle(square.getX() + halfSide,
    square.getY() + halfSide, halfSide);
}
 
int main(int argc, char *argv[]) {
  Surface surface;
  Scene scene(2);
 
  Square square(1, 1, 2);
  Circle circle = getInscribedCircle(square);
 
  scene.add(&square);
  scene.add(&circle);
 
  ShiftPlaceableCommand shiftCircle(circle, 1.03, 1.03);
  ShiftPlaceableCommand shiftSquare(square, 1.03, 1.03);
 
  for (int i = 0; i < 100; ++i) {
    shiftCircle.execute();
    shiftSquare.execute();
    scene.draw(surface);
  }
  
  return 0;
}
JuliaMa
4 / 2 / 1
Регистрация: 09.05.2013
Сообщений: 48
10.05.2013, 15:50  [ТС]     Передвижение графических объектов на языке С++ #3
Спасибо огромное!))))))))))))))))))Вы мне очень помогли!)))
Ответ Создать тему
Опции темы

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