Skocz do zawartości
Shlizer

[turbo Pascal] Menu

Rekomendowane odpowiedzi

Witam.. mam pewien problem z TB. Chcę zrobić menu z 3 możliwościami. W moim przypadku są to wizytówki. Gdy wcisnę F1 ukaże się wizytówka nr.1, F2 - wizytówka druga, F3 - trzecia, a gdy wcisnę Esc powinien wrócić do menu. Natomiast jeśli w menu wcisnę Esc to powinien kończyć program.

 

program wizytowki;uses CRT;var zn:char;procedure ramka1(xg,yg,xd,yd: byte); var n: byte;  begin  for n:=xg to xd do   begin   gotoxy(n,yg); write(char(196));   gotoxy(n,yd); write(char(196));   end;  for n:=yg to yd do   begin   gotoxy(xg,n); write(char(179));   gotoxy(xd,n); write(char(179));   end;  gotoxy(xg,yg); write(char(218));  gotoxy(xd,yd); write(char(291));  gotoxy(xd,yg); write(char(217));  gotoxy(xg,yd); write(char(292));  end;procedure spis; begin clrscr; gotoxy(34,10); writeln('F1 - Menu1'); gotoxy(34,12); writeln('F2 - Menu2'); gotoxy(34,14); writeln('F3 - Menu3'); gotoxy(34,16); writeln('Esc - Koniec'); end;procedure menu1; begin clrscr; gotoxy(33,12); writeln('Piotr Pierwszy'); gotoxy(33,14); writeln('ul. Palacow 15'); gotoxy(33,16); writeln('40-375 Iksowo'); ramka1(20,10,60,18); zn:=readkey; if ord(zn)=27 then spis end;procedure menu2; begin clrscr; gotoxy(34,12); writeln('Alicja Druga'); gotoxy(33,14); writeln('ul. Kolo 12a/7'); gotoxy(33,16); writeln('12-834 Pieszkow'); ramka1(20,10,60,18); zn:=readkey; if ord(zn)=27 then spis end;procedure menu3; begin clrscr; gotoxy(34,12); writeln('Robert Trzeci'); gotoxy(33,14); writeln('ul. Kartofla 12'); gotoxy(34,16); writeln('20-469 Konin'); ramka1(20,10,60,18); zn:=readkey; if ord(zn)=27 then spis end;begin spis; repeat  if ord(zn)=0 then  begin  zn:=readkey;  case ord(zn) of   59:menu1;   60:menu2;   61:menu3;  end;  end; until ord(zn)=27;end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

program wizytowki;uses CRT;var zn:char;	sub: Boolean;procedure ramka1(xg,yg,xd,yd: byte);var n: byte;  begin  for n:=xg to xd do   begin   gotoxy(n,yg); write(char(196));   gotoxy(n,yd); write(char(196));   end;  for n:=yg to yd do   begin   gotoxy(xg,n); write(char(179));   gotoxy(xd,n); write(char(179));   end;  gotoxy(xg,yg); write(char(218));  gotoxy(xd,yd); write(char(291));  gotoxy(xd,yg); write(char(217));  gotoxy(xg,yd); write(char(292));  end;procedure spis;beginclrscr;sub:=False;gotoxy(34,10); writeln('F1 - Menu1');gotoxy(34,12); writeln('F2 - Menu2');gotoxy(34,14); writeln('F3 - Menu3');gotoxy(34,16); writeln('Esc - Koniec');zn:='0';end;procedure menu1;beginclrscr;sub:=True;gotoxy(33,12); writeln('Piotr Pierwszy');gotoxy(33,14); writeln('ul. Palacow 15');gotoxy(33,16); writeln('40-375 Iksowo');ramka1(20,10,60,18);repeatzn:=readkey;until (ord(zn)=27);spis;end;procedure menu2;beginclrscr;sub:=True;gotoxy(34,12); writeln('Alicja Druga');gotoxy(33,14); writeln('ul. Kolo 12a/7');gotoxy(33,16); writeln('12-834 Pieszkow');ramka1(20,10,60,18);repeatzn:=readkey;until (ord(zn)=27);spis;end;procedure menu3;beginclrscr;sub:=True;gotoxy(34,12); writeln('Robert Trzeci');gotoxy(33,14); writeln('ul. Kartofla 12');gotoxy(34,16); writeln('20-469 Konin');ramka1(20,10,60,18);repeatzn:=readkey;until (ord(zn)=27);spis;end;beginspis;repeat  zn:=readkey;  case ord(zn) of   59:menu1;   60:menu2;   61:menu3;  end;until ((ord(zn)=27) and (not sub));end.

Poprawki są 3:

1. Sprawdzam, czy jestem w podmenu (sub - wartość logiczna).

2. Usunąłem warunek

if ord(zn)=0
bo program się zapętlał bez wchodzenia do "case".

3. Jedyny dozwolony klawisz przy wizytówce to ESC - nie można przełączać pomiędzy wizytówkami bez wychodzenia do menu. Jeśli chcesz to zmienić, to usuń pętle w procedurach.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...