Strona 1 z 1

Commodore BASIC. INPUT bez wciskania RETURN. Jak zrobić

: 23 sie 2014, 12:56
autor: BigZ25

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

: 24 sie 2014, 23:40
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 :)

: 02 wrz 2014, 16:14
autor: BigZ25
Coś to nie bardzo mi działa :D
ma ktoś jakieś inne pomysły???

: 07 wrz 2014, 22:11
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

: 08 wrz 2014, 00:02
autor: Beda
Się emotikony wepchały, więc dam poprawione dwie linijki:
100 ? : ?"KONIEC"
300 ?"TO JUZ NA SERIO KONIEC"

: 10 wrz 2014, 17:14
autor: BigZ25
100 krotne dzięki @Beda.
Już wszystko obczaiłem i wiem jak to się robi :)

: 11 wrz 2014, 11:42
autor: Beda
Uff :P