![]() |
Wyjście Spis treści Poprzedni Następny
Tłumaczył z angielskiego: mgr Jerzy Wałaszek, wersja 1.0 |
©2012 mgr Jerzy Wałaszek
|
Pierwszy z nich żąda podania daty, a następnie wyliczy dzień tygodnia odpowiadający tej dacie.
10 REM zamiana daty na dzien tygodnia
20 DIM d$(7,6): REM dni tygodnia
30 FOR n=1 TO 7: READ d$(n): NEXT n
40 DIM m(12): REM dlugosci miesiecy
50 FOR n=1 TO 12: READ m(n): NEXT n
100 REM odczyt daty
110 INPUT "dzien?";day
120 INPUT "miesiac?";month
130 INPUT "rok (tylko 20 wiek)?";year
140 IF year<1901 THEN PRINT "20-ty wiek rozpoczyna sie od 1901": GO
TO 100
150 IF year>2000 THEN PRINT "20-ty wiek konczy sie na 2000": GO TO
100
160 IF month<1 THEN GO TO 210
170 IF month>12 THEN GO TO 210
180 IF year/4-INT(year/4)=0 THEN LET m(2)=29: REM rok przestepny
190 IF day>m(month) THEN PRINT "Ten miesiac ma tylko "; m(month);"
dni.": GO TO 500
200 IF day>0 THEN GO TO 300
210 PRINT "To bzdury. Wpisz date."
220 GO TO 500
300 REM zamienia date na liczbe dni od poczatku stulecia
310 LET y=year-1901
320 LET b=365*y+INT (y/4): REM liczba dni do poczatku roku
330 FOR n=1 TO month 1: REM dodajwaj poprzednie miesiace
340 LET b=b+m(n): NEXT n
350 LET b=b+day
400 REM zamienia na dzien tygodnia
410 LET b=b-7*INT (b/7)+1
420 PRINT day;"-";month;"-";year
430 FOR n=6 TO 3 STEP -1: REM usuwa koncowe spacje
440 IF d$(b,n) <> " " THEN GO TO 460
450 NEXT n
460 LET e$=d$(b, TO n)
470 PRINT" bylo w "; e$;"."
500 LET m(2)=28: REM przywroc luty
510 INPUT "jeszcze raz?", a$
520 IF a$="n" THEN GO TO 540
530 IF a$ <> "N" THEN GO TO 100
1000 REM dni tygodnia
1010 DATA "Pon", "Wto", "Sro"
1020 DATA "Czw", "Pia", "Sob", "Nie"
1100 REM dlugosci miesiecy
1110 DATA 31, 28, 31, 30, 31, 30
1120 DATA 31, 31, 30, 31, 30, 31
Ten program obsługuje jardy, stopy i cale.
10 INPUT "jardy?",yd,"stopy?",ft, "cale?",in
40 GO SUB 2000: REM wypisz wartosci
50 PRINT '" = ";
70 GO SUB 1000: REM przeliczanie
80 GO SUB 2000: REM wypisz wartosci przeliczone
90 PRINT
100 GOTO 10
1000 REM podprogram do przeliczania yd, ft, in na normalna postac dla jardow,
stop i cali
1010 LET in=36*yd+12*ft+in: REM teraz wszystko jest w calach
1030 LET s=SGN in: LET in=ABS in: REM pracujemy z wartoscia dodatnia,
przechowujac znak w s
1060 LET ft=INT (in/12): LET in=(in-12*ft)*s: REM teraz in jest dobrze
1080 LET yd=INT (ft/3)*s: LET ft=ft*s-3*yd: RETURN
2000 REM podprogram wypisujace yd, ft i in
2010 PRINT yd;"yd";ft;"ft";in;"in";: RETURN
Oto program do tworzenia heksagramów w I Ching (chińska Księga Przemian). (Niestety, tworzy on wynik do góry nogami, lecz możesz się tym nie przejmować.)
5 RANDOMIZE
10 FOR m=1 TO 6: REM dla 6 rzutow
20 LET c=0: REM inicjujemy monete na 0
30 FOR n=1 TO 3: REM dla 3 monet
40 LET c=c+2+INT (2*RND)
50 NEXT n 60: PRINT " ";
70 FOR n=1 TO 2
80 PRINT "_ _ _";
90 IF c=7 THEN PRINT " ";
100 IF c=8 THEN PRINT " ";
110 IF c=6 THEN PRINT "X";: LET c=7
120 IF c=9 THEN PRINT "0";: LET c=8
130 PRINT "_ _ _ ";
140 NEXT n
150 PRINT
160 INPUT a$
170 NEXT m: NEW
By z tego skorzystać, wpisz program i uruchom go, a następnie naciśnij ENTER pięć razy, aby otrzymać dwa heksagramy. Wyszukaj je w chińskiej Księdze Przemian. Tekst wyjaśni sytuację oraz odpowiednie toki działań dla niej, a ty musisz się głęboko zastanowić, aby odkryć związek pomiędzy tą wróżbą a swoim życiem. Naciśnij ENTER szósty raz, a program wymaże się, abyś się tym lekkomyślnie nie bawił.
Wielu ludzi stwierdzi, że te teksty są zawsze bardziej odpowiednie, niż można by się było spodziewać po zwykłym przypadku; może tak również być z komputerem ZX Spectrum, chociaż ogólnie komputery są raczej bezdusznymi stworzeniami.
Oto program w odgadywanie zwierząt. Wymyślasz sobie jakieś zwierzę, a komputer stara się odgadnąć, co to jest, zadając ci pytania, na które odpowiedzią może być tylko "yes" lub "no". Jeśli o jakimś zwierzęciu jeszcze nie słyszał, to prosi cię, abyś podał mu pytanie, które będzie mógł wykorzystać przy następnej grze, aby zgadnąć to zwierzę. (Programu nie tłumaczę, pozostanie w wersji oryginalnej).
5 REM Pangolins
10 LET nq=100: REM number of questions and animals
15 DIM q$(nq,50): DIM a(nq,2): DIM r$(1)
20 LET qf=8
30 FOR n=1 TO qf/2 1
40 READ q$(n): READ a(n,1): READ a(n,2)
50 NEXT n
60 FOR n=n TO qf-1
70 READ q$(n): NEXT n
100 REM start playing
110 PRINT "Think of an animal.","Press any key to continue."
120 PAUSE 0
130 LET c=1: REM start with 1st question
140 IF a(c,1)=0 THEN GO TO 300
150 LET p$=q$(c): GO SUB 910
160 PRINT "?": GO SUB 1000
170 LET in=1: IF r$="y" THEN GO TO 210
180 IF r$="Y" THEN GO TO 210
190 LET in=2: IF r$="n" THEN GO TO 210
200 IF r$<>"N" THEN GO TO 150
210 LET c=a(c,in): GO TO 140
300 REM animal
310 PRINT "Are you thinking of"
320 LET P$=q$(c): GO SUB 900: PRINT "?"
330 GO SUB 1000
340 IF r$="y" THEN GO TO 400
350 IF r$="Y" THEN GO TO 400
360 IF r$="n" THEN GO TO 500
370 IF r$="N" THEN GO TO 500
380 PRINT "Answer me properly when I'm","talking to you.": GO TO 300
400 REM guessed it
410 PRINT "I thought as much.": GO TO 800
500 REM new animal
510 IF qf>nq-1 THEN PRINT "I'm sure your animal is very", "interesting,
but I don't have","room for it just now.": GO TO 800
520 LET q$(qf)=q$(c): REM move old animal
530 PRINT "What is it, then?": INPUT q$(qf+1)
540 PRINT "Tell me a question which dist ","inguishes between "
550 LET p$=q$(qf): GO SUB 900: PRINT " and"
560 LET p$=q$(qf+1): GO SUB 900: PRINT " "
570 INPUT s$: LET b=LEN s$
580 IF s$(b)="?" THEN LET b=b-1
590 LET q$(c)=s$(TO b): REM insert question
600 PRINT "What is the answer for"
610 LET p$=q$(qf+1): GO SUB 900: PRINT "?"
620 GO SUB 1000
630 LET in=1: LET io=2: REM answers for new and old animals
640 IF r$="y" THEN GO T0 700
650 IF r$="Y" THEN GO TO 700
660 LET in=2: LET io=1
670 IF r$="n" THEN GO TO 700
680 IF r$="N" THEN GO TO 700
690 PRINT "That's no good. ": GO TO 600
700 REM update answers
710 LET a(c,in)=qf+1: LET a(c,io)=qf
720 LET qf=qf+2: REM next free animal space
730 PRINT "That fooled me."
800 REM again?
810 PRINT "Do you want another go?": GO SUB 1000
820 IF r$="y" THEN GO TO 100
830 IF r$="Y" THEN GO TO 100
840 STOP
900 REM print without trailing spaces
905 PRINT " ";
910 FOR n=50 TO 1 STEP -1
920 IF p$(n)<>" " THEN GO TO 940
930 NEXT n
940 PRINT p$(TO n);: RETURN
1000 REM get reply
1010 INPUT r$: IF r$="" THEN RETURN
1020 LET r$=r$(1): RETURN
2000 REM initial animals
2010 DATA "Does it live in the sea",4,2
2020 DATA "Is it scaly",3,5
2030 DATA "Does it eat ants",6,7
2040 DATA "a whale", "a blancmange", "a pangolin", "an ant"
Ten program rysuje flagę Wielkiej Brytanii.
5 REM
flaga Wielkiej Brytanii
10 LET r=2: LET w=7: LET b=1
20 BORDER 0: PAPER b: INK w: CLS
30 REM czarne na spodzie ekranu
40 INVERSE 1
50 FOR n=40 TO 0 STEP -8
60.PLOT PAPER 0;7,n: DRAW PAPER 0;241,0
70 NEXT n: INVERSE 0
100 REM wrysuj biale fragmenty Sw. Jerzego
110 FOR n=0 TO 7
120 PLOT 104+n,175: DRAW 0,-35
130 PLOT 151-n,175: DRAW 0,-35
140 PLOT 151-n,48: DRAW 0,35
150 PLOT 104+n,48: DRAW 0,35
160 NEXT n
200 FOR n=0 TO 11
210 PLOT 0,139-n: DRAW 111,0
220 PLOT 255,139-n: DRAW 111,0
230 PLOT 255,84+n: DRAW -111,0
240 PLOT 0,84+n: DRAW 111,0
250 NEXT n
300 REM Sw. Andrzej
310 FOR n=0 TO 35
320 PLOT 1+2*n,175-n: DRAW 32,0
330 PLOT 224-2*n,175-n: DRAW 16,0
340 PLOT 254-2*n,48+n: DRAW-32,0
350 PLOT 17+2*n,48+n: DRAW 16,0
360 NEXT n
370 FOR n=0 TO 19
380 PLOT 185+2*n,140+n: DRAW 32,0
390 PLOT 200+2*n,83-n: DRAW 16,0
400 PLOT 39-2*n,83-n: DRAW 32,0
410 PLOT 54-2*n,140+n: DRAW -16,0
420 NEXT n
425 REM wypelnij dodatkowe kawalki
430 FOR n=0 TO 15
440 PLOT 255,160+n: DRAW 2*n-30,0
450 PLOT 0,63-n DRAW 31-2*n,0
460 NEXT n
470 FOR n=0 TO 7
480 PLOT 0,160+n: DRAW 14 2*n,0
485 PLOT 255,63-n: DRAW 2*n-15,0
490 NEXT n
500 REM czerwone pasy
510 INVERSE 1
520 REM St George
530 FOR n=96 TO 120 STEP 8
540 PLOT PAPER r;7,n: DRAW PAPER r;241,0
550 NEXT n
560 FOR n=112 TO 136 STEP 8
570 PLOT PAPER r;n,168: DRAW PAPER r;0,-113
580 NEXT n
600 REM Sw. Patryk
610 PLOT PAPER r;170,140: DRAW PAPER r;70,35
620 PLOT PAPER r;179,140: DRAW PAPER r;70,35
630 PLOT PAPER r;199,83: DRAW PAPER r;56,-28
640 PLOT PAPER r;184,83: DRAW PAPER r;70,-35
650 PLOT PAPER r;86,83: DRAW PAPER r;-70,-35
660 PLOT PAPER r;72,83: DRAW PAPER r;-70,-35
670 PLOT PAPER r;56,140: DRAW PAPER r;-56,28
680 PLOT PAPER r;71,140: DRAW PAPER r;-70,35
690 INVERSE 0: PAPER 0: INK 7
Jeśli nie pochodzisz z Wysp Brytyjskich, to narysuj swoją własną flagę — polska jest szczególnie prosta, jeśli pominiemy orła. Flagi trójkolorowe są dosyć łatwe, chociaż niektóre kolory — przykładowo pomarańczowy we fladze irlandzkiej — mogą sprawiać trudność (wykorzystaj wtedy grafikę definiowaną przez użytkownika do utworzenia znaku zbudowanego z szachowniczki punktów, dobierając odpowiednio kolor tła i tuszu, możemy uzyskać przybliżony odcień). Jeśli jesteś Amerykaninem, to być może znajdziesz zastosowanie dla znaku *.
Oto program do gry w szubieniczkę. Jeden gracz wprowadza słowo, a drugi stara się je odgadnąć w skończonej liczbie prób.
5 REM
szubieniczka
10 REM ustawiamy ekran
20 INK 0: PAPER 7: CLS
30 LET x=240: GO SUB 1000: REM narysuj czlowieka
40 PLOT 238,128: DRAW 4,0: REM usta
100 REM ustaw slowo
110 INPUT w$: REM slowo do odgadniecia
120 LET b=LEN w$: LET v$=" "
130 FOR n=2 TO b: LET v$=v$+" "
140 NEXT n: REM v$=slowo dotad odgadniete
150 LET c=0: LET d=0: REM zgaduj i licz pomylki
160 FOR n=0 TO b-1
170 PRINT AT 20,n;" ";
180 NEXT n: REM zamiast liter zapisz spacje
200 INPUT "Odgadnij litere ";g$
210 IF g$="" THEN GO TO 200
220 LET g$=g$(1): REM tylko pierwsza litera sie liczy
230 PRINT AT 0,c;g$
240 LET c=c+1: LET u$=v$
250 FOR n=1 TO bL REM uaktualnij odgadywane slowo
260 IF w$(n)=g$ THEN LET v$(n)=g$
270 NEXT n
280 PRINT AT l9,0;v$
290 IF v$=w$ THEN GO TO 500: REM slowo odgadniete
300 IF v$<>u$ THEN GO TO 200: REM litera byla zla
400 REM narysuj nastepny fragment szubienicy
410 IF d=8 THEN GO TO 600: REM powieszony
420 LET d=d+1
430 READ x0,y0,x,y
440 PLOT x0,y0: DRAW x,y
450 GO TO 200
500 REM wolny czlowiek
520 LET x=240: GO SUB 1000
530 PLOT 238,128: DRAW 4,0: REM usta
540 OVER 0: REM przerysuj czlowieka
550 LET x=146: GO SUB 1000
560 PLOT 143,129: DRAW 6,0, PI/2: REM usmiech
570 GO TO 800
600 REM powies czlowieka
610 OVER 1: REM wymaz podloge
620 PLOT 255,65: DRAW -48,0
630 DRAW 0,-48: REM otworz zapadnie
640 PLOT 238,128: DRAW 4,0: REM wymaz usta
650 REM rusz konczynami
655 REM rece
660 PLOT 255,117: DRAW -15,-15: DRAW -15,15
670 OVER 0
680 PLOT 236,81: DRAW 4,21: DRAW 4, 21
690 OVER 1: REM nogi
700 PLOT 255,66: DRAW -15,15: DRAW -15,-15
710 OVER 0
720 PLOT 236,60: DRAW 4,21: DRAW 4,-21
730 PLOT 237,127: DRAW 6,0,-PI/2: REM zmarszczenie brwi
740 PRINT AT 19,0;w$
800 INPUT "jeszcze? ";a$
810 IF a$="" THEN GO TO 850
820 LET a$=a$(1)
830 IF a$="n" THEN STOP
840 IF a$="N" THEN STOP
850 RESTORE: GO TO 5
1000 REM narysuj czlowieka w kolumnie x
1010 REM glowa
1020 CIRCLE x,132,8
1030 PLOT x+4,134: PLOT x-4,134: PLOT x,131
1040 REM cialo
1050 PLOT x,123: DRAW 0,-20
1055 PLOT x,101: DRAW 0,-19
1060 REM nogi
1070 PLOT x-15,66: DRAW 15,15: DRAW 15,-15
1080 REM rece
1090 PLOT x-15,117: DRAW 15,-15: DRAW 15,15
1100 RETURN
2000 DATA 120,65,135,0,184,65,0,91
2010 DATA 168,65,16,16,184,81,16,-16
2020 DATA 184,156,68,0,184,140,16,16
2030 DATA 204,156,-20,-20,240,156,0,-16
![]() | I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe