![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
HoOope |
![]() ![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 5 Пол: Женский Реальное имя: ОльКа Репутация: ![]() ![]() ![]() |
Люди-человеки, помогите будной студентки разобраться в проге.
![]() ![]() ![]() Вот задание: 1) разработать интерфейсное меню, состоящее из кнопок вида ромба и квадрата 2)кнопки должны размещаться на панели и иметь объемный вид 3) текущей является кнопка серого цвета, неактивная - зеленая 4) перемещение по кнопкам производиться с помощью клавиш навигации, выбор кнопки-энтер 5) по нажатию каждой кнопки создается эффект вогнутости и выполняется действия: на дополнительную панель внизу экрана вывести задание на лабу; развернуть панель и вернуть ее в исходное состояние; увеличить объемность панели... А вот то, что я намучала: uses crt,graph; Очень жду и надеюсь на Вашу помощь ![]() ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Программы, написанные по технологии Copy+Paste привести в рабочий вид гораздо сложнее, чем написать их заново. Сначала исправь все синтаксические ошибки (у тебя в программе их огромное количество. Где-то лишняя скобка при вызове процедуры; где-то ты забыла указать что процедура - это метод класса, из-за чего получаешь сообщения о неизвестных переменных. Где-то строка не является завершенной, потому что нельзя просто так добавлять в строку апостроф, его надо дублировать:
k[4].t:='ob''emnost''';, ну а про то, что методов romb и kvt в типе Knopka вообще нет - я уж и не говорю)... В общем, еще раз: это делается во-первых, не копированием кусков текста из одного места в другое, а во-вторых - гораздо проще, чем сделано у тебя. Если хочешь - покажу, как. Но я делать за тебя полностью не буду, если будешь принимать в процессе написания активное участие - тогда начну объяснять... Нет - так нет. |
HoOope |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 5 Пол: Женский Реальное имя: ОльКа Репутация: ![]() ![]() ![]() |
Я очень-очень хочу, чтобы Вы мне объяснили!!!:))))) Просто я выпрасила у одногруппников похожие проги и решила, что переделать я все же смогу, но видемо без помощи у меня мало что вышло=(((
А как можно проще написать? С ромбом можно как-то легче поступить? А вот с квадратиком разве что-то не так: uses crt,graph; |
TarasBer |
![]()
Сообщение
#4
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Крайне не рекомендую использовать FloodFill, есть же процедура FillPoly для рисования закрашенных прямоугольников, вот ей и пользуйтесь.
-------------------- |
maksimla |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
Крайне не рекомендую использовать FloodFill, есть же процедура FillPoly для рисования закрашенных прямоугольников, вот ей и пользуйтесь. можешь обьеснить почему не рекомендуешь использовать FloodFill почему? -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
HoOope |
![]()
Сообщение
#6
|
![]() Группа: Пользователи Сообщений: 5 Пол: Женский Реальное имя: ОльКа Репутация: ![]() ![]() ![]() |
ДА, почему? ведь с помощью FillPoly так долго все описывать((
|
TarasBer |
![]()
Сообщение
#7
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
ДА, почему? ведь с помощью FillPoly так долго все описывать(( Огромная разница между FloodFill и FillPoly по части скорости и используемой памяти. Не, если хотите, делайте так... Никто не запрешает, только это как-то по-индийски. Зачем заставлять компьютер делать лишние действия, летя в Москву через Владивосток? Если говорить подробнее, то закраска многоугольника, при знании координат его центров, делается из линий очень просто, а уж в случае ромба - просто несколько линейно возрастающих горизонталей провести и всё. В случае же с заливкой необходимо попиксельно закрашивать всю область, при этом выполняя обход для того, чтобы рассчитать зону, ограниченную данными условиями. Обход, как известно, память требует, и делать его, когда необходимая зона и так известна - просто бессмысленно. Сообщение отредактировано: TarasBer - 28.02.2009 20:18 -------------------- |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата А как можно проще написать? С ромбом можно как-то легче поступить? Значит, смотри...Начнем с того, что у тебя невнятно описана цепочка наследования. Давай посмотрим, что у тебя есть: у тебя есть прямоугольная панель, у тебя есть прямоугольная кнопка и ромбовидная кнопка. Есть ли что-то общее между всеми этими сущностями? Есть... Все они однозначно идентифицируются прямоугольником, в котором находятся. Причем как для отрисовки прямоугольной, так и для отрисовки ромбовидной кнопки нужны 4 точки. В связи с чем объекты предлагаю унаследовать так: typeПопробуй посмотреть на то, что я написал, и подумать, не слишком ли это сложно для тебя. Естественно, я набросал программу, и этот кусок - именно оттуда, эта иерархия работает, причем работает прекрасно. Основная программа выглядит вот так: beginКак видишь, все очень даже компактно, и вполне в рамках ООП... Так что выбор - за тобой, перекраивать то решение, которое у тебя есть, или написать правильно работающую изначально программу. Цитата Крайне не рекомендую использовать FloodFill, есть же процедура FillPoly для рисования закрашенных прямоугольников, вот ей и пользуйтесь. Я бы не был так категоричен. Для небольших размеров кнопок вполне подойдет и FloodFill (она медлительна при заливке больших поверхностей), а вот при попытке отладить программу в FPC я столкнулся с некорректной работой FillPoly на этом компиляторе, в связи с чем пришлось использовать условную компиляцию при отладке на двух компиляторах, чтоб не изменять программу туда-сюда... Так что не надо заниматься предварительной оптимизацией. "Premature optimization is the root of all evil" (С) Д. Кнут, вообще-то. Сначала надо заставить программу работать в принципе, а уж потом - считать такты и микросекунды, что так любят делать некоторые ![]() Добавлено через 2 мин. P.S. Цитата только это как-то по-индийски Я бы попросил не касаться понятий "индусского кода". Индусы пишут ГОРАЗДО более правильно, чем те, кто ХОЧЕТ представить их слабыми программистами. И у них надо еще поучиться программировать кое-кому. |
HoOope |
![]()
Сообщение
#9
|
![]() Группа: Пользователи Сообщений: 5 Пол: Женский Реальное имя: ОльКа Репутация: ![]() ![]() ![]() |
Да, объем кода и в сравнение не идет, особенно для ООП. То, что в этом решении можно применить cв-во наследования - +, этого нам даже препод не говорил)))) Но вот что ознает этот странный значек
Цитата ptbutton = ^tbutton; и что мы означает вот эта часть Цитата private ????function get_xst: integer; virtual; function get_yst: integer; virtual; function get_xfn: integer; virtual; function get_yfn: integer; virtual; end; |
HoOope |
![]()
Сообщение
#10
|
![]() Группа: Пользователи Сообщений: 5 Пол: Женский Реальное имя: ОльКа Репутация: ![]() ![]() ![]() |
вот код немного другой проги с кнопочками прямоугольниками и кругами
Uses crt,graph; кропочку уменьшения панели можно переделать на увеличение объемности , а перенос - возвращение в прежний режим и как можно написать общие процедурки для ромба и квадрата?? |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 11:32 |