979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
1 | |
Простая графическая система27.03.2013, 12:27. Показов 1648. Ответов 16
Метки нет (Все метки)
Здарова!
Решаю задачку: Реализуйте простую графическую систему, используя доступные на вашем компьютере графические средства (если их нет — используйте ASCII представление, где пиксел, это знакоместо): Window(n,m) создает на экране область размером nxm. Координаты декартовы. Окно w типа Window имеет координаты w.current(). Начальные координаты равны Point(0,0). Координаты можно задать с помощью w.current(p), где p имеет тип Point. Тип Point задается парой координат: Point(x,y). Тип Line специфицируется парой точек: Line(w.current(),p2); класс Shape является общим интерфейсом для Dot, Line, Rectangle, Circle и других фигур. Point не является Shape. Dot(p) представляет точку p на экране. Shape на экране не наблюдается до вызова draw(). Например: w.draw(Circle(w.current(),10)). Каждый Shape имеет девять контактных точек: e (east), w (west), n (north), s (south), ne, nw, se, sw и с (center). Например: Line(x.c(), y.nw()) создает линию из центра x в левый верхний угол y. После вызова draw() для Shape его текуцие координаты равны se(). Rectangle верхней левой и правой нижней вершинами: Rectangle(w.current(),Point(10,10)). В качестве простого теста изобразите простой детский рисунок «дом с крышей, два окна и дверь». мб кто чо поможет или решение есть готовое? А то я в ооп стиле никода не писал. Добавлено через 4 минуты Например от "Окно w типа Window имеет координаты w.current()." как это понимать? Оно, что должно напечатать или вернуть массив с размером окна? Головняк. Добавлено через 2 минуты Давайте господа подключайтесь решаем вместе. Задачка эта для начинающих из Страуструпа. Как раз я ее щас решаю подключаемся. Кто со мной тот герой. Давайте кто первый решит , на скорость, тот и молодец
0
|
27.03.2013, 12:27 | |
Ответы с готовыми решениями:
16
Простая графическая библеотека Простая графическая библиотека Простая файловая система Графическая оболочка |
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
27.03.2013, 12:33 [ТС] | 3 |
да придется мучить я ток хо побыстрее еще 12 задач про наследование нужно решить, главное первую вымучить, а остальные уже легко пойдут без вопросов.
Добавлено через 40 секунд не люблю пропускать задачи, совесть потом мучает, лучше кое как сделать спустя рукава сделать чем пропустить. Добавлено через 1 минуту Да и задачка впринципе не сложная по порядку идеш создаешь классы да разбираться лень. Добавлено через 27 секунд лучше если б кто то готовое решение дал, а потом готовое решение разобрать. Добавлено через 24 секунды обучение быстрее пойдет, а то самому разбирать я времени много затрачу. Добавлено через 49 секунд Это ж известная задачка небось. Неужели никто не решал?
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
27.03.2013, 12:41 [ТС] | 5 |
Нет потому, что я потом заново перерешаю уже без подглядывания по чужому решению. Скорость обучения растет в разы. Самому разбирать много времени тратится.
Скил набивать, потом уже будет легко не мука. . Яж говорю первую тяжело если не кода не делал, а затем уже легко идет. Как говорится второй раз не первый раз .
0
|
Заблокирован
|
|
27.03.2013, 12:46 | 6 |
ninja2, лови Как рисовать элементарные геометрические фигуры?
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
27.03.2013, 12:52 [ТС] | 8 |
Не мне без ВИНАПИ я его еще не учил.
Добавлено через 1 минуту Ок. Я значит буду задавать конкретные вопросы мелкие по теме. Добавлено через 1 минуту Все продолжаю делать возникнуть вопросы сюда кину.
0
|
|
27.03.2013, 12:55
#9
|
Не по теме: - ну так как ты тогда набъёшь тэлэнт если простого кода испугался? Там не АПА а обычная консолька с функциями GDI, единственная функция АПИ в проекте , которая получает дескрптор окна консоли, и всё. - поищи тогда примеры с устаревшим graphics.h
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
27.03.2013, 16:30 [ТС] | 10 |
Нет я уже сам сделаю свою программу без примеров по условию в задаче.
Все не помогаем либо готовое решение, что касается задачи конкретно по описанию в условии, либо не флудим. Добавлено через 3 часа 25 минут Я от все немогу никак придумать как же его реализовать? От допустим я создаю класс Window, это как бы окно класс Shape это производный абстрактный класс от Window, а от Shape уже производные все остальные классы. Я представил класс Window как двумерный массив mass, размером двести на двести. В начале мы просто инициализируем окно вызовом Window w(40, 40) например 40 на 40 размером. все есть. Дальше я создал класс Line : public Shape ( Shape : public Window). Естественно в Window мы создаем public двумерный массив mass, чтобы мы могли его редактировать из остальных классов. Потом уже в конце при вызове Window:: print() вызвать картину на экран. Так от у меня возникли вопросы по поводу конструирования классов. От допустим возьмем функцию Line::draw(). Она имеет доступ к массиву Window::mass (двумерному, это как бы окно). Но если я в программе вначале инициализирую Window w(40,40), то функция Line::draw() не видит этот объект инициализированный, она как бы обращается к пустому классу, либо к новому классу хз. Так от интересно как же быть? мб создать массив mass статическим и размеры его? Чтобы они были видны с любого экземпляра класса? Или мб я сразу не правильно создаю? хз. От если б был бы mass статический, то мы б легко его могли заполнять вызовом разных draw() из разных классов либо через указатель на базовый класс. А затем уже вконце вывести само окно на печать. Наверно принцип программы сводится к заполнению массива который есть как бы окно? Правильно ж я понял? Добавлено через 6 минут Jupiter, Помоги с алгоритмом тыж опытный!
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
27.03.2013, 16:42 [ТС] | 12 |
Это я описался Shape это производный класс от Window
Добавлено через 3 минуты Window -> Shape , от Shape идут все остальные классы Dot, Line, Rectangle, public наследование, чтобы можно иметь доступ к Window::mass это как бы представление окна Window. Но мне не понятно правильно ли я делаю. И вообще от кажется сам Window::mass нужно сделать static, чтобы можно было его редактировать из классво разных фигур Dot::draw(), Line::draw(), Rectangle::draw(), потому что они обращаются как бы к новому экземпляру Window Добавлено через 5 минут Jupiter, Не ну ты хоть понял как я имею введу сделать? От имеется массив Window::mass[200][200]. При инициализиции мы задаем границы Window::n, Window::m. А дальше просто Shapе наследует Window Line наследует Shape и в Line мы имеем доступ к n, m и mass, и меняем значение его, как бы в линию. Также и другую фигуру. А потом просто Window:: print() и вывилось окно в консоле, то есть массив mass.
0
|
Каратель
|
|
27.03.2013, 16:45 | 13 |
вот я и спрашиваю, почему ты так сделал?
фигура не является окном: 1) включи голову и ещё раз подумай; 2) прочитай задачу ещё раз (ну нет там и слова про Window -> Shape); 3) прочитай главу про наследование ещё раз, сконцентрировав внимание не на синтаксисе, а на том когда применяется наследование и для чего. окно должно агрегировать фигуры
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||||||
27.03.2013, 16:56 [ТС] | 14 | |||||
Мне нужно иметь доступ к окну или хз, поэтому я сделал наследование Shape : public Window.? Или нужно было сделать в Window friend class Shape; ?
А вообще принцип решения задачи у меня правильный? Типо сводится к заполнению массива, а затем вывода его на экран? От примерно по такому коду:
А ну я понял что ты имееш в виду нужно в каждом классе хранить указатель на объект Window. Правильно ж? Добавлено через 1 минуту Да впринципе правильно создаем объект Window w(40, 40) и при инициализации фигур передаем указатель на объект и все нам не нужно наследовать Window и делать статические элементы? Добавлено через 57 секунд Jupiter, Да ты прав. Впринципе так как то проще.
0
|
Каратель
|
|||||||||||
27.03.2013, 17:02 | 15 | ||||||||||
наследование тут не нужно, передавай окно параметром в метод draw каждой фигуры т.е. примерно так
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||||||
28.03.2013, 13:14 [ТС] | 16 | |||||
Да вринципе я смотрю тут одного варианта не существует уже три варианта вижу, так как я с наследованием тоже можно было по идее сделать и работало б.
Спс буду дальше разбирать до готовой версии. Добавлено через 19 часов 36 минут Здарова! От код кое как сделал, фиг его знает, что попало, пока токо для одного класса Line рабочий:
Я так могу для каждого класса передать например w.current() и вторую точку и тупо нарисовать фигуру. А как же эти переменные использовать? Да и вообще шото не то походу. Добавлено через 53 секунды Да и линии токо по диагонали рисуются. Добавлено через 3 минуты там наверно они должны быть статические раз после вызова Shape:draw w current() устанавливается в значение переменной se то есть в правый нижний угол. ????? Добавлено через 1 минуту Господа помогайте я уже замучился с ней, а еще под эту задачку дальше штук 5 упражнений ее дорабатывать. Добавлено через 1 минуту Да на линии, то пофигу, что по диаганали главное, что рисуются, мне бы правильную структуру программы составить, так как положено, от что главное, а там уже как нарисуешь так нарисуешь, то уже на втором месте. Добавлено через 16 минут Можно конечно придумать, что при инициализации например Line(Point1, Point2) можно считать это как бы верх низ и из них можно определить все остальные 9 точек. хз. как бы предположить, что мы квадрат передаем, только для Rectangle уже прямоугольник. А для круга линии и точки квадрат. Хз. Да мб не заморачиватся бахнуть как попало да и все оно мб мне и нафиг не пригодиться. Скорее всего. Добавлено через 1 минуту Satanаx 8 помогай! Чо смотриш? Добавлено через 5 минут Меня утета строчка в условии задачи непонятна "Line(x.c(),y.nw()) создает линию из центра x в левый верхний угол y" Это как понимать то? Шо это за х и шо это за у? Ну видимо объекты типа Point. Ну токо еще он какие, то функции им добавил. Да запутано все.
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
29.03.2013, 19:15 [ТС] | 17 |
Все как бы доделал http://www.kselax.ru/2013/03/p... /#more-497
0
|
29.03.2013, 19:15 | |
29.03.2013, 19:15 | |
Помогаю со студенческими работами здесь
17
Графическая заставка С++ Графическая библиотека C++ Графическая заставка на С Графическая библиотека Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |