Jump to content
Sign in to follow this  
Dawide Heavens

Pascal lépegetős menü

Recommended Posts

Hali!

 

Pascalban egy kicsit elakadtam, ugyanis egy menüt akarok (akar a halál, de muszáj megcsinálnom) készíteni amiben a nyilakkal lehet lépkedni és enterre belép az adott menübe.

Sok ötletem nincs, remélem van olyan profi itt aki eltudná magyarázni hogy hogyan is kellene ennek kinéznie. Esetleg egy kódnak nagyon hálás lennék. :)

 

Köszönöm előre is!

Share this post


Link to post
Share on other sites

Ezt úgy tudod megcsinálni, hogy a menü első elemének hátterét kiemelném TextBackground-dal, alá pedig kiírnám az összes többi menüpontot. Létrehoznék egy integer változót, amiben eltárolom, hogy hol áll a kurzor jelenleg. Ennek a menü kiírása után rögtön 1 értéket adnék. Ezután egy repeat-until ciklussal ellenőrizném a billentyűlenyomásokat. Bevezetnék egy char típusú változót, amibe mindig beolvasom a lenyomott karaktert. Ha a lenyomott karakter kódja 72, akkor csökkentem az integer változót, és újraírom a menüt, de ezúttal az integer változóban megadott menüpontot jelölöm ki. Ha a 80-as kódú billentyű (le nyíl) lett megnyomva, akkor növelem az integer változó értékét, és ennek megfelelően újraírom a menüt. A ciklus until záradékában ellenőrzöd a 13-as kódú billentyűt is (Enter). Az integer változó értéke alapján pedig elugorsz a kért menüpontba.

 

A menü kiírását tedd egy eljárásba (procedure). Paramétere legyen az integer változó értéke. Így elég lesz ezt meghívnod, és sok írástól megkíméled magad.

 

Az alábbi program bemutatja hogyan készíthetünk egy egyszerű menüt az eddig tanultak alapján, melyben a felfelé ill. lefelé nyilak segítségével mozoghatunk, Enter-rel aktiválhatjuk a kiválasztott menüpontot és Esc-el léphetünk ki a programból:

    program Pelda19;
    uses crt;
    var k:integer; { ebben fogjuk tarolni, hogy eppen melyik menuponton vagyunk }
        c:char;
    begin
     clrscr;
     k:=1;
     { kiirja a menut }
     textbackground(red);
     textcolor(white);
     gotoxy(10,10);
     write(' Elso ');
     textbackground(blue);
     textcolor(yellow);
     gotoxy(10,11);
     write(' Masodik ');
     gotoxy(10,12);
     write(' Harmadik ');
     { a kurzort beallitjuk a jobb also sarokba }
     gotoxy(80,25);
     { beolvas egy billentyut es a menut ettol fuggoen atrajzolja }
     repeat
      c:=readkey;
      { ha valamelyik nyil lett megnyomva }
      if c=#0 then begin
                   { atfestjuk a kivalasztottat kekre }
                   textbackground(blue);
                   textcolor(yellow);
                   gotoxy(10,9+k);
                   case k of
                    1: write(' Elso ');
                    2: write(' Masodik ');
                    3: write(' Harmadik ');
                   end;
                   { megnezzuk melyik billentyut nyomta meg a felhasznalo
                    es ettol fuggoen megvaltoztatjuk a k erteket }
                   c:=readkey;
                   case c of
                    #72: if k>1 then dec(k); { #72 = felfele nyil }
                    #80: if k<3 then inc(k); { #80 = lefele nyil }
                   end;
                   { atfestjuk az uj kivalasztottat pirosra }
                   textbackground(red);
                   textcolor(white);
                   gotoxy(10,9+k);
                   case k of
                    1: write(' Elso ');
                    2: write(' Masodik ');
                    3: write(' Harmadik ');
                   end;
                   { a kurzort beallitjuk a jobb also sarokba }
                   gotoxy(80,25);
                   end;
      { ha #13 = Enter lett megnyomva }
      if c=#13 then begin
                    gotoxy(10,15);
                    textbackground(0);
                    textcolor(7);
                    writeln('Kivalaszottad a(z) ',k,'. menupontot!');
                    gotoxy(80,25);
                    end;
     until c=#27;
    end.

http://www.prog.ide.sk/pas2.php?s=34

Share this post


Link to post
Share on other sites

Nagyszerű, köszönöm szépen, nagyon sokat segítettél ezzel! :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Bejelentkezés

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×