5 LINIIZgodnie z zapowiedzią z pierwszego numeru Tajemnic rozpoczynamy drukowanie najciekawszych spośród nadesłanych do nas programików mających nie więcej, niż pięć linii i jednocześnie przypominamy, że konkurs trwa nadal, a autorzy zamieszczanych programów otrzymują dodatkową nagrodę w postaci honorarium autorskiego w wysokości 100.000 zł. Listingi programów wraz z opisem prosimy przesyłać na adres redakcji. Trzy bardzo ciekawe "pięciolinijkowce" otrzymaliśmy od Jerzego Siwickiego z Koszalina. W tym numerze zamieszczamy dwa spośród nich. Pierwszy zatytułowany "Spowalniacz" powoduje zwolnienie pracy komputera uzyskane dzięki pętli opóźniającej wykonywanej. przez przerwanie synchronizacji pionowej (VBI). |
1 RESTORE :FOR I=1700 TO 1709:READ A:P OKE I,A:NEXT I 2 DATA 104,160,0,162,6,169,7,76,92,228 3 FOR I=0 TO 18:READ A:POKE 1536+I,A:N EXT I 4 DATA 142,0,64,140,1,64,162,238,160,0 ,200,208,253,232,208,248,76,98,228 5 POKE 206,50:A=USR(1700):POKE 54286,6 4 |
Linie 1-2 wprowadzają kod maszynowy potrzebny do uruchomienia przerwania. Linie 3-4 wprowadzają kod maszynowy programu przerwania. Linia 5 uruchamia przerwanie. Drugi program to prosta gra zręcznościowa "Zbieracz". Wymaga ona użycia joysticka włączonego do portu 1. Celem gry jest zebranie wszystkich X-ów z planszy. Uwaga! Ze względu na to, że linie programu są długie, przedstawiamy dwa listingi. Pierwszy jest oryginalnym nadesłanym przez Pana Siwickiego, lecz z powodu długich linii trudno jest go przepisać (wiersz 4 daje się przepisać tylko pod warunkiem używania skrótów komend i wcześniejszego wykonania komendy POKE 82,0), natomiast drugi jest minimalnie zmienioną wersją oryginału, tak by dała się ona bez problemu wpisać do komputera. |
1 POKE 82,0:GRAPHICS 0:POKE 752,2:FOR I=0 TO 19:? " ....................":NE XT I:A=0:LX=1:LY=1:P=0:T=0 2 X=INT(RND(0)*20)+1:Y=INT(RND(0)*20)+ 1:LOCATE X,Y,C:IF C=46 THEN POSITION X ,Y:? "x":A=A+1:SOUND 0,A*10,10,10-A 3 ON A<10 GOTO 2:X=1:Y=1:IF P=10 THEN POSITION 25,5:? "GRATULACJE!":POSITION 25,7:? "CZAS:";T:POSITION 0,21:END 4 S=STICK(0):X=X+(S=7)-(S=11):X=X+(X<1 )-(X>20):Y=Y+(S=13)-(S=14):Y=Y+(Y<0)-( Y>19):LOCATE X,Y,C:IF C=120 THEN P=P+1 :? CHR$(253) 5 POSITION X,Y:? "O":T=T+1:POSITION 30 ,5:? 10-P;" ":POSITION LX,LY:? ".":LX= X:LY=Y:ON P=10 GOTO 3:GOTO 4 |
|
1 POKE 82,0:GRAPHICS 0:POKE 752,2:FOR I=0 TO 19:? " ....................":NE XT I:A=0:LX=1:LY=1:P=0:T=0 2 X=INT(RND(0)*20)+1:Y=INT(RND(0)*20)+ 1:LOCATE X,Y,C:IF C=46 THEN POSITION X ,Y:? "x":A=A+1:SOUND 0,A*10,10,10-A 3 ON A<10 GOTO 2:X=1:Y=1:IF P=10 THEN POSITION 25,5:? "GRATULACJE!":POSITION 25,7:? "CZAS:";T:POSITION 0,21:END 4 S=STICK(0):X=X+(S=7)-(S=11):X=X+(X<1 )-(X>20):Y=Y+(S=13)-(S=14):Y=Y+(Y<0)-( Y>19) 5 LOCATE X,Y,C:IF C=120 THEN P=P+1:? C HR$(253) 6 POSITION X,Y:? "O":T=T+1:POSITION 30 ,5:? 10-P;" ":POSITION LX,LY:? ".":LX= X:LY=Y:ON P=10 GOTO 3:GOTO 4 |
Opis stosuje się do oryginału. Linia 1 tworzy pole gry i ustawia zmienne: A (ilość narysowanych X-ów). LX, LY (ostatnia pozycja zbieracza), P (ilość zebranych X-ów) i T (czas). Linia 2 rysuje 10 X-ów w przypadkowych miejscach pola gry. Linia 3 zawiera warunek powodujący, iż w chwili, gdy ilość zebranych X-ów wyniesie 10, na ekranie pojawią się: napis GRATULACJE i liczba określająca czas jaki upłynął od początku danej gry. Linia 4 mieści obsługę joysticka oraz zwiększa zmienną P w momencie "zebrania" X-a (jednocześnie z głośnika wydobywa się dźwięk jak przy naciśnięciu klawiszy CONTROL i 2). Linia 5 powoduje rysowanie kursora, zwiększanie czasu, wyświetlanie ilości zebranych X-ów, a w momencie zebrania wszystkich przejście do wiersza 3. Kolejny program, to "Znaki" autorstwa Adriana Ziętkiewicza z Poznania. Program po uruchomieniu zmienia generator znaków powodując, że wypisywane są one kursywą. |
1 POKE 106,156:GRAPHICS 0:FOR A=1536 T O 1663:READ B:POKE A,B:NEXT A:POKE 756 ,156:X=USR(1536) 2 DATA 104,160,4,162,0,189,0,224,74,15 7,0,156,189,1,224,74,157,1,156,189,2,2 24,74,157,2,156,189,3,224,157 3 DATA 3,156,189,4,224,157,4,156,189,5 ,224,24,42,157,5,156,189,6,224,24,42,1 57,6,156,189,7,224,24,42,157,7 4 DATA 156,138,24,105,8,170,224,0,208, 190,136,192,0,208,1,96,238,7,6,238,11, 6,238,14,6,238,18,6,238,21,6,238 5 DATA 25,6,238,28,6,238,31,6,238,34,6 ,238,37,6,238,40,6,238,45,6,238,48,6,2 38,53,6,238,56,6,238,61,6,76,3,6 |