home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 3.8 KB | 164 lines |
- 1 REM REVERSE
- 2 REM
- 3 REM ARRANGE DIGITS IN CORRECT SEQUENCE BY REVERSING
- 4 REM
- 5 REM 32K
- 6 REM
- 7 REM AUTHOR UNKNOWN
- 8 REM
- 9 REM TRANSLATED BY Guy B. Purcell
- 10 REM
- 11 REM
- 12 REM **************************
- 13 REM * *
- 14 REM * SAN MATEO COUNTY *
- 15 REM * OFFICE OF EDUCATION *
- 16 REM * & *
- 17 REM *COMPUTER-USING EDUCATORS*
- 18 REM * *
- 19 REM * SOFTSWAP *
- 20 REM * *
- 21 REM * 333 MAIN STREET *
- 22 REM * REDWOOD CITY *
- 23 REM * CA 94063 *
- 24 REM * (415) 363-5472 *
- 25 REM * *
- 26 REM **************************
- 27 REM
- 28 REM
- 29 REM **************************
- 30 REM * PROGRAM MAY BE COPIED *
- 31 REM * FOR EDUCATIONAL USE & *
- 32 REM * MAY NOT BE SOLD. COPY- *
- 33 REM * RIGHT 1983 CUE,INC *
- 34 REM **************************
- 100 REM
- 110 GOTO 1200
- 120 REM INITIALIZATION ROUTINE
- 130 :
- 140 SCREEN 0,1: WIDTH 40
- 150 CLS: LOCATE , 16: PRINT "REVERSE"
- 160 PRINT : PRINT : PRINT
- 170 DIM A(10)
- 180 DIM A$(255),N$(255),R$(255)
- 190 REM N= NUMBER OF NUMBERS
- 200 N=0:T=0
- 210 PRINT"NOTE: REMEMBER TO PRESS <RETURN> AFTER"
- 220 PRINT"EACH ANSWER."
- 240 GOSUB 1100
- 250 RETURN
- 260 REM INSTRUCTIONS ROUTINE
- 270 :
- 280 CLS
- 290 PRINT"To win, all you have to do is arrange":PRINT
- 300 PRINT"a list of numbers in order, lowest to":PRINT
- 310 PRINT"highest, left to right. To move, you":PRINT
- 320 PRINT"tell me how many numbers you want to":PRINT
- 330 PRINT"reverse, beginning at the left.":PRINT
- 340 PRINT"For example: if the list is":LOCATE ,7:PRINT"2 3 4 5 1 6 7 8 9":PRINT
- 350 PRINT"reverse 4 numbers and get":LOCATE ,7:PRINT"5 4 3 2 1 6 7 8 9":PRINT
- 360 PRINT"Now, reversing 5 numbers will get":LOCATE,7:PRINT"1 2 3 4 5 6 7 8 9":PRINT
- 370 PRINT"which wins the game."
- 380 GOSUB 1100: REM CONTINUE
- 390 RETURN
- 400 REM HOW MANY NUMBERS ROUTINE
- 410 :
- 420 CLS
- 430 LOCATE 9,1
- 440 PRINT"How many numbers do you want to play":PRINT
- 450 PRINT"with (2 to 9): ";
- 460 INPUT N$
- 470 IF N$="" THEN 400
- 480 IF ASC(N$)-48<2 OR ASC(N$)-48>9 THEN CLS:LOCATE 12: PRINT"Try again, please." :GOTO 430
- 490 N=ASC(N$)-48
- 500 RETURN
- 510 REM GET RANDOM NUMBERS ROUTINE
- 520 :
- 530 FOR K=1 TO N
- 540 A(K)= 1+INT(RND*(N))
- 550 IF A(K)<0 OR A(K)>9 THEN 540
- 560 NEXT K
- 570 FOR K=1 TO N
- 580 FOR J=1 TO N
- 590 IF A(J)=A(K) AND J<>K THEN A(K)=1+ INT(RND*(N)):GOTO 570
- 600 NEXT J
- 610 NEXT K
- 620 RETURN
- 630 REM PRINT LIST
- 640 :
- 650 LOCATE 5,5
- 660 FOR K=1 TO N
- 670 PRINT A(K);" ";
- 680 NEXT K
- 690 RETURN
- 700 REM HOW MANY TO REVERSE
- 710 :
- 720 LOCATE 9,1
- 730 PRINT"How many shall I reverse?":PRINT:PRINT"Press '0' to quit. :";
- 740 LOCATE 11,22:PRINT" ":LOCATE 11,20
- 750 INPUT R$
- 760 IF R$="" THEN 720
- 770 R=ASC(R$)-48
- 780 IF R=0 THEN CLS: GOTO 1030
- 790 IF R<0 OR R>N THEN PRINT:PRINT"I can reverse no more than ";N:GOTO 720
- 800 RETURN
- 810 REM REVERSE NUMBERS
- 820 :
- 830 FOR K=1 TO R/2
- 840 Z=A(K)
- 850 A(K)=A(R-K+1)
- 860 A(R-K+1)=Z
- 870 NEXT K
- 880 T=T+1
- 890 RETURN
- 900 REM CHECK FOR WIN
- 910 :
- 920 FOR K=1 TO N-1
- 930 IF A(K+1)>A(K) THEN QQ=QQ+1
- 940 NEXT K
- 950 RETURN
- 960 REM WIN
- 970 :
- 980 CLS
- 990 LOCATE 9,16
- 1000 PRINT"YOU WIN!":PRINT
- 1010 PRINT"You only took ";T;" tries.":PRINT
- 1020 RETURN
- 1030 REM END
- 1040 :
- 1050 LOCATE 15,1
- 1060 PRINT"Do you want to play again";:INPUT A$
- 1070 IF A$="Y" OR A$="y" THEN T=0:GOTO 1230
- 1080 IF A$<>"N" AND A$<>"n" THEN CLS:LOCATE 15:GOTO 1060
- 1090 GOTO 1160: REM CHAIN TO MENU
- 1100 REM CONTINUE ROUTINE
- 1110 :
- 1120 LOCATE 23,5
- 1130 PRINT"PRESS <RETURN> TO CONTINUE"
- 1140 A$=INKEY$:IF A$<>CHR$(13) THEN 1140
- 1150 CLS:RETURN
- 1160 REM CHAIN TO MENU ROUTINE
- 1170 :
- 1180 LOCATE 20,10: COLOR 14,0: PRINT "Loading menu...";: FOR I=1 TO 6: PRINT CHR$(2);: NEXT
- 1190 CHAIN "menu",170: RUN
- 1200 REM COMMAND ROUTINE
- 1210 :
- 1220 GOSUB 120:REM INITIALIZATION
- 1230 CLS
- 1240 LOCATE 9,1
- 1250 PRINT"Do you want instructions (Y/N)";:INPUT Q$
- 1260 IF Q$="Y" OR Q$="y" THEN GOSUB 260:GOTO 1280:REM INSTRUCTIONS
- 1270 IF Q$<>"N" AND Q$<>"n" THEN 1240
- 1280 GOSUB 400: REM HOW MANY NUMBERS
- 1290 CLS:LOCATE 9,3 :PRINT"I'm making the list; please wait."
- 1300 GOSUB 510: REM GET NUMBERS
- 1310 CLS
- 1320 PRINT"Here we go with ";N;" numbers":PRINT"The list is:"
- 1330 GOSUB 630: REM PRINT LIST
- 1340 GOSUB 700: REM HOW MANY TO REVERSE
- 1350 GOSUB 810: REM REVERSE NUMBERS
- 1360 QQ=0
- 1370 GOSUB 900: REM CHECK FOR WIN
- 1380 IF QQ=N-1 THEN GOSUB 960:GOTO 1030: REM WIN AND END
- 1390 GOTO 1330
-