Commodore BASIC. INPUT bez wciskania RETURN. Jak zrobić
Commodore BASIC. INPUT bez wciskania RETURN. Jak zrobić
Witam
Wie ktoś jak zrobić instrukcje INPUT bez wciskania RETURN (czyli tak jak getch w C++ :D )?
W BASIC także jest komenda GET.
Za jej pomocą możesz wprowadzać pojedyncze znaki z klawiatury.
Wykorzystując pare trików możesz za pomocą komendy GET wprowadzić nawet jakiś większy wyraz
Pojedyncze znaki:
10 GET A$: IF A$="" THEN 10
wtedy po kliknięciu jakiegoś znaku łańcuch A$ będzie go zawierał.
Chcąc np. zapytać (T)ak lub (N)ie piszesz:
15 IF A$<>"T" OR A$<>"N" THEN 10
Nie pamiętam dokładnie, czy to dobrze napisałem, ale chyba rozjaśniłem chociaż trochę zagadnienie
Za pomocą IF ... THEN i paru innych komend możesz pojedyncze kliknięcia łączyć w większe ciągi i robić z nich wyrazy, a nawet zdania
Za jej pomocą możesz wprowadzać pojedyncze znaki z klawiatury.
Wykorzystując pare trików możesz za pomocą komendy GET wprowadzić nawet jakiś większy wyraz
Pojedyncze znaki:
10 GET A$: IF A$="" THEN 10
wtedy po kliknięciu jakiegoś znaku łańcuch A$ będzie go zawierał.
Chcąc np. zapytać (T)ak lub (N)ie piszesz:
15 IF A$<>"T" OR A$<>"N" THEN 10
Nie pamiętam dokładnie, czy to dobrze napisałem, ale chyba rozjaśniłem chociaż trochę zagadnienie
Za pomocą IF ... THEN i paru innych komend możesz pojedyncze kliknięcia łączyć w większe ciągi i robić z nich wyrazy, a nawet zdania
Chyba nie ma innych możliwości wprowadzania tekstu, jak te dwie instrukcje, czyli INPUT I GET.
Do programowania trzeba mieć trochę "wyobraźni" i kombinować po swojemu, bo inaczej będzie ciężko.
Na początek można korzystać z pomysłów innych, ale trzeba się rozwijać i zasięgać wiedzy z poradników, bo samemu to będzie ciężko...
Dla rozjaśnienia napiszę Ci coś prostego, bo akurat miałem włączonego Commodorka i wiem, że to działa (z dalekiej pamięci nie zawsze da się przypomnieć prawidłowość komend)
No i do takich kombinacji raczej będziesz potrzebował przynajmniej tablicy znaków ASCII, bo można się odnosić do nich, np. w przypadku odczytu naciśnięcia klawisza RETURN, czyli CHR$(13) i porównać go z wprowadzonym kliknięciem klawiatury.
Przykładowo zmieniając linię 30 IF A$=CHR$(13) THEN 100
Tekst będzie wprowadzany do momentu naciśnięcia kropki (chyba, że zmienisz na RETURN), ale można zdefiniować przykładowo na odpowiednią długość, czy co tam komuś się wspomni.
B$ to zmienna wynikowa tego co wpiszesz, a A$ to jednorazowe zapamiętanie klikniętego klawisza.
To oczywiście pokazowo rozbudowałem, bo normalnie dążymy do jak najkrótszego programu, ale może coś to rozjaśni...
Programik:
10 ?"WPROWADZ TEKST":B$=""
20 GET A$:IF A$="" THEN 20
30 IF A$="." THEN 100
40 B$=B$+A$
50 ?A$;
60 GOTO 20
100 ?:?"KONIEC "
110 ?"CZY WYSWIETLIC CALY TEKST ? (T/N)"
120 GET A$:IF A$="" THEN 120
130 IF A$="T" THEN 200
140 IF A$="N" THEN 250
150 GOTO 120
200 ?"TYM WYRAZEM JEST ";B$
210 GOTO 300
250 ?"WIECEJ JUZ NIE ZAPYTAM ";
300 ?"TO JUZ NA SERIO KONIEC "
310 END
Do programowania trzeba mieć trochę "wyobraźni" i kombinować po swojemu, bo inaczej będzie ciężko.
Na początek można korzystać z pomysłów innych, ale trzeba się rozwijać i zasięgać wiedzy z poradników, bo samemu to będzie ciężko...
Dla rozjaśnienia napiszę Ci coś prostego, bo akurat miałem włączonego Commodorka i wiem, że to działa (z dalekiej pamięci nie zawsze da się przypomnieć prawidłowość komend)
No i do takich kombinacji raczej będziesz potrzebował przynajmniej tablicy znaków ASCII, bo można się odnosić do nich, np. w przypadku odczytu naciśnięcia klawisza RETURN, czyli CHR$(13) i porównać go z wprowadzonym kliknięciem klawiatury.
Przykładowo zmieniając linię 30 IF A$=CHR$(13) THEN 100
Tekst będzie wprowadzany do momentu naciśnięcia kropki (chyba, że zmienisz na RETURN), ale można zdefiniować przykładowo na odpowiednią długość, czy co tam komuś się wspomni.
B$ to zmienna wynikowa tego co wpiszesz, a A$ to jednorazowe zapamiętanie klikniętego klawisza.
To oczywiście pokazowo rozbudowałem, bo normalnie dążymy do jak najkrótszego programu, ale może coś to rozjaśni...
Programik:
10 ?"WPROWADZ TEKST":B$=""
20 GET A$:IF A$="" THEN 20
30 IF A$="." THEN 100
40 B$=B$+A$
50 ?A$;
60 GOTO 20
100 ?:?"KONIEC "
110 ?"CZY WYSWIETLIC CALY TEKST ? (T/N)"
120 GET A$:IF A$="" THEN 120
130 IF A$="T" THEN 200
140 IF A$="N" THEN 250
150 GOTO 120
200 ?"TYM WYRAZEM JEST ";B$
210 GOTO 300
250 ?"WIECEJ JUZ NIE ZAPYTAM ";
300 ?"TO JUZ NA SERIO KONIEC "
310 END