home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1993-06-03 | 4.4 KB | 172 lines |
- 10 DIM A%[22]:REM reserve for code string
- 20 'FILL CODE STRING
- 30 FOR I=0 TO 21:READ A%[I]:NEXT I
- 40 DATA &h8B55, &hB8EC, &h0600, &h07B7, &h768B, &h8A0C, &h8B2C
- 50 DATA &hA76, &hC8A, &h768B, &h8A08, &h8B34, &h676, &h148A
- 60 DATA &hCDFE, &hC9FE, &hCEFE, &hCAFE, &h10CD, &hCA5d, &h8, &h0
- 70 ' R1, C1 is upper row, column
- 80 ' R2, C2 is lower row, column to blank
- 90 DEF SEG=&HB000
- 100 RANDOMIZE CVI(MID$(TIME$,7,2))
- 110 LET N=5
- 120 LET G=10
- 130 GOSUB 1190 'INTRODUCTION DISPLAY
- 140 GOSUB 930
- 150 A=RND
- 160 A=INT(G*A)
- 170 B=RND
- 180 B=INT(G*B)
- 190 FOR K=1 TO N
- 200 IF K=2 THEN GOSUB 390
- 210 LOCATE 1,1:PRINT "Guess #";K;
- 220 LOCATE 2,1:PRINT " "
- 230 LOCATE 2,1:INPUT X,Y
- 240 IF X>9 OR Y>9 THEN PRINT "NUMBERS LESS THEN 10 PLEASE!":GOTO 210
- 250 GOSUB 780
- 260 IF ABS(X-A)+ABS(Y-B)=0 THEN GOTO 410
- 270 'PRINT INFO
- 280 GOSUB 510
- 290 LOCATE 1,1:PRINT
- 300 NEXT K
- 310 LOCATE 18,1:PRINT
- 320 LOCATE 18,1:PRINT "Sorry, that's ";N;" guesses."
- 330 LOCATE 19,1:PRINT "The Pixie is at ";A;",";B
- 340 FOR R=1 TO 1500:NEXT R
- 350 R1%=1:C1%=37:R2%=78:C2%=23:GOSUB 840
- 360 GOSUB 950
- 370 LOCATE 20,1:PRINT "Lets play again. Pixie is hiding."
- 380 GOTO 150
- 390 R1%=18:C1%=1:R2%=20:C2%=36:GOSUB 840
- 400 RETURN
- 410 LOCATE (21-(Y*2)),(43+(4*X)):COLOR 31:PRINT CHR$(2)
- 420 LOCATE 1,1:COLOR 7:PRINT "See, you found him. In ";K;" guesses."
- 430 FOR I=1 TO 25:SOUND RND*1000+37,1:NEXT I
- 440 R1%=2:C1%=1:R2%=3:C2%=36:GOSUB 840
- 450 LOCATE 4,1:INPUT "DO YOU WISH TO PLAY AGAIN ";Q$
- 460 IF LEFT$(Q$,1)="Y" OR LEFT$(Q$,1)="y" THEN 470 ELSE 650
- 470 R1%=1:C1%=37:R2%=78:C2%=23:GOSUB 840
- 480 GOSUB 950
- 490 R1%=1:C2%=1:R2%=4:C2%=36:GOSUB 840
- 500 GOTO 370
- 510 R1%=15:C1%=1:R2%=15:C2%=36:GOSUB 840
- 520 LOCATE 15,1:PRINT "Go ";
- 530 IF Y=B THEN GOTO 580
- 540 IF Y<B THEN GOTO 570
- 550 PRINT "SOUTH";
- 560 GOTO 580
- 570 PRINT "NORTH";
- 580 IF X=A THEN GOTO 630
- 590 IF X<A THEN GOTO 620
- 600 PRINT "WEST";
- 610 GOTO 630
- 620 PRINT "EAST";
- 630 '
- 640 RETURN
- 650 IF C=0 THEN OPEN "PIXIENM" FOR OUTPUT AS #1:ELSE GOTO 720
- 660 FOR I=1 TO 10:IF A$(I)="" THEN A$(I)=B$:A(I)=K:GOTO 680:ELSE NEXT I
- 670 ON ERROR GOTO 710
- 680 FOR I=1 TO 10:WRITE #1,A$(I):WRITE #1,A(I):NEXT I
- 690 CLOSE #1
- 700 GOTO 770
- 710 RESUME 770
- 720 OPEN "PIXIENM" FOR OUTPUT AS #1
- 730 LET A$(P)=B$:LET A(P)=K
- 740 FOR I=1 TO 10:WRITE #1,A$(I):WRITE #1,A(I):NEXT I
- 750 CLOSE #1
- 760 GOTO 770
- 770 PRINT "GOODBYE":END
- 780 'INDICATE SELECTED GRIDPOINT
- 790 YCORD=21-(Y*2) :XCORD=43+(4*X)
- 800 YCORD(II)=YCORD:XCORD(II)=XCORD
- 810 LOCATE YCORD,XCORD:PRINT CHR$(15)
- 820 RETURN
- 830 'CLEAR SECTION OF SCREEN
- 840 GOSUB 860 : REM run blank subroutine
- 850 DEF SEG=&HB000:RETURN
- 860 REM The actual subroutine is here.
- 870 DEF SEG : SUBRT%=VARPTR(A%[0])
- 880 CALL SUBRT%(R1%,C1%,R2%,C2%)
- 890 RETURN
- 900 '
- 910 '
- 920 '
- 930 'GRID CONSTRUCTION
- 940 CLS
- 950 FOR J=1 TO 9
- 960 FOR K=40 TO 80
- 970 LOCATE 2+(2*J),K:PRINT CHR$(220)
- 980 NEXT K
- 990 NEXT J
- 1000 FOR J=1 TO 9
- 1010 FOR K=2 TO 22
- 1020 LOCATE K,41+4*J:PRINT CHR$(221)
- 1030 NEXT K
- 1040 NEXT J
- 1050 K=45
- 1060 FOR J=0 TO 8
- 1070 LOCATE 23,42+(4*J):PRINT J
- 1080 K=K+4
- 1090 NEXT J
- 1100 POKE 3676,57
- 1110 K=9
- 1120 FOR J=1 TO 10
- 1130 LOCATE 1+(2*J),38:PRINT K
- 1140 K=K-1
- 1150 NEXT J
- 1160 LOCATE 1,60:PRINT "NORTH"
- 1170 LOCATE 12,33:PRINT "WEST"
- 1180 RETURN
- 1190 COLOR 3
- 1200 KEY OFF:CLS:GOTO 1220
- 1210 CLS
- 1220 FOR J=2 TO 22
- 1230 LOCATE 2,2:PRINT CHR$(201):LOCATE 2,79:PRINT CHR$(187)
- 1240 LOCATE 23,2:PRINT CHR$(200):LOCATE 23,79:PRINT CHR$(188)
- 1250 LOCATE J,2:PRINT CHR$(186)
- 1260 LOCATE J,79:PRINT CHR$(186)
- 1270 NEXT J
- 1280 FOR J=3 TO 78
- 1290 LOCATE 2,J:PRINT CHR$(205)
- 1300 LOCATE 23,J:PRINT CHR$(205)
- 1310 NEXT J
- 1320 COLOR 2
- 1330 LOCATE 4,4:PRINT "W E L C O M E T O . . ."
- 1340 LOCATE 8,30:PRINT "F I N D T H E P I X I E"
- 1350 LOCATE 10,4:PRINT "A Pixie is hiding in the woods. The woods are marked off in"
- 1360 LOCATE 11,4:PRINT "a 10 by 10 grid and any gridpoint is a pair of whole numbers"
- 1370 LOCATE 12,4:PRINT "separated by a comma. Try to guess the Pixie's gridpoint."
- 1380 LOCATE 13,4:PRINT "You get ";N;" tries. After each try, I will tell you the"
- 1390 LOCATE 14,4:PRINT "approximate direction to go to look for the Pixie. Name the"
- 1400 LOCATE 15,4:PRINT "horizontal co-ordinate first, then the vertical co-ordinate."
- 1410 LOCATE 16,4:INPUT " WHAT IS YOUR NAME ";B$
- 1420 LET C=1
- 1430 ON ERROR GOTO 1580
- 1440 OPEN "PIXIENM" FOR INPUT AS #1
- 1450 FOR I=1 TO 10:INPUT #1,A$(I):INPUT #1,A(I)
- 1460 NEXT I
- 1470 R1%=4:C1%=4:R2%=18:C2%=77:GOSUB 830
- 1480 FOR I=1 TO 10:IF LEFT$(A$(I),3)=LEFT$(B$,3) THEN LOCATE 6,4:PRINT "YOUR LAST SCORE WAS ";A(I):P=I:GOTO 1500:ELSE NEXT I
- 1490 LOCATE 6,4:PRINT "THIS MUST BE YOUR FIRST TIME ";B$;" GOOD LUCK!":C=0
- 1500 CLOSE #1
- 1510 LOCATE 8,4:INPUT "DO YOU WISH TO SEE PREVIOUS SCORES FOR ALL ";W$
- 1520 IF LEFT$(W$,1)<>"Y" THEN GOTO 1540:ELSE FOR I=1 TO 10:LOCATE (8+I),4
- 1530 IF A$(I)>"" THEN PRINT A$(I);A(I):NEXT
- 1540 LOCATE 20,10:PRINT "Press space bar to continue."
- 1550 P$=INKEY$:IF P$="" THEN 1550
- 1560 CLS:RETURN
- 1570 'ERROR ROUTINE
- 1580 IF ERR=53 THEN GOTO 1590
- 1590 CLS
- 1600 LOCATE 12,30
- 1610 PRINT "FILE FOR SCORING DOES NOT EXIST."
- 1620 PRINT TAB(30)"STANDBY, FILE BEING CREATED."
- 1630 OPEN "PIXIENM" FOR OUTPUT AS #1
- 1640 FOR I=1 TO 10:WRITE #1,A$(I),A(I):NEXT I
- 1650 CLOSE #1:C=0
- 1660 RESUME 1540
- 1700 '*************************************************************************
- 1710 ' PIXIE BY TOM BLACKFORD
- 1720 ' CHESTERLAND, OHIO PHONE (216) 729-4944
- 1730 ' FOR USE BY THE GREATER CLEVELAND PC USERS GROUP
- 1740 '*************************************************************************
-