Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2008, 08:20   #1
Андрюха из ПХТТ
Пользователь
 
Регистрация: 04.01.2008
Сообщений: 21
По умолчанию Помогите сделать меню

Надо сделать меню такого типа
Код:
GoToXY(25,3);textbackground(0);
textcolor (5);writeln ('      ┌────────────────────┐');
GoToXY(25,4); writeln ('N─────┤Новая игра          |');
GoToXY(25,5); writeln ('      └────────────────────┘');
GoToXY(25,6); writeln ('      ┌────────────────────┐');
GoToXY(25,7); writeln ('H─────┤Помощь              |');
GoToXY(25,8); writeln ('      └────────────────────┘');
GoToXY(25,9); writeln ('      ┌────────────────────┐');
GoToXY(25,10);writeln ('A─────┤О программе         |');
GoToXY(25,11);writeln ('      └────────────────────┘');
GoToXY(25,12);writeln ('      ┌────────────────────┐');
GoToXY(25,13);writeln ('Q─────┤Выход               |');
GoToXY(25,14);writeln ('      └────────────────────┘');
1: read (key);
case key of
'n' , 'N': igra;
'H' , 'h': help;
'A' , 'a': autor;
'Q' , 'q': quit;
else begin writeln ('Не правильно выбрана буква, пожалуйста, попробуйте снова');end;
end;
когда вводишь "неправильную" букву строка "Не правильно выбрана буква, пожалуйста, попробуйте снова" выводиться 3 раза. как добиться того, чтобы она выводилась 1 раз?
Андрюха из ПХТТ вне форума Ответить с цитированием
Старый 09.02.2008, 08:56   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Можно написать так
Код:
else writeln ('Не правильно выбрана буква, пожалуйста, попробуйте снова');  
end;
хотя ошибка скорее всего не в этом. Нужно смотреть место, где идет ссылка на Label 1. Очевидно там цикл, и надо это сообщение вывести из цикла.

Последний раз редактировалось puporev; 09.02.2008 в 10:05.
puporev вне форума Ответить с цитированием
Старый 09.02.2008, 13:35   #3
Андрюха из ПХТТ
Пользователь
 
Регистрация: 04.01.2008
Сообщений: 21
По умолчанию

ссылка на label 1 сдесь
Код:
# case key of  
# 'n' , 'N': igra;  
# 'H' , 'h': help;  
# 'A' , 'a': autor;  
# 'Q' , 'q': quit;  
# else begin writeln ('Не правильно выбрана буква, пожалуйста, попробуйте снова'); goto 1; end;  
# end;</font>
Андрюха из ПХТТ вне форума Ответить с цитированием
Старый 09.02.2008, 14:20   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

У меня Турбо Паскаль, поэтому немного по другому.
Вот так нормально работает.
Код:
uses crt;
var ch:char;label 1;
begin
clrscr;
1:
writeln('vvedite simvol:');
case readkey of
'n':writeln('1');
'h':writeln('2');
'a':writeln('3');
'q':writeln('4');
else writeln('snova');readln;goto 1;
end;
readln;
end.
puporev вне форума Ответить с цитированием
Старый 09.02.2008, 20:01   #5
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Предлагаю такой вариант МЕНЮ.
Код представлен по стандарту, но его легко можно переделать для графики или просто переоформить. Главное это принцип работы
Код:
{ Пример создания и использования меню }
program menu2;
uses Crt;
const
     NORM=$17; { цвет невыделеного пункта }
     SEL=$70;  { цвет выделенного пункта }
     N=3;
var
     menu:array[1..N] of string[12];{ названия пунктов меню }
     punkt:integer;  { номер выделенного пункта }
     ch:char;        { введенный символ }
     x,y:integer;    { координаты первой строки меню }

Procedure punkt1;
begin
     ClrScr;
     writeln('Процедура 1.Нажмите <Enter> для продолжения.');
     readln;
end;

Procedure punkt2;
begin
     ClrScr;
     writeln('Процедура 2.Нажмите <Enter> для продолжения.');
     readln;
end;

Procedure MenuToScr;{ вывод меню на экран }
var i:integer;
begin
     ClrScr;
     for i:=1 to N do begin
          GoToXY(x,y+i-1);
          write(menu[i]);
     end;
     TextAttr:=SEL;
     GoToXY(x,y+punkt-1);
     write(menu[punkt]);{ выделим строку меню }
     TextAttr:=NORM;
end;
{ основная программа }
begin
     menu[1]:=' Действие 1 ';
     menu[2]:=' Действие 2 ';
     menu[3]:=' Выход ';
     punkt:=1;
     x:=5;
     y:=5; TextAttr:=NORM;
     MenuToScr;
     repeat
          ch:=ReadKey;
          if ch=char(0) then begin
               ch:=ReadKey;
               case ch of
                    chr(80):{ стрелка вниз }
                         if punkt<N then begin
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              punkt:=punkt+1;
                              TextAttr:=SEl;
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              TextAttr:=NORM;
                         end;
                    chr(72):{ стрелка вверх }
                         if punkt>1 then begin
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              punkt:=punkt-1;
                              TextAttr:=SEl;
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              TextAttr:=NORM;
                         end;
                 end;
              end
          else
               if ch=chr(13) then begin { нажата клавиша <Enter> }
                    case punkt of
                         1:punkt1;
                         2:punkt2;
                         3:ch:=chr(27);{ выход }
                    end;
                    MenuToScr;
               end;
     until ch=chr(27);{ 27 - код <Esc> }
end.
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel.Пользовательское меню. Помогите сделать. susanin15 Microsoft Office Excel 2 10.06.2008 22:57
как сделать вверрху меню с ссылками, после перехода по которым подгружались бы сайты. Chaos-Delta HTML и CSS 30 12.01.2008 11:21
как сделать в дельфи меню... Илюха Общие вопросы Delphi 7 19.11.2007 22:15