Изучивши предложенные варианты и впоследствии систематизировав их, я понял что это не то. А вот те критерии, которые считаю главенствующими в моём представлении о меню: 1)Небольшое(20-40 строк)-иначе говоря для чайников; 2)Расположенное только в процедуре(НЕ в модуле и основной программе)-чтобы, как говорится с места в карьер; 3)Управление меню только КЛАВИШАМИ (точнее стрелками "вверх" и "вниз"). Причём указанная в данный момент (как бы её назвать) титра должна делать вид, что именно её на даный момент выбрали; 4)Прежде чем спросить про язык, на которым я ПРОШУ написать меню, просто вспомните название сайта; 5)Всего 3 титры. За сим удаляюсь с большой надеждою, всегда ваш 1234.
Заменой преведённой выше воспользовался. Эффект тот же. Как пахало, так и пашет. А вот про пункт Exit ты меня заинтересовал. И "приведённый ниже кусок" (как вы изволили выразиться) у меня в основной части. Чтобы лучше понять, связываю меню с програмкою-так сказать, для наглядности.
Uses Graph,Crt; const Left =#75; Right = #77; Up = #72; Esc = #27; var ErrCode : Integer; P1: pointer; S, x, y, sized,i,j :integer; Ch: char; x1: integer; C:Char;Sl:Integer; Function Menu(new: string): Integer; Var Count: integer; Strings: array [0 .. 15] of string [127]; I: integer; Ch: char; X, Y, H: integer; Begin Count := 1; Strings[0] := ''; For i := 1 to Length(new) do begin If new[i] = #13 then begin Inc(Count); Strings[Count - 1] := ''; end else Strings[Count - 1] := Strings[Count - 1] + new[i]; end; SetTextJustify(CenterText, CenterText); H := TextHeight('A') + 10; ClearDevice; SetColor(WHITE); For i := 0 to Count - 1 do OutTextXY(GetMaxX div 2, GetMaxY div 2 - (Count - 1) * H div 2 - H div 4 + i * H, Strings[i]); I := 0; Repeat SetColor(GREEN); X := TextWidth(Strings[i]) + 10; Y := TextHeight(Strings[i]) + 10; Rectangle(GetMaxX div 2 - X div 2, GetMaxY div 2 - (Count - 1) * H div 2 + i * H - Y div 2, GetMaxX div 2 + X div 2, GetMaxY div 2 - (Count - 1) * H div 2 + i * H + Y div 2); Ch := readkey; SetColor(BLACK); X := TextWidth(Strings[i]) + 10; Y := TextHeight(Strings[i]) + 10; Rectangle(GetMaxX div 2 - X div 2, GetMaxY div 2 - (Count - 1) * H div 2 + i * H - Y div 2, GetMaxX div 2 + X div 2, GetMaxY div 2 - (Count - 1) * H div 2 + i * H + Y div 2); Case ch of #0: Case ReadKey of #72: Begin Dec(i); If i < 0 then I := Count - 1; End; #80: Begin Inc(i); If i >= Count then I := 0; End; End; End; Until ch = #13; Menu := i; If ch=#13 then ClearDevice; End; Procedure Init; Var Gd,Gm:Integer; Begin Gd:=Detect; InitGraph(Gd,Gm,'') End; Begin Init; {Число клавиши 98 взял от фонаря(главное чтоб выполнялось)} While c<>#98 do {Вот здесь где-то зарыта собака-чтобы меню высветилось необходимочто-нибудь нажать} Begin If ReadKey=#0 Then ReadKey; Case Menu('New'#13'option'#13'Exit') of 0: C:=#98; {Данное присваивание- это как какой-то доступ к последующему этапу} 1:Begin SetTextStyle(DefaultFont,HorizDir,5); SetColor(LightBlue); {Здесь я просто хочу, чтобы на экране высветились сведения об игре} OutTextXY(140,90,'Hello'); End; 2: Exit;{А здесь то в чём ошибка} End; Case Menu('Easy'#13'Medium'#13'Hard'#13'Back') of 0: Begin Sl:=50; {Это у меня уровень сожности} C:=#98; {Эта операция-для доступа к игре} End; 1: Begin Sl:=100; C:=#98; End; 2: Begin Sl:=1; C:=#98; End; 3: C:=#4; end; {4-число от фонаря: главное-что не 98} end; setfillstyle(1,4); {Эту часть програмы оставьте без анализа-она просто демонстрирует работу меню} setcolor(4); line(110,50,110,60); line(110,70,110,73); setfillstyle(1,1); setcolor(1); fillellipse(110,65,20,5); floodfill(110,65,1); line(130,73,90,73); sized:=imagesize(30,50,180,50); getmem(p1,sized); getimage(30,56,180,90,p1^); cleardevice; x:=225; y:=450; x1:=x; putimage(x,y,p1^, xorput); repeat ch:=readkey; if ch=#0 then ch:=readkey; case ch of left : x1:=x-10; right: x1:=x+10; end; if ch=up then begin for i:=1 to 450 do begin if i<440 then putpixel(x1+80,440-i+5,white); delay (1); putpixel(x1+80,440-i+10,black); end; end; if (x1 < 0) or (x1 > GetmaxX-150) then x1:=x; putimage(x,y,p1^,xorput); putimage(x1,y, p1^,xorput); x:=x1; until ch=Esc; CloseGraph; end. End.