home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-08-10 | 7.2 KB | 203 lines |
- 10 ' B E A R A B C . B A S 8/10/86 11:10 pm
- 20 '
- 30 ' BEARY FUN ABC'S will help associate each picture with the
- 40 ' letter and the keyboard key. It displays the picture then
- 50 ' waits for the entry of the proper key. If the key isn't
- 60 ' pressed in 3 seconds, the letter will also be displayed on
- 70 ' the screen. Each time the right key is pressed, a bear
- 80 ' is placed on the screen.
- 90 '
- 100 ' Modified for IBM-PC screen 1
- 110 '
- 120 ' Initialize all variables and arrays.
- 130 '
- 140 SCREEN 1 : COLOR 0,0 : CLS
- 150 LOCATE 6,1 : PRINT "Beary";
- 160 LOCATE 7,2 : PRINT "Fun"; : LOCATE 12,1 : PRINT "Letters";
- 170 LOCATE 24,1 : PRINT " copyright 1985, Computing Specialties";
- 180 '
- 190 '
- 200 ' Poke subroutine ALOAD into memory.
- 210 '
- 220 DEF SEG : ALOAD= 48000
- 230 FOR IB=0 TO 95 : READ BYTE : POKE ALOAD+IB,BYTE : NEXT IB
- 240 DATA &H55, &H8B, &HEC, &H8B, &H5E, &H0A, &H8A, &H0F, &HB5, &H00, &H8B, &H77
- 250 DATA &H01, &H8B, &H5E, &H08, &H8B, &H07, &H8E, &HC0, &HBF, &H00, &H00, &HA4
- 260 DATA &HE2, &HFD, &HB0, &H00, &HAA, &H1E, &H06, &H1F, &H07, &HB0, &H00, &HB4
- 270 DATA &H3D, &HBA, &H00, &H00, &HCD, &H21, &H72, &H24, &H8B, &HD8, &HB9, &H07
- 280 DATA &H00, &HBA, &H00, &H00, &HB4, &H3F, &HCD, &H21, &H3B, &HC1, &H74, &H05
- 290 DATA &HB8, &H0D, &H00, &H75, &H0F, &HBE, &H05, &H00, &H8B, &H0C, &HB4, &H3F
- 300 DATA &HBA, &H00, &H00, &HCD, &H21, &HB8, &H00, &H00, &H8B, &H7E, &H06, &H26
- 310 DATA &H89, &H05, &HB4, &H3E, &HCD, &H21, &H06, &H1F, &H5D, &HCA, &H06, &H00
- 320 '
- 330 ' Load the title picture onto the screen.
- 340 '
- 350 SEG2%=&HB800 : BERR%=0 : FILE$="BEARABC1.PIC" : CALL ALOAD(FILE$,SEG2%,BERR%)
- 360 UP$=CHR$(0)+CHR$(72) : DN$=CHR$(0)+CHR$(80)
- 370 LT$=CHR$(0)+CHR$(75) : RT$=CHR$(0)+CHR$(77)
- 380 DIM A(150),B(150),C(150),D(150),E(150),F(150),G(150),H(150),I(150),J(150)
- 390 DIM K(150),L(150),M(150),N(150),O(150),P(150),Q(150),R(150),S(150),T(150)
- 400 DIM U(150),V(150),W(150),X(150),Y(150),Z(150),BEAR(150)
- 410 DIM XTL(28),YTL(28),XBR(28),YBR(28),LETTER(30),ALPHA(4)
- 420 DIM N$(40),T$(14)
- 430 FOR I=1 TO 7
- 440 XTL(I)=23+I*32 : XBR(I)=58+I*32 : YTL(I)=10 : YBR(I)=39
- 450 XTL(I+7)=23+I*32 : XBR(I+7)=58+I*32 : YTL(I+7)=50 : YBR(I+7)=79
- 460 XTL(I+14)=23+I*32 : XBR(I+14)=58+I*32 : YTL(I+14)=90 : YBR(I+14)=119
- 470 XTL(I+21)=20+I*35 : XBR(I+21)=55+I*35 : YTL(I+21)=140 : YBR(I+21)=169
- 480 NEXT I
- 490 XTL(6)=218 : XBR(22)=89 : XBR(19)=217 : XTL(21)=250 : XBR(26)=232
- 500 RANDOMIZE TIMER
- 510 '
- 520 ' Sort the letters into random order for a new game.
- 530 '
- 540 FOR I=1 TO 26 : LETTER(I)=I : NEXT I
- 550 LETTER(27)=INT(RND*26)+1 : LETTER(28)=INT(RND*26)+1
- 560 FOR I=1 TO 100
- 570 J=INT(RND*26)+1 : K=INT(RND*26)+1
- 580 T=LETTER(J) : LETTER(J)=LETTER(K) : LETTER(K)=T
- 590 NEXT I
- 600 '
- 610 ' Load the pictures and store each one in an array.
- 620 '
- 630 FOR I=1 TO 7
- 640 ON I GOTO 650,700,750,800,850,900,940
- 650 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),A
- 660 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),H
- 670 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),O
- 680 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),V
- 690 GOTO 970
- 700 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),B
- 710 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),I
- 720 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),P
- 730 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),W
- 740 GOTO 970
- 750 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),C
- 760 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),J
- 770 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),Q
- 780 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),X
- 790 GOTO 970
- 800 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),D
- 810 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),K
- 820 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),R
- 830 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),Y
- 840 GOTO 970
- 850 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),E
- 860 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),L
- 870 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),S
- 880 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),Z
- 890 GOTO 970
- 900 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),F
- 910 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),M
- 920 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),T
- 930 GOTO 970
- 940 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),G
- 950 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),N
- 960 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),U
- 970 NEXT I
- 980 GET (10,59)-(32,84),BEAR
- 990 '
- 1000 ' Prepare for a new game.
- 1010 '
- 1020 CLS
- 1030 N=0 : NB=0
- 1040 LINE (0,0)-(319,199),2,B
- 1050 LINE (30,30)-(289,169),2,B
- 1060 LINE (31,31)-(288,168),0,BF
- 1070 '
- 1080 ' Pick the next letter and display the picture on the screen.
- 1090 '
- 1100 N=N+1 : K=LETTER(N) : X=150 : Y=90 : GOSUB 1750
- 1110 U$=CHR$(K-1+ASC("A")) : L$=CHR$(K-1+ASC("a"))
- 1120 WT=0
- 1130 '
- 1140 ' Wait until the proper key is pressed.
- 1150 ' If WT gets to 150, display the letters on the screen.
- 1160 R$=INKEY$
- 1170 WT=WT+1 : IF WT=150 THEN LOCATE 10,19 : PRINT U$;" ";L$ : WT=0
- 1180 IF R$=CHR$(27) THEN RUN"MENU
- 1190 IF R$<>L$ AND R$<>U$ THEN 1160
- 1200 '
- 1210 ' The correct key was pressed, put a bear face on the border.
- 1220 '
- 1230 NB=NB+1
- 1240 XB=(NB-1)*32+3 : YB=3
- 1250 IF NB>10 THEN XB=292 : YB=(NB-10)*35+3
- 1260 IF NB>14 THEN XB=3 : YB=(NB-14)*35+3
- 1270 IF NB>18 THEN YB=173 : XB=(NB-19)*32+3
- 1280 PUT (XB,YB),BEAR,PSET
- 1290 SOUND 115+NB*5,1 : SOUND 350+NB*5,1 : SOUND 756+NB*5,1 : SOUND 1036+NB*5,1 : SOUND 1435+NB*5,1
- 1300 IF NB<28 THEN GOTO 1060
- 1310 '
- 1320 ' The border is filled with bears, congratulate the kid.
- 1330 '
- 1340 LOCATE 10,16:PRINT "YAY ";N$;"!"
- 1350 SOUND 115+NB*5,1:SOUND 350+NB*5,1:SOUND 756+NB*5,1:SOUND 1036+NB*5,1:SOUND 1435+NB*5,1
- 1360 LOCATE 16,16:PRINT "YOU DID IT!"
- 1370 FOR T=1 TO 10 : SOUND 1435,1 : SOUND 1100,1 : NEXT T
- 1380 FOR I=1 TO 3000 : NEXT I
- 1390 R$=INKEY$ : IF R$<>"" THEN 1390
- 1400 '
- 1410 ' End the game by playing the alphabet song.
- 1420 '
- 1430 CLS
- 1440 LINE (0,0)-(319,199),2,B : LINE (0,35)-(319,35),2
- 1450 DATA C4,C4,E4,E4,G4,G4,E2,F4,F4,E4,E4,D8,D8,D8,D8,C2
- 1460 DATA C4,C4,E2,G4,G4,E2,F8F8F4,E2,D4D4,C2
- 1470 DATA C4,NOW,C4,I'VE,E4,SAID,E4,MY,G4,A,G4,B,E2,C'S.
- 1480 DATA F4,WILL,F4,YOU,E4,COME,E4,AND,D4,PLAY,D4,WITH,C2,ME?
- 1490 IF N$(1)<>"" THEN GOTO 1520
- 1500 FOR K=1 TO 26 : READ N$(K) : NEXT K
- 1510 FOR K=27 TO 40 : READ N$(K),T$(K-26) : NEXT K
- 1520 FOR K=1 TO 26
- 1530 Y=INT(K/7)*40+50: X=(K MOD 7)*40+20
- 1540 GOSUB 1750
- 1550 IF K>20 THEN LINE (0,199)-(319,199),2
- 1560 R=INT(K/7)*5+6 : C=(K MOD 7)*5+4 : LOCATE R,C
- 1570 PRINT CHR$(ASC("A")+K-1);" ";CHR$(ASC("a")+K-1);
- 1580 PLAY "MFO3"+N$(K)
- 1590 NEXT K
- 1600 LINE (0,199)-(319,199),2
- 1610 LINE (1,1)-(318,34),0,BF
- 1620 FOR N=2 TO 3
- 1630 LOCATE N,5
- 1640 FOR K=1 TO 7
- 1650 NK=K+(N-2)*7
- 1660 PRINT T$(NK);" "; : PLAY "MFO3"+N$(NK+26)
- 1670 NEXT K
- 1680 NEXT N
- 1690 LINE (1,1)-(318,34),0,BF
- 1700 LOCATE 3,5
- 1710 FOR I=1 TO 3000 : NEXT I
- 1720 GOTO 1020
- 1730 REM ---------- SUBROUTINE PLOT PICTURE AT (X,Y) FOR LETTER NUMBER K ----------
- 1740 '
- 1750 IF K<13 THEN ON K GOTO 1770,1780,1790,1800,1810,1820,1830,1840,1850,1860,1870,1880
- 1760 ON K-12 GOTO 1890,1900,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010,2020
- 1770 PUT (X,Y),A,PSET : RETURN
- 1780 PUT (X,Y),B,PSET : RETURN
- 1790 PUT (X,Y),C,PSET : RETURN
- 1800 PUT (X,Y),D,PSET : RETURN
- 1810 PUT (X,Y),E,PSET : RETURN
- 1820 PUT (X,Y),F,PSET : RETURN
- 1830 PUT (X,Y),G,PSET : RETURN
- 1840 PUT (X,Y),H,PSET : RETURN
- 1850 PUT (X,Y),I,PSET : RETURN
- 1860 PUT (X,Y),J,PSET : RETURN
- 1870 PUT (X,Y),K,PSET : RETURN
- 1880 PUT (X,Y),L,PSET : RETURN
- 1890 PUT (X,Y),M,PSET : RETURN
- 1900 PUT (X,Y),N,PSET : RETURN
- 1910 PUT (X,Y),O,PSET : RETURN
- 1920 PUT (X,Y),P,PSET : RETURN
- 1930 PUT (X,Y),Q,PSET : RETURN
- 1940 PUT (X,Y),R,PSET : RETURN
- 1950 PUT (X,Y),S,PSET : RETURN
- 1960 PUT (X,Y),T,PSET : RETURN
- 1970 PUT (X,Y),U,PSET : RETURN
- 1980 PUT (X,Y),V,PSET : RETURN
- 1990 PUT (X,Y),W,PSET : RETURN
- 2000 PUT (X,Y),X,PSET : RETURN
- 2010 PUT (X,Y),Y,PSET : RETURN
- 2020 PUT (X,Y),Z,PSET : RETURN
-