home *** CD-ROM | disk | FTP | other *** search
- REM------------------------------------------------------
- REM B A G E L S
- REM------------------------------------------------------
-
- REM JUNE 11, 1977
-
- DIM TARGET$(4)
- DIM GUESS$(4)
- NO.OF.GAMES=0
- NO.OF.GUESSES=0
- PRINT:PRINT:PRINT:PRINT
- PRINT TAB(10);"HELLO, WE ARE GOING TO PLAY BAGELS!"
- PRINT
- PRINT TAB(10);"WHAT IS YOUR NAME ";
- INPUT NAME$
- PRINT
- PRINT
- PRINT TAB(10);"THANKS, ";NAME$
- PRINT:PRINT
- 10 REM----- ASK FOR INSTRUCTIONS-------------------
- PRINT TAB(10);"WOULD YOU LIKE THE INSTRUCTIONS, ";NAME$;
- PRINT " (Y OR N) ";
- INPUT ANS$
- IF LEFT$(ANS$,1)="Y" THEN GOSUB 9000:GOTO 15
- IF LEFT$(ANS$,1)<>"N" THEN \
- PRINT TAB(10);"I DON'T UNDERSTAND" :\
- GOTO 10
- 15 REM
- PRINT : PRINT
- PRINT TAB(10);"SHALL I ALLOW DUPLICATED DIGITS IN THE NUMBER(Y,N)";
- INPUT ANS$
- IF LEFT$(ANS$,1)="Y" THEN SKIP=0 : GOTO 17
- IF LEFT$(ANS$,1)="N" THEN SKIP=1 : GOTO 17
- PRINT TAB(10);"ANSWER YES OR NO, STUPID!" : GOTO 15
- 17 REM
- PRINT:PRINT:PRINT
- PRINT TAB(10);" OK, I HAVE A NUMBER."
- PRINT:PRINT:PRINT
- RANDOMIZE
- 20 REM------GET A NUMBER----------------------------
- NUM=INT(RND*10000)
- NUM$=RIGHT$("0000"+STR$(NUM),5)
- NUM$=LEFT$(NUM$,4)
- FOR I=1 TO 4
- TARGET$(I)=MID$(NUM$,I,1)
- NEXT I
-
- IF SKIP=0 THEN GOTO 30
- REM DONT TAKE THE NUMBER IF THERE ARE DUPLICATIONS
- IF TARGET$(1) = TARGET$(2) OR TARGET$(1) = TARGET$(3) OR \
- TARGET$(1) = TARGET$(4) THEN GOTO 20
- IF TARGET$(2) = TARGET$(3) OR TARGET$(2) = TARGET$(4) \
- THEN GOTO 20
- IF TARGET$(3) = TARGET$(4) THEN GOTO 20
- REM THE ARRAY 'TARGET$' NOW HOLDS THE NUMBER TO BE
- REM GUESSED. THE TARGET IS ALSO IN NUM$.
-
- 30 REM-------ENTER A GUESS---------------------------
- PICO=0 REM RESET COUNTERS
- FERMI=0 REM RESET COUNTERS
- PRINT:PRINT
- PRINT TAB(10);"WHAT IS YOUR GUESS ";
- INPUT IN.GUESS$
- IF LEN(IN.GUESS$)<>4 THEN :\
- GOSUB 1000 REM PRINT WARNING AND ADJUST LEN
- FOR I=1 TO 4
- GUESS$(I)=MID$(IN.GUESS$,I,1)
- NEXT I
-
- REM-----COMPARE GUESS WITH TARGET------------------
- NO.OF.GUESSES=NO.OF.GUESSES+1
- IF IN.GUESS$=NUM$ THEN \
- GOTO 3000 REM GOT IT!
- FOR I=1 TO 4
- FOR J=1 TO 4
- IF GUESS$(I)=TARGET$(J) THEN \
- GOSUB 2000 REM INCREMENT COUNT
- NEXT J
- NEXT I
- PRINT
- PRINT TAB(10);
- IF PICO=0 AND FERMI=0 THEN \
- PRINT TAB(POS+5);"BAGELS" :\
- GOTO 60
- IF PICO=0 THEN \
- GOTO 50
- FOR I=1 TO PICO
- PRINT TAB(POS+5);"PICO";
- NEXT I
- 50 REM-----FERMI LOOP----------------------------------
- IF FERMI=0 THEN \
- GOTO 60
- FOR I=1 TO FERMI
- PRINT TAB(POS+5);"FERMI";
- NEXT I
- 60 REM-----AFTER LOOPS---------------------------------
- GOTO 30 REM GET ANOTHER GUESS
-
- 2000 REM------INCREMENT COUNT----------------------------
- IF I=J THEN \
- FERMI=FERMI+1 :\
- ELSE \
- PICO=PICO+1
- RETURN
-
- 1000 REM------IN.GUESS IS WRONG LENGTH-----------------
- PRINT
- PRINT TAB(10);"YOUR GUESS IS THE WRONG LENGTH!"
- IF LEN(IN.GUESS$)<4 THEN \
- PRINT TAB(10);"IT WILL BE PADDED ON THE LEFT WITH BLANKS" :\
- ELSE \
- PRINT TAB(10);"EXTRA DIGITS ON THE LEFT ARE TRUNCATED"
- IN.GUESS$=RIGHT$(" "+IN.GUESS$,4)
- RETURN
-
- 3000 REM------WINNER ROUTINE------------------------------
- NO.OF.GAMES=NO.OF.GAMES+1
- PRINT:PRINT:PRINT
- PRINT TAB(10);"YOU GOT THE NUMBER!!"
- PRINT
- PRINT TAB(10);"IT TOOK YOU ";NO.OF.GUESSES;"TRIES!"
- PRINT
- GOSUB 4000 REM PRINT FANCY RESPONSE
- PRINT:PRINT
- 3010 REM-----WANT ANOTHER?----------------------------
- PRINT TAB(10);"WOULD YOU LIKE TO HAVE ANOTHER GAME, ";NAME$;
- PRINT " (Y OR N) ";
- INPUT ANS$
- IF LEFT$(ANS$,1)="N" THEN \
- GOTO 5000 REM E O J
- IF LEFT$(ANS$,1)<>"Y" THEN \
- PRINT TAB(10);"WHAT DO YOU MEAN BY THAT?!?!" :\
- GOTO 3010
- NO.OF.GUESSES=0
- GOTO 20 REM PICK A NUMBER
-
- 5000 REM------E O J-------------------------------------
- PRINT:PRINT
- PRINT TAB(15);"THANKS FOR PLAYING WITH ME, ";NAME$
- PRINT
- PRINT TAB(15);"COME BACK AGAIN, SOON!"
- PRINT:PRINT
- STOP
-
- 4000 REM-----FANCY RESPONSES-------------------------------
- MSG=INT((NO.OF.GUESSES+1)/2)
- IF MSG>9 THEN MSG=9 REM PREVENT OVERFLOW ON VERY BAD GUESSING
- PRINT TAB(12);
- ON MSG GOSUB 4001,4002,4003,4004,4005,4006,4007,4008,4009
- PRINT
- RETURN
- 4001 IF NO.OF.GUESSES =1 THEN \
- PRINT "THE ODDS ARE 10,000 TO 1 AGAINST"; :\
- PRINT " GUESSING THE NUMBER IN ONE TRY." :\
- PRINT TAB(12);"YOU MUST HAVE GOD ON YOUR SIDE." :\
- ELSE PRINT "TWO TRYS! URI GELLER WOULD BE IMPRESSED!"
- RETURN
- 4002 PRINT "THAT'S OUTSTANDING! YOU MUST BE AN EST GRADUATE!"
- RETURN
- 4003 PRINT "THAT'S VERY GOOD!"
- RETURN
- 4004 PRINT "GOOD, BUT I'VE SEEN BETTER."
- RETURN
- 4005 PRINT "NOT BAD, NOT BAD AT ALL."
- RETURN
- 4006 PRINT "I THINK YOU NEED PRACTICE."
- RETURN
- 4007 SUBMSG=INT(RND*3)+1
- PRINT "PRETTY GOOD....FOR";
- ON SUBMSG GOSUB 4007.1,4007.2,4007.3
- RETURN
- 4007.1 PRINT "A 5 YEAR OLD." : RETURN
- 4007.2 PRINT "A TURKEY." : RETURN
- 4007.3 PRINT "AN IDIOT." : RETURN
- 4008 SUBMSG=INT(RND*3)+1
- ON SUBMSG GOSUB 4008.1,4008.2,4008.3
- RETURN
- 4008.1 PRINT "MAYBE YOU SHOULD NOT CHEW GUM WHILE PLAYING BAGELS."
- RETURN
- 4008.2 PRINT "ARE YOU SURE YOU NEVER PLAYED FOOTBALL WITHOUT A HELMET?"
- RETURN
- 4008.3 PRINT "EVEN LENNY DID BETTER THAN THAT!"
- RETURN
- 4009 PRINT "EVERYONE HAS BAD DAYS BUT THIS IS RIDICULOUS!!!"
- RETURN
-
- 9000 REM-------INSTRUCTIONS-------------------------------
- PRINT:PRINT
- PRINT "I AM THINKING OF A FOUR DIGIT NUMBER. TRY TO GUESS THE"
- PRINT " NUMBER. AFTER EACH GUESS I WILL PRINT:"
- PRINT " 'FERMI' FOR EACH CORRECT DIGIT IN THE CORRECT PLACE,"
- PRINT " 'PICO' FOR EACH CORRECT DIGIT IN THE WRONG PLACE, OR"
- PRINT " 'BAGELS' IF NO DIGIT IS CORRECT."
- PRINT " AT THE START OF THE GAME I WILL LET YOU SPECIFY WHETHER"
- PRINT " YOU WANT DUPLICATED DIGITS TO BE ALLOWED IN THE NUMBER."
- PRINT " FOR EXAMPLE IF NO DUPLICATED DIGITS ARE ALLOWED A NUMBER"
- PRINT " SUCH AS 1145 WOULD NOT OCCUR."
- RETURN
-