| 1234 |
2.02.2007 18:01
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Реальное имя: 1234 Репутация: -1 |
Изучивши предложенные варианты и впоследствии систематизировав их, я понял что это не то. А вот те критерии, которые считаю главенствующими в моём представлении о меню:
1)Небольшое(20-40 строк)-иначе говоря для чайников; 2)Расположенное только в процедуре(НЕ в модуле и основной программе)-чтобы, как говорится с места в карьер; 3)Управление меню только КЛАВИШАМИ (точнее стрелками "вверх" и "вниз"). Причём указанная в данный момент (как бы её назвать) титра должна делать вид, что именно её на даный момент выбрали; 4)Прежде чем спросить про язык, на которым я ПРОШУ написать меню, просто вспомните название сайта; 5)Всего 3 титры. За сим удаляюсь с большой надеждою, всегда ваш 1234. Сообщение отредактировано: 1234 - 2.02.2007 18:04 |
![]() ![]() |
| TarasBer |
5.02.2007 14:57
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Эээ... Я не понял. Вам надо, чтом меню сразу высветилось? Или чтоб именно после нажатия клавиши?
В первом случае ридкей убрать надо, конечно. А во втором случае надо перед ридкеем на всякий случай очистить клавиатурный буфер. То есть перед ридкеем надо написать
Я так и не увидел, как вы боритесь со случаем, когда c изначально, при запуске программы, равно #98. В Паскале непроинициализированные переменные не обнуляются. Что было в оперативной памяти до запуска программы, то в переменной и окажется. Далее, замените же наконец Exit на
Вы работаете в проводнике что-ли? Или всё таки в тотал командере? Так вот, некоторые люди, вроде меня, в качестве файлового менеджера используют ФАР, который использует ТЕКСТОВЫЙ режим. И если какая-то программа забыла за собой закрыть графику, то ФАР вместо связной картинки выведет на экран бред. А тем, кто работает под ДОСом после вашей программы остаётся либо запустить что-нибудь, восстнавливающее текстовыцй режим, либо всё - РЕСЕТ. Для вывода сведений о программе вместо options пишут about... Определитесь с отступами - 2 или 3 пробела. А то увидел, как вы мою процедуру переписали - чуть не упал. Лучше бы вы её просто ctrl-insert - shift-insert в любую виндоуз-программу, в которой открыт ваш ***.pas. Меня сейчас все обматерят, но рекомендую для повышения читабельности писать бегин на одной строчке с предыдущим словом (енд - елсе тоже пишите в одну строчку, а не так, что елсе на следующей строке после десяти пробелов) и писать все зарезервированные слова маленькими буквами. Конечно, выбор стиля программирования - дело творческое, но вы, похоже, этот выбор ещё не сделали. Далее, не рекомендую defaultfont. Например потому, что у некоторых (у меня, например) этот шрифт вместо цифр и пробелов рисует иероглифы. Или потому, что его нельзя переделать под русские буквы. После writeln('Hello'); неплохо б написать
И при выводе сведений о программе рекомендую во всех outtextxy первым параметром писать GetMaxX div 2 (или shr 1, чтобы мне глаз меньше резало), чтобы весь текст выводился повередине. Либо вы вообще не указывайте явные координаты, либо явно задайте графический режим (Gd := 9; Gm := 2), а то вдруг у кого-то на древнем 8086 - CGA... Надо, чтоб программа либо в любом случае рисовала правильную картинку, либо просто не запускалась на компах с не тем видеоадаптером. И у вас всё равно после вывода сведений о программе вызывается второе меню. Чтобы этого не было, поместите тогда уж первое меню в цикл репит-антил с условием выхода i=0 (где в переменную i сразу записывается значение функции, то есть вместь case menu of сделайте i := menu; case i of). И не забывайте, что #72 - это всё таки 'H', а #0#72 - это уже стрелочка. Либо заводите две переменные для считывания (я так делаю) - Key и ScanKey и пишите везде
либо, случай Key = #0 разбирайте внутри:
И всё, что я вам объясняю сейчас, есть в первой части Фаронова. В который раз я из-за вас нарушаю правило №8, рекламируя одну и ту же книгу... Чёто я после case of стал двоеточия ставить... А ведь вечер ещё не наступил... Сообщение отредактировано: TarasBer - 5.02.2007 15:11 -------------------- |
1234 Опять про меню 2.02.2007 18:01
TarasBer Подразумевается, что подключены CRT и Graph.
fun... 2.02.2007 19:24
volvo Больше так не говори, хорошо?
TMT Pascal / VP (Vi... 2.02.2007 19:43
1234 Да, Pascal безграничен. :yes2: Как сделать, чтобы... 3.02.2007 17:49
TarasBer
Да, Pascal безграничен. :yes2: Как сделать, чтоб... 3.02.2007 19:04
mamont001 Просто делаеш :
if нажато уровень сложности then b... 3.02.2007 18:54
1234 А как сделать так, чтобы (желательно в самой подпр... 4.02.2007 18:46
Bokul Ты сначала разберись с тем, что тебе дали. Подобны... 4.02.2007 18:57
1234 Ты знаешь, только хотел сказать. Чтобы осуществлят... 4.02.2007 19:27
volvo Тогда и у меня к тебе вопросик - что есть по-твоем... 4.02.2007 19:35
1234 Не мешало бы мсье TarasBerу написать комментарии к... 4.02.2007 19:57
TarasBer
Не мешало бы мсье TarasBerу написать комментарии ... 4.02.2007 21:08
TarasBer Пока писал коментарии, под конец нервы стали сдава... 4.02.2007 21:57
1234 Заменой преведённой выше воспользовался. Эффект то... 5.02.2007 14:03
1234 Первый случай, второй... Это хоть в основной части... 5.02.2007 16:25
TarasBer
Первый случай, второй... Это хоть в основной част... 5.02.2007 17:07
volvo Глобальные - ОБЯЗАНЫ обнуляться, локальные - нет, ... 5.02.2007 17:12
1234 Объяснить-то ты всё объяснил. А мне необходимо поя... 5.02.2007 17:45
TarasBer Да, глобальные обнуляются... Даже массивы, как ни ... 6.02.2007 14:56![]() ![]() |
|
Текстовая версия | 11.12.2025 19:41 |