Commodore BASIC. INPUT bez wciskania RETURN. Jak zrobić

Szukasz drobnej pomocy przy kodowaniu, albo chcesz przedstawić światu swoją gotową lub w trakcie realizacji produkcję? To właściwy dział.
Wiadomość
Autor
BigZ25
Posty: 58
Rejestracja: 22 sie 2014, 19:44

Commodore BASIC. INPUT bez wciskania RETURN. Jak zrobić

#1 Post autor: BigZ25 »


Witam
Wie ktoś jak zrobić instrukcje INPUT bez wciskania RETURN (czyli tak jak getch w C++ :D )?

Beda
Posty: 25
Rejestracja: 21 gru 2012, 04:41

#2 Post autor: Beda »

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 :)

BigZ25
Posty: 58
Rejestracja: 22 sie 2014, 19:44

#3 Post autor: BigZ25 »

Coś to nie bardzo mi działa :D
ma ktoś jakieś inne pomysły???

Beda
Posty: 25
Rejestracja: 21 gru 2012, 04:41

#4 Post autor: Beda »

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

Beda
Posty: 25
Rejestracja: 21 gru 2012, 04:41

#5 Post autor: Beda »

Się emotikony wepchały, więc dam poprawione dwie linijki:
100 ? : ?"KONIEC"
300 ?"TO JUZ NA SERIO KONIEC"

BigZ25
Posty: 58
Rejestracja: 22 sie 2014, 19:44

#6 Post autor: BigZ25 »

100 krotne dzięki @Beda.
Już wszystko obczaiłem i wiem jak to się robi :)

Beda
Posty: 25
Rejestracja: 21 gru 2012, 04:41

#7 Post autor: Beda »

Uff :P

ODPOWIEDZ