GRY-Online.pl --> Archiwum Forum

Turbo Pascal - jak oznaczyc kursor?

17.05.2009
13:50
[1]

Ogon. [ półtoraken fechten ]

Turbo Pascal - jak oznaczyc kursor?

Pisze programik i musze zrobic cos w stylu 'jesli wcisniety klawisz to kursor w prawo to przejdz do dalszej czesci programu'.
If znak= ... than cośtam;
Co wstawic w miejsce kropek?

17.05.2009
13:53
[2]

Didier z Rivii [ life 4 sound ]

Funkcja ReadKey

Składnia: znak:=ReadKey;

Jest to funkcja, która znajduje się w bibliotece CRT i zwraca znak odczytany z klawiatury ( nie cały ciąg znaków STRING a tylko jeden typu CHAR ). np.

USES CRT;

Var
znak:char;

Begin
WriteLn( 'Wcisnij jakis klawisz...');
znak:=ReadKey;
WriteLn( 'Wcisniety zostal klawisz: ',znak );
End.


Program czeka na wciśnięcie jakiegokolwiek klawisza i wyświetla go ( oczywiście nie mowię tu o klawiszach SHIFT, ALT czy CRTL bo one działają tylko w połączeniu z innymi znakami :)



-----------------

przetestuj takim programem i będziesz wiedział :)

17.05.2009
13:54
[3]

M'q [ Schattenjäger ]

KeyPressed (funkcja) - unit Crt i WinCrt

Sprawdza czy został naciśnięty jakiś klawisz.

Deklaracja:
KeyPressed: Boolean

Uwagi:
To jaki klawisz został naciśnięty można sprawdzić przy użyciu funkcji ReadKey.

Zwracana wartość:
TRUE (prawda) jeśli klawisz został naciśnięty, FALSE (fałsz) jeśli nie.

17.05.2009
14:02
[4]

Ogon. [ półtoraken fechten ]

okok, ale ja bym chciał żeby to był konkretnie znak "kursor w prawo"... a te programy (które sam znalazłem w necie) nie piszą jak to zrobić.


edit: chyba zostane przy zwyklym readln; i bede wciskal enter.

17.05.2009
14:18
[5]

Didier z Rivii [ life 4 sound ]

jednak to co wkleilem nie wyświetla kodów klawiszy innych niz znakowe ale wejdz w linka z mojego postu i tam w sekcji "Obsługa Klawiszy Rozszerzonych" masz przyklad jak zrobic obsluge kursorów

17.05.2009
14:46
[6]

Ogon. [ półtoraken fechten ]

dzięki :)

Ok, to jeszcze jedno pytanie - jak zapętlić komendę case of?
Tzn np mam

writeln('Wybierz 1 aby cośtam, wybierz 2 aby cośtam i wybierz 3 aby zakończyć program');
case liczba of
1: ...
2: ...
3: zakończ program
else ...


I chciałbym aby po wybraniu 1 lub 2 i wykonaniu zawartych tam instrukcji
program powracał do początku writeln.

Myślałem żeby wstawić przed writeln REPEAT
i na koncu until liczba=3;
ale nie działa ;/

17.05.2009
14:50
[7]

Didier z Rivii [ life 4 sound ]

repeat
...
until liczba = 3;

działa w taki sposób, ze będzie to powtarzal jesli będzie spełniony warunek, czyli pętla zajdzie tylko wtedy gdy w momencie testowania warunku zmienna liczba będzie równa 3, wiec troche na odwrót ;)

jak chcesz zrobic skutecznie chociaz niezbyt elegancko to zrob:

repeat
...
until true

a w case gdzie masz zakonczenie programu wymuś koniec jakims tam exitem czy jak to sie robi w pascalu

17.05.2009
14:57
[8]

qaq [ Kaka Demona ]

Jsli chodzi o kursor:
zrob tak - napisz program ktory ma ci wypisywac liczby oznaczające poszczególne znaki - np.

program kursor;

uses crt;
var znak:char;

begin
repeat
if keypressed then
begin
znak:=readkey;
writeln (ord(znak));
end;
until znak='a';
readln;
end.

ten ord ktory zastosowalem wypisuje ci wartość liczbową każdego znaku. sam program wypisuje ci symol liczbowy kazdego znaku, dopoki nie nacisniesz litery 'a'.

75 - w lewo
77 - w prawo
72 - gore
80 - w dol

natomiast chr zamienia ci wartosc liczbowa na znak (przeciwienstwo ord):
a wiec jesli chodzi o przyklad z [1] to bedzie tak
If znak= chr(77) than cośtam;

a tak przy okazji - co piszesz?

17.05.2009
15:11
[9]

Likfidator [ Konsul ]

program test;
uses crt;

var ch: char;
begin
clrscr;
ch:=readkey;
WriteLn('Nacisnij kursor w prawo');
while(ch<>#27) do
begin
ch:=readkey;
if(ch=#0) then
begin
ch:=readkey;
if (ch='M') then WriteLn('Zrobiles to!');
end;
end;
end.

Proszę bardzo:)
Mała uwaga, klawisze kursora mają podwójne kody ascii, kursor 'w prawo' ma ten sam kod co literka 'M', ale jest poprzedzony znakiem zera. Mówiąc wprost, czytamy znaki z klawiatury i jeśli odczytamy 0 to znaczy, że jest to klawisz specjalny i odczytując kolejny znak możemy się dowiedzieć, który to klawisz.

17.05.2009
22:29
smile
[10]

Ogon. [ półtoraken fechten ]

qaq -> miałem zrobić program który można wykorzystać w matematyce i który używa modułu graficznego.
No więc program w case of ma dwie opcje do wyboru:
1: wybierz "1" jesli chcesz liczyć wyznacznik macierz 3x3
2: wybierz "2" jesli chcesz ratować świat.

No i w opcji drugiej wykonujemy samobójczą misję w celu zabicia kosmicznego budyniu z planety Skyron z galaktyki Andromedy. Planowałem włączyć tutaj jeszcze muzyczkę z pc spekeara z mission impossible, ale chyba zostanie mi odpalenie pliku wav, bo komponować to ja za cholerę nie umiem ;)


...mam nadzieję, że się wybije z tłumu robiących zadanie liczące pole kwadratu z kolorowymi literkami ;)

© 2000-2024 GRY-OnLine S.A.